STM32单片机DEBUG进入不了主程序
1.上电不运行,DEBUG还进入不了主程序
因为本司的线路板是外包加工的,板子拿回来以后发现其中一块板子上电不运行,经检查晶振,复位脚的状态都是正常的。DEBUG模式时发现进入不了主程序,PC指针停留在如下图的(汇编)程序段。单步执行时发现只能在这个程序段循环。
从其他途径了解到此程序段是STM32单片机得ISP程序,属于厂家内置,用于芯片整片重新编程,用的是芯片厂的自举程序。此程序段存储在(System memory)系统存储器。由boot0 和boot1 引脚状态决定是否从System memery启动进入ISP程序段。
2.总结
转载自https://blog.csdn.net/jhn199388/article/details/73770286
2.1 STM32单片机Flash分类
最后经过仔细检查boot脚,发现是加工厂家和boo0脚(接GND/VDD)的预留电阻焊错位置。
根据用途,STM32片内的FLASH分成两部分:主存储块、信息块。 主存储块用于存储程序,我们写的程序一般存储在这里。 信息块又分成两部分:系统存储器、选项字节。 系统存储器存储用于存放在系统存储器自举模式下的启动程序(BootLoader),当使用ISP方式加载程序时,就是由这个程序执行。这个区域由芯片厂写入BootLoader,然后锁死,用户是无法改变这个区域的。 选项字节存储芯片的配置信息及对主存储块的保护信息。
2.2 关于boot脚的设置
boot0 | boot1 | 启动模式 |
---|---|---|
0 | x | User Flash memory (从用户flash启动) |
1 | 0 | System memory (从系统存储器启动) |
1 | 1 | Embedded SRAM(从内嵌SRAM启动) |
3.其他DEBUG模式不能进入主程序的原因
1.使用了printf函数但没有重定义printf函数。
2.没有勾选(User MicroLIB)微库。