[STM32F7] STM32Cube IDE 中Run正常Debug异常

[复制链接]
27|11
Hitomi22 发表于 2026-1-21 16:51 | 显示全部楼层 |阅读模式
在用 STM32F746G-DISCO 开发板项目刚创建时,我点击Debug按钮后一切都能正常运行。
但现在点击 Debug后,程序虽然能完成上传,开发板的屏幕却只显示类似老式电视机的静态雪花噪点;而点击Run按钮时,所有功能都能正常工作,这说明代码本身没有错误。
现在是无法仿真调试程序。
我对比了一下 “Debug Configurations” 和 “Run Configurations”,没发现差异。


公羊子丹 发表于 2026-1-22 07:37 | 显示全部楼层
我之前用 F7 开发板也碰到过这情况,后来发现是 Debug 模式下的时钟配置和 Run 模式不一样!你去 CubeMX 里看看 HCLK 和 LCD 相关的时钟树,是不是 Debug 时没启用某些外设时钟,导致屏幕驱动异常。
周半梅 发表于 2026-1-22 07:38 | 显示全部楼层
这雪花屏看着像 LCD 没拿到正确数据啊,会不会是 Debug 模式下的断点设置有问题?比如不小心打在了 LCD 初始化的关键函数里,或者断点太多触发了硬件冲突,先把所有断点清了再试试 Debug?
帛灿灿 发表于 2026-1-22 07:39 | 显示全部楼层
你检查过 Debug 配置里的 “Debugger” 选项吗?STM32CubeIDE 默认用 ST-Link,说不定是调试器的接口模式选错了,换成 SWD 模式,再把时钟频率调低到 4MHz 试试,有时候高频调试会干扰外设。
童雨竹 发表于 2026-1-22 07:40 | 显示全部楼层
Run 正常 Debug 出问题,大概率是调试模式影响了某些外设的时序!LCD 驱动是不是用了 DMA 或者定时器?Debug 时 CPU 会暂停,可能导致 DMA 传输中断,你试试在 Debug 配置里勾选 “Resume on startup”,让程序启动后自动继续运行。
万图 发表于 2026-1-22 07:41 | 显示全部楼层
我怀疑是开发板的 LCD 排线松动了?毕竟 Run 的时候能正常显示,Debug 时可能因为调试器供电变化导致接触不良,拔了重新插紧,再检查下开发板上的 LCD 供电引脚电压是不是稳定。
Wordsworth 发表于 2026-1-22 07:42 | 显示全部楼层
会不会是工程里的优化等级设置搞的鬼?Run 模式可能用了 O2 优化,Debug 用了 O0,有些 LCD 驱动的代码在无优化下会出时序问题,你把 Debug 和 Run 的优化等级统一调成 O1,再重新编译试试?
Bblythe 发表于 2026-1-22 07:43 | 显示全部楼层
这问题挺常见的,STM32F7 的 Debug 模式可能会占用某些和 LCD 相关的引脚!你看看 LCD 驱动用的 GPIO 口,是不是和 SWD 调试引脚(SWDIO/SWCLK)有冲突,换一组 GPIO 或者重新分配引脚试试?
Pulitzer 发表于 2026-1-22 07:44 | 显示全部楼层
你有没有更新过 ST-Link 的固件?有时候老版本固件在 Debug 时会和 F7 芯片不兼容,导致外设工作异常,用 ST-Link Utility 工具更下固件,再重启 IDE 重新配置 Debug。
Uriah 发表于 2026-1-22 07:45 | 显示全部楼层
是不是 Debug 模式下的堆栈大小不够?Run 的时候程序可能刚好够用,Debug 时调试器会占用部分堆栈,导致 LCD 驱动的函数栈溢出,去 Linker 脚本里把 HEAP 和 STACK 尺寸调大两倍再试试。
Clyde011 发表于 2026-1-22 07:45 | 显示全部楼层
我之前碰到过类似的,是因为工程里加了 FreeRTOS 之类的操作系统,Debug 时任务调度被干扰了!如果你的项目用了 OS,试试在 Debug 配置里关闭 “Thread Awareness”,或者在启动代码里延迟 LCD 初始化的时间。
643757107 发表于 2026-1-22 13:59 | 显示全部楼层
通常和调试配置、硬件连接或代码中的调试敏感逻辑有关
您需要登录后才可以回帖 登录 | 注册

本版积分规则

141

主题

144

帖子

0

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