使用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”后,重新编译,程序能够正常运行。问题解决。
在这里插入图片描述

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐