【STM32】STM32代码不运行,停在“LDR R0, =SystemInit”的解决方法

使用CubeMX生成工程,添加LED、SPI、IIC等模块后,功能一直是正常的。

后续再继续增加工程内容时,发现程序上电不能自动运行了。但是进入调试模式后,多次点击运行按钮,仍旧能够正常运行。

1、查看复位波形

程序使用的内部振荡器,电源都正常,首先怀疑复位芯片输出的问题。通过示波器查看发现复位波形是正常的。

2、使用调试模式

通过调试工具,发现程序运行后,代码进入汇编初始化代码“LDR R0, =SystemInit”后,会卡在这儿
百思不得其解后,还是在网上进行了搜索,看到了这篇文章https://blog.csdn.net/AQRSXIAO/article/details/133680606,是因为使用了printf函数,没勾选microlib库,导致程序卡死在半主机模式。
回想起来,确实是在编写了UART代码后,出现的这个问题,在代码中重定位了putchar函数,直接使用了printf函数进行调试打印。

3、解决方案

在“target”选项卡上勾选“Use Micro LIB”后,重新编译,程序能够正常运行。问题解决。

作者:GEEK.攻城狮

物联沃分享整理
物联沃-IOTWORD物联网 » 【STM32】STM32代码不运行,停在“LDR R0, =SystemInit”的解决方法

发表回复