现象:
(1)仿真时程序可以正常运行
(2)脱机后程序不跑或跑飞,且按复位没法重置程序,重新上电也有概率存在该问题
原因分析:
(1)复位按键失效,同时仿真电路也连接了复位引脚,因此考虑是复位电路出现问题
(2)可能是外部供电电压问题,接上仿真器后因为仿真器也存在供电接口,解决了供电的问题
测试结果:
(1)首先测试复位电路,发现复位按键损坏,更换之后仍然存在此问题,复位电路不是导致程序跑飞的根本原因
(2)项目为24V电源供电,经过稳压模块输出5V到主控板,再降压为3.3V给芯片供电。测量电压后发现,带负载时稳压模块输出只有4V,而空载是可以输出5V的,说明负载电流太大(除了主控板还接了很多其他5V供电的模块),稳压模块输出不足导致电压被拉低到4V,经控制板降压后给芯片供电仅有3V,芯片不能正常工作。
解决办法
(1)更换输出电流更大的稳压模块
(2)将两个或多个稳压模块并联输出(推荐第一种解决办法)
扩展知识
(1)查阅资料时发现,仿真器USB端拔掉,而另一端连接在控制板上时,有可能导致程序无法正常运行,原因为单片机复位引脚被仿真器内部拉低,导致程序一直在复位(我的不会有这个问题)
(2)STM32芯片供电电压需高于3.2V才能正常工作