转自 :http://blog.sina.com.cn/s/blog_6bd352290101b7tx.html
在MDK下学习使用STM32也快两个礼拜了,基本掌握了STM32在MDK环境下的开发流程和基本硬件程序的书写。其间,遇到了许多问题,其中不少问题花费了我相当多得时间才得以解决,现将这些问题和解决方法列出。其中也有一些是学习过程中我觉得需要记下的注意事项。
1、STM32固件库使用外围设备的主要思路
其次是配置GPIO,GPIO的各种属性由硬件手册的AFIO一章详细规定,较为简单。
接着相关设备需要如果需要使用中断功能,必须先配置中断优先级,后文详述。
然后是配置外围设备的相关属性,视具体设备而定,如果设备需要使用中断方式,必须使能相应设备的中断,之后需要使能相关设备。
最后如果设备使用了中断功能,则还需要填写相应的中断服务程序,在服务程序中进行相应操作。
2、如果在源文件中未定义以下预定义,需在工程“C/C++”中预定义一栏 填写
“USE_STDPERIPH_DRIVER,STM32F10X_CL(器件所属分类),USE_STM3210C_EVAL(使用的评估板,库自带的历程中需要根据"readme"文件提示添加,自己的工程除非是在一样的评估板上运行,否则不需要预定义此项)”
3、NVIC的优先级分组
NVIC_PriorityGroup_n中n代表4位中有n位是给中断分配抢占式优先级的,4-n位是给中断分配响应优先级的。
4、NVIC_InitStructure.NVIC_IRQChannel =EXTI15_10_IRQn;//其中EXTI15_10_IRQn表示选中的通道为[15:10],
不懂就跳到它的定义处看注释
不懂就跳到它的定义处看注释
5、TIM_TimeBaseStructure.
TIM_ClockDivision=TIM_CKD_DIV4中的TIM_ClockDivision或 控制寄存器1(TIMx_CR1)中得位CKD[1:0] 为 时钟分频因子 (Clock division)
为定义在定时器时钟(CK_INT)频率与数字滤波器(ETR ,TIx)使用的采样频率之间的分频比例,与用内部时钟时counter使用的时钟频率(分频是在PSC寄存器中设置)无关。
TIM_ClockDivision=TIM_CKD_DIV4中的TIM_ClockDivision或 控制寄存器1(TIMx_CR1)中得位CKD[1:0] 为 时钟分频因子 (Clock division)
6、下面对该库文件做个简单介绍:
7、USER下部分文件介绍
8、24C02器件地址组成
9、在一个源文件中调用其他文件的函数,也需要在文件头声明,不然会有警告。
10、使用串口出现乱码
11、如果错误提示“expect a ")" "
原因有可能为(1)少写了半个括号 ")"
(2)输成中文输入法的括号 (3)定义了与宏定义重复的变量其中第三个最不容易发现,平常写程序时要注意。