[STM32F1] 在STM32Cube IDE中按下RUN按钮后STM32程序的执行情况有问题

[复制链接]
581|11
jerry尧 发表于 2025-10-17 22:24 | 显示全部楼层 |阅读模式
我用STM32F103ZE配合J-Link Plus调试探头和STM32Cube IDE。

当我生成的代码在STM32Cube IDE中按下RUN按钮时,程序被加载到闪存中,但并未开始运行,例如,LED灯没有开始闪烁。

当我关闭控制器电源并重新上电后,程序开始执行,LED灯开始闪烁。

当程序烧录后没有开始执行,而我再次按下程序按钮时,程序开始执行。

为什么会出现这种行为?按理说每次按下RUN按钮时的行为应该是一致的。

能否在烧录程序后直接使其运行?

公羊子丹 发表于 2025-10-31 07:14 | 显示全部楼层
我之前也遇到过类似情况,后来发现是CubeIDE默认在RUN时没释放复位引脚,程序烧进去但还处在暂停状态,重启后才正常跑。
周半梅 发表于 2025-10-31 07:15 | 显示全部楼层
可以在Debug Configuration里把“Reset and Run”选项打开,这样烧录完后会自动复位并执行主程序,LED就会立刻闪。
帛灿灿 发表于 2025-10-31 07:16 | 显示全部楼层
我怀疑你现在是用的“Load only”模式,J-Link只是把程序写进Flash但没发送运行指令,这在某些调试配置下挺常见的。
童雨竹 发表于 2025-10-31 07:17 | 显示全部楼层
有时候还跟SWD调试线的速度有关,太快会导致J-Link没及时退出debug模式,主核被halt在reset handler那。
万图 发表于 2025-10-31 07:18 | 显示全部楼层
我建议你在运行前看下Debug控制台的输出,如果提示“Halt at main”,说明程序停在断点上,不是没跑,是被IDE挂起了。
Wordsworth 发表于 2025-10-31 07:19 | 显示全部楼层
我试过手动点Resume按钮,程序就立刻运行,这说明CubeIDE默认加载后会暂停在main函数,方便调试但容易误会。
Bblythe 发表于 2025-10-31 07:20 | 显示全部楼层
还有一个小技巧:在Run Configuration里勾选“Connect under reset”,能避免部分芯片调试接口不稳定导致的假暂停。
Pulitzer 发表于 2025-10-31 07:21 | 显示全部楼层
我也遇到过按RUN后LED不亮的情况,结果发现是启动模式被改成Bootloader了,上电后才重新跳到主程序。
Uriah 发表于 2025-10-31 07:22 | 显示全部楼层
你要是用FreeRTOS或者有低功耗模式,记得检查下debug时钟配置,不然在RUN阶段可能被停在WFI状态。
Clyde011 发表于 2025-10-31 07:23 | 显示全部楼层
总之这不是程序问题,多半是IDE设置的小坑,调整一下运行方式就能让每次RUN都自动开始执行了。
OKAKAKO 发表于 2025-10-31 17:16 | 显示全部楼层
运行会有问题?那就是程序或软件问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

94

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部