想使用野火或者安福来的代码模板来学习这个stm32,毕竟他买使用量挺多的,代码风格尤其是安福来比较好,因此想试试他们的工程,但是弄了好长一段时间,单片机就是不能运行,进入debug,就死机,停在硬件错误或其他地方。
后来想想,真是低级错误导致的,因此整理一下。
今后遇到不能正常运行的情况下,先冷静下来思考而不是盲目的改代码。
1、单片机能否下载,能否调试,验证启动引脚boot0、boot1的电平是否正确。
2、晶振是否启振,查看晶振的类型,有的是晶体振荡器结合电压,有的是直接输出clk频率。
3、每个外设的时钟是否开启,是否开启正确,stm32内部有总线的,不同外设挂载不同总线上,因此不能弄错了。
4、是否有数据溢出,堆栈溢出,这种也会导致硬件错误
5、系统时钟频率设置是否正确
我昨天就是因为电路上面是bypass的时钟频率输入,结果两个代码模板都是8Mhz的晶体振荡器的方式作为时钟,就是以前51单片机的默认方式,所以导致系统时钟都没有起来,自然就无法运行的。
区别如下: