[STM32U5] STM32CubeIDE 调试器在 STM32U5A9J-DK 上无法正常工作

[复制链接]
1115|21
我的牙白 发表于 2026-3-16 08:56 | 显示全部楼层 |阅读模式
无法在 STM32CubeIDE 中通过调试器启动 STM32U5A9J-DK 的工程。
该工程是通过 TouchGFX Designer 生成的。
我的环境配置:
TouchGFX Designer 版本:V4.21.4
STM32CubeIDE 版本:V1.12.1
测试设备:开发板板载 ST-Link V3、独立的 Segger J-Link 调试器
ST-Link V3 配置及问题:
采用开发板默认的跳线配置;
将开发板的 CN5 接口(ST-Link 接口)连接至电脑;
首次在 STM32CubeIDE 中启动调试时,功能完全正常;
第二次启动调试时,调试器卡在 Reset_Handler处:


Segger J-Link 配置及问题:
将跳线 JP5 切换至 JP6 位置,使板载 ST-Link 处于复位状态;
将跳线 JP4 切换至 USBC 位置,通过 USB-C 为设备供电;
将 Segger J-Link 连接至 MIPI-10 接口;
为 USB-C 接口供电;
修改运行配置,切换为使用 J-Link 调试器;
点击 CubeIDE 中的调试按钮:
固件成功烧录至 Flash;
程序卡死在 HardFault_Handler处:

点击 CubeIDE 中的 “运行” 按钮:
固件成功烧录至 Flash;
程序卡死;
按下开发板复位按钮后,程序可正常启动。

classroom 发表于 2026-3-16 14:38 | 显示全部楼层
ST-Link 调试器配置可能有问题
cr315 发表于 2026-3-16 15:39 | 显示全部楼层
J-Link 的驱动程序是否已正确安装,并且在 STM32CubeIDE 中选择了正确的 J-Link 设备。
duo点 发表于 2026-3-16 16:40 | 显示全部楼层
检查 J-Link 的连接是否稳定,尝试更换 USB 线缆或 USB 端口。
elephant00 发表于 2026-3-16 14:41 | 显示全部楼层
检查 Reset_Handler 函数中的代码,特别是 SystemInit 和 LoopCopyDataInit 函数有没有导致死循环或错误的操作。
flycamelaaa 发表于 2026-3-16 18:41 | 显示全部楼层
看下时钟系统初始化是否正确,检查 SystemInit 函数中的时钟配置是否与你的硬件匹配。
onlycook 发表于 2026-3-16 19:43 | 显示全部楼层
检查 CN5 接口的连接有没有松动或接触不良的情况。
powerantone 发表于 2026-3-16 20:43 | 显示全部楼层
建议尝试用不同的 USB 端口或电脑,以排除电脑 USB 端口的问题。
probedog 发表于 2026-3-16 21:44 | 显示全部楼层
考虑更新 STM32CubeIDE 和 TouchGFX Designer 到最新版本
solty 发表于 2026-3-16 22:45 | 显示全部楼层
检查工程的编译和链接选项有没有错误的编译标志或链接库缺失。
spicy 发表于 2026-3-16 22:45 | 显示全部楼层
程序卡在HardFault_Handler处通常表示发生了硬件错误。这可能是由于内存访问错误、非法指令或总线错误引起的。
七毛钱 发表于 2026-3-16 15:15 | 显示全部楼层
跳线设置是否正确
公羊子丹 发表于 2026-3-17 08:14 | 显示全部楼层
我怀疑ST-Link第二次调试卡Reset_Handler是调试器的复位策略没配对,你去CubeIDE的调试配置里,把复位方式改成Hardware reset试试,别用默认的软件复位,STM32U5对复位方式要求挺严的。
周半梅 发表于 2026-3-17 08:15 | 显示全部楼层
J-Link烧录后卡HardFault,大概率是调试时的时钟配置和实际运行不一致,你检查下工程里的时钟树配置,是不是调试模式下用了外部晶振,而烧录后板卡晶振没正常起振导致的。
帛灿灿 发表于 2026-3-17 08:16 | 显示全部楼层
这问题我调STM32U5时遇过,TouchGFX生成的工程默认的栈大小可能不够,调试时栈溢出就会触发HardFault,你去链接脚本里把Stack_Size改大些,比如从0x800改成0x1000,再试试调试。
童雨竹 发表于 2026-3-17 08:17 | 显示全部楼层
想问下楼主,你切换J-Link时有没有在CubeIDE里更新调试器的配置文件?STM32U5A9J-DK的J-Link配置需要单独选芯片型号,没选对的话调试时就会出现硬件异常,卡HardFault很常见。
万图 发表于 2026-3-17 08:18 | 显示全部楼层
建议你先把TouchGFX的UI代码暂时注释掉,用空工程测试调试器,要是空工程能正常调试,就是UI代码里有内存越界或非法访问的问题,一步步加代码排查比直接调全工程快多了。
Wordsworth 发表于 2026-3-17 08:19 | 显示全部楼层
哈哈,STM32U5的调试坑真的多,你试试在调试启动前,先手动按一下开发板的复位键,再点CubeIDE的调试按钮,跳过初始的复位流程,看看能不能绕过Reset_Handler卡死的问题。
Bblythe 发表于 2026-3-17 08:20 | 显示全部楼层
你检查下ST-Link V3的固件版本是不是太旧了,STM32U5是新芯片,旧版ST-Link固件对它的调试支持不好,去ST官网更一下ST-Link的固件,再重新连接调试,大概率能解决。
Pulitzer 发表于 2026-3-17 08:21 | 显示全部楼层
J-Link烧录后按复位能正常运行,说明代码本身没问题,就是调试器的启动时序不对,你在CubeIDE的J-Link调试配置里,加个几毫秒的启动延时,让芯片完成初始化后再让调试器挂载。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

133

主题

134

帖子

0

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