嵌入式开发时经常遇到反常情况,程序刚下载完运行完全正常,断电再上电后芯片完全没反应,反复重新下载又能临时恢复。核心问题大多出在启动模式配置上,不是代码逻辑写错了。

1. 启动引脚电平不对
MCU的BOOT启动引脚,上电瞬间的电平状态决定了芯片从哪个区域启动。
如果引脚悬空,上电时电平处于不确定状态,芯片可能随机进入串口下载模式,不会从Flash里加载用户程序。
2. 启动分区选错
下载程序时,把代码烧写到了RAM调试分区,而不是非易失性的Flash存储区。
RAM掉电后数据会完全丢失,断电重启后程序自然就不存在了,芯片无法正常启动运行。
3. 启动延时没适配
部分外部晶振启动需要几毫秒的稳定时间,代码里没有加足够的启动延时。
芯片刚上电就开始读取外部Flash的程序,此时晶振还没稳定,时序不匹配导致读取出错,程序直接跑飞。
4. 快速修复方法
把BOOT引脚通过电阻固定到正确的电平状态,确认程序下载到主Flash分区。
在启动代码开头加10毫秒的延时,等待外部时钟稳定,断电重启就能正常运行。
本文凡亿教育原创文章,转载请注明来源!
暂无评论