花费一个月时间玩了一下STM32,因工作原因好几年没有编程了。鉴于工作需要学习了
一下STM32固件库的编程,针对一个月的重拾编程以及程序调试工作进行总结。
STM32开发优点:
1.固件库大大简化开发难度,提高编程效率;
2.固件库中各种外设程序范例详实,可以直接拿来使用;
3.仿真器便宜,淘宝上几十元就可以搞定。本人使用以前BLE电路上的J-LINK盗版仿真器,
注意该版本仿真器驱动一定要注意版本。
当时安装驱动程序搞了一下午都连接不上,使用J-LINK V6.12J才搞定。一定要注意驱动
版本不能太新,最好不要超过v6.14版本。
缺点:
1.几种工作模式切换较慢,特别是从停机模式切换到运行模式时(使用片外晶振模式)
的时间需要2ms到3ms,这种速度特别是和蓝牙模组配合起来时,若接收蓝牙数据反映特别慢。
2.IC内部各种外设通道已经固定分配好,不能想其他BLE IC进行灵活分配。如在调试
DMA传输I2C数据时使用固件中程序出现一堆的问题,调试过程中才发现原来自己将DMA通
道修改了。STM32的DMA通道都是已经分配好的,不像其他SOC可以灵活分配。如下图所示:
如上所示I2C_TX和I2C_RX已固定分配为DMA1中的6和7通道。纠其原因是自己懒得看参考手册。
编程以及调试总结:
1.在多中断时处理原则为关键性或小概率(如数据传递处理等)出现的中断设置为
高中断等级,对非关键性或大概率(如定时器或RTC中断)中断设置为低中断等级。
2.程序的调试过程是很蛋疼的过程,秉持原则就是耐性追根溯源。要精读调试功能
所涉及到的芯片资料,需要仔细比较程序中相关变量或寄存器的值是否正确,这里调试
过程中软件的使用就非常重要了(不要再懒惰,不去看手册)。
3.keil mdk调试方法小结
~逻辑分析仪的仿真(没有示波器时比较有用)
a.设置为软件仿真。
b.选择sybomls查看程序所涉及到的寄存器,或者是直接输入引脚如PORTB.0即可开始
逻辑分析仪仿真。
如上图所示中special function registers中有着所有功能设置标志位,将其将入逻辑分析仪即
可开始仿真。
c.调试中最重要的模块,查看所有外设的寄存器功能值,依照此来进行调试即可。
d.调试过程中可以查看局部变量或全局变量的值,但有时需要查看某些指针对应的变量值,
此时可以使用memory输入地址即可直接查看。
附加备注:
USE_STDPERIPH_DRIVER宏定义为使用固件库,在头文件中包含所有外设头文件。
STM32F10X_MD宏定义为IC属于大容量器件类型。