最近调试一款单片机STM32G431KBU3,遇到到上电不能运行的bug;
1、从单片机启动三要素开始排查:电源、晶振、复位电路
排除:电源正常、晶振使用内部晶振HSI、复位电路有且测量RST引脚高电平
2、Debug 模式看看程序卡死在什么地方
实际结果:点击Run并不能运行,但是Step模式可以正常运行;在点击Run并没发现死在哪里
3、更换了多个单片机,都发现不能正常运行,这时就怀疑可能是代码出了问题;但是代码是STM32CubeMx生成的,关于SystenInit应该没问题;
4、将问题整理成:《stm32 开机不能运行,debug也不能运行;但是单步运行点击很多次后可以运行;采用的是内部晶振,请跟我分析不能运行的原因,并给我提供解决办法》 输入到千问,千问给出答案:a、勾选 MicroLIB b、 在 SystemInit() 或时钟配置函数最开始,先配置 Flash 等待周期。c、注释看门狗 d、检查 Boot 引脚与硬件复位 e、变量初始化与 HardFault 排查
结论:这里 勾选(Keil 点击魔术棒-->Target-->Use MicroLIB) MicroLIB选项就解决了问题;