1、keil的debug模式在线调试运行,即顷行可知道程序卡死位置;
2、在中断程序中点灯或者打印,判断中断程序是否能够正常运行;
3、在程序主逻辑中打印或者点灯,多次编段念译烧录,判断卡死位置。
在线耐历笑调试STM32 卡在LDR R0, = SystemInit_ExtMemCtl
程序卡在在线调试STM32 卡在LDR R0, = SystemInit_ExtMemCtl的解决办法如下:
出现最多的情况就是昌含设置的 断点过多,可以把断点全部删除试试烂野看 ,把断点设置在主函数。
在程序中使用了C库(printf),那么进入Option---target将usemicroLib勾选上。
硬件原因,主芯片,或者晶振有问题,更换一下就好了
Stm32不能跑了,程序跑飞这类的问题,我之前在开发过程中就遇到过,造成这种不良,有很多可能的原因,软件硬件都有可能,需要从几个方面去排查硬件方面:
1. stm32的供电电压是否稳定,是否在卖改正常工作电压范围内。电源文波大小一定要小,一般Ldo供电在3.3v在几个ma ,在stm32的vdda 和vssa引脚一定要接磁珠,各个电源硬件要接滤波电容
2 .晶振以及旁路电容,一定要尽可能的靠近单片机,整个电路中是否有裸露的接口如usb io 口 这类的接口,因为冬天人体或者其他物体静电很大,当瞬间大静电通过接触,传导给单片机时,很容易引起单片机复位或者死机,所以有这样的接口需要做防静电电路,或者专用防静电芯片在保护单片机不死机。
3.单片机复位电路,一定在设计的时候需要加旁路电容,同时需要保证复位电路电源稳定,这个与第一点原因说明一塌穗样。
4.无线射频信号,当电路中有无线类如蓝牙wifi gsm等无中衫判线射频信号时,也很容易因为无线辐射干扰造成单片机死机,这个就需要找专业测试天线的公司或者设备或者人员去测试辐射状态。无线射频的电线一定要匹配好,否则很容易会有无法预测的不良状态出现。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)