STM32新版调试常见问题记录。
1、程序烧录后,无法运行。
**描述:**程序烧录进去之后,一直无法运行。
**可能原因:**BOOT0和BOOT1引脚电平状态错误。
STM32芯片再上电启动时,会根据BOOT0和BBOOT1的状态选择启动方式(1--高电平 0--低电平 x--任意电平):
1、BOOT0 -- 1 、BOOT1 -- x:芯片将从Flash中的用户代码区(即main函数)开始执行,常用状态。
2、BOOT0 -- 0、BOOT1 -- 1:芯片启动时将从System Memory中的boot loader开始执行。这种启动方式常用于用户程序有问题无法启动时,才会使用来进行故障修复。
3、BOOT0 -- 0、BOOT1 -- 0:芯片启动时将从内部Bootloader中的System Memory中的Bootloader开始执行。这种启动方式通常用于在用户程序出现问题无法启动时,通过串口或USB口使用ST提供的Flash下载器进行故障恢复。
需要注意的是,STM32芯片的BOOT1引脚通常需要上拉或者下拉才能正常工作,具体需要参考对应型号的数据手册或者开发板的原理图。
2、程序必须插上Jlink才能正常启动,否则无法启动。
**描述:**外部供电之后,程序无法运行,但是Jlink插上后就能正常运行。
**可能原因:**检查外部复位电路,和软件喂狗。
当插上J-Link时,它会提供外部复位信号,可能会导致芯片能够正常启动。而没有J-Link时,如果外部复位电路存在问题或者软件复位功能有误,就可能导致芯片无法启动。