1.任何外设在使用之前,必须先使能相应的时钟。
2.使用不同外设时,GPIO引脚应该如何配置?
答:详见《STM32中文参考手册》8.1.11小节。
工作方式
(1)GPIO_Mode_AIN 模拟输入
(2)GPIO_Mode_IN_FLOATING 浮空输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入
(5)GPIO_Mode_Out_OD 开漏输出
(6)GPIO_Mode_Out_PP 推挽输出
(7)GPIO_Mode_AF_OD 复用开漏输出
(8)GPIO_Mode_AF_PP 复用推挽输出
上电复位后,GPIO默认为浮空状态,部分特殊功能引脚为特定状态。
3.MDK中u8是什么数据类型?
答:右键--转到定义--出现一个Browser的窗口--双击u8--跳转到stm32f10x.h:typedef uint8_t u8;
--查看uint8_t定义:typedef unsigned char uint8_t;
4.void __bis_SR_register(unsigned short){}函数
功能:将CPU 中SR 寄存器中的某些位置1。其参数为屏蔽码,需要置1 的位为1。
例:
__bis_SR_register(LPM3_bits + GIE);//CPU进入LPM3低功耗模式,同时打开全局中断
5.__no_init关键字?
答:__no_init用于禁止系统启动时的变量初始化,是给LINKER用的,定义到不初始化的块中去,在系统意外复位时,这个变量值能保留。
noinit做到复位后数据保持不变。
6.硬件在线调试:先将程序下载到MCU,然后按“Debug”按钮进入调试状态。
7.利用库函数编写串口程序时:设置完相关串口操作后,不要忘了使能串口,并设置使用的串口中断。
//使能串口1
USART_Cmd(USART1,ENABLE);
//设置中断类型
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);///USART_IT_RXNE接收缓冲区非空;ENABLE打开此中断
8.学习外部中断时,感觉外部中断反应很迟钝?
原因:按键触发外部中断,按键后,引脚接地,应该使用下降沿触发,我却使用了上升沿。
9.关于STM32,一次中断,多次进入中断服务函数的问题说明?http://www.openedv.com/posts/list/27442.htm
10.STM32什么时候开启复用时钟AFIO?答:只要操作EVCR/EXTICRX/MAPR的时候,就必须开启复用功能时钟.
也就是说,当你要配置stm32的事件输出/外部中断/重映射的时候.就必须开启复用时钟。
11.查看STM32引脚的默认功能及重映射后的功能?答:《STM32f10xZET6 DataSheet》Table5中查看
12.学习正点原子RTC的例程时,程序没有报错,就是不正常运行?原因:调用的其他原文件中有个printf的函数,而在我的usart.c中,没有写这个函数。