LDR R0, =SystemInit/或者程序运行异常缓慢
STM32调试如果卡在这一步,程序进入不了main函数,有如下排除方法:
1,程序问题:程序里面如果使用了printf函数,未勾选USE MICRO LIB,会出现此类问题。
2,设置问题:Option选项卡,找到Floating Point Hardware ,默认选项为Double Precision,(我的keil里面没有这个设置)
3, 调试问题:如果设置断点太多,超过了仿真器允许的上限,也会出现此类问题,但程序可以运行,只是仿真卡住。
最后就是硬件问题,查看晶振的两个电容,是否损坏,如果电容没问题,八成是晶振的问题,用示波器查看,检测,更换即可。
如果出现了程序运行太慢的问题,例如- LED(ON);
- Delay_ms(500);
- LED(OFF);
- Delay_ms(500);
复制代码
这种情况,灯的闪烁间隔很长,甚至达到3-4s,首先排除延时函数是不是做了删改,如果没有删改,问题就是出现在硬件上,
首先查看晶振电路中电容是否损坏,(也有同志把大容量的电容错焊上去(非22pf),也出现了这种问题),没有损坏就是晶振问题,
更换晶振即可。
别不信,俺3个小时内换了3颗晶振,才把这问题解决了,真的很幸运。
|