最常见的我们在入门使用STM32单片机之时会遇到各种各样的问题。
由于STM32作为32为单片机,比起诸如8051的8位单片机复杂了许多,如果不使用库函数以及别人的封装库代码进行开发对于新手基本是不可能的。
1.代码移植问题
我们在调用别人函数库之时首先要确定使用的设备是否正确。
如果你在编译/链接过程中出现了大量问题,先检查一下设备是否选择正确,一般性能比较低的单片机,运行性能比较高的单片机的代码时会出现大量错误
但是性能比较高的单片机运行性能比较低的单片机之时可能不会在编译中出错,但是仍然是有问题的。
因为不同单片机内部的全都多少有差异
2.出现stm32f10x.h(298): error: #67: expected a "}"的错误
使用keil 5自带的选择芯片型号需要加Define宏定义,然而用安装的st的Keil.STM32F1xx_DFP.1.1.0的包不需要加宏定义
因为software pack已经自己定义过了,所以会Keil5软件 的定义会出现重复定义的情况
解决办法:在C/C++处去掉Define的STM32F103_HD.
3.JLINK/STLINK 下载失败,出现No Cortex-M Device found in JTAG chain的问题
解决办法:确认debug处是否正确的选中了你使用的调试工具
比如我是使用的是JLINK,则选中JLINK
同时点继settings,点继Port,如果你的调试接口用的是JTAG就选JTAG,是SWD就选择SW
点继Flash Download
添加你设备对应的Flash Size大小。比如我这里使用的是STM32F103C8T6,Flash大小128k
4.程序下载后没有反应
检查一下这里的Reset and Run 有没有勾选上。
如果没有勾选上,在程序烧录单片机后,需要按一下复位键才会开始,或者选择Reset and Run,在程序下载后它就会自动运行了