[STM32F4] 在地址‘0x429a683a’处中断,无可用调试信息

[复制链接]
 楼主| WHALEE 发表于 2025-7-26 11:53 | 显示全部楼层 |阅读模式
本帖最后由 WHALEE 于 2025-7-29 22:26 编辑


我正在为一块stm32f469zi的板卡进行编程。每次在代码最开始尝试进入HAL_Init()时,调试过程中总会遇到这个错误:
Break at address "0x429a683a" with no debug information available, or outside of program code.
我设置了一些断点,并追踪到HAL_MspInit()函数中的这一行代码:
HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0);
进一步跟踪(因为其余代码运行正常,我是通过中断点逐步排查的)发现,问题出在core_cm4.h文件中的NVIC_EncodePriority()函数。该函数有一个名为SubPriority的参数,SubPriorityBits会被添加到该参数中。问题恰好出现在SubPriorityBits被赋值的这一行,但我不太明白这具体是什么原因。
是不是我的项目在设置某个中断时崩溃了?我在CubeMX中启用了三个全局中断:LTDC、DMA2D和DSI。
公羊子丹 发表于 2025-7-27 07:22 | 显示全部楼层
我也遇到过类似断在 0x42xxxxxx 的情况,基本都是跳到了非法地址或者Flash没烧进去导致的。
周半梅 发表于 2025-7-27 07:23 | 显示全部楼层
看你提到是 HAL_NVIC_SetPriority 出错,优先级参数可能超了范围,建议先试试 (0,0) 这种保守值。
帛灿灿 发表于 2025-7-27 07:24 | 显示全部楼层
SubPriorityBits 是从 NVIC_GetPriorityGrouping() 得到的分组位数,不同设置下会导致encode参数出错。
童雨竹 发表于 2025-7-27 07:25 | 显示全部楼层
你是不是在 CubeMX 里改了优先级分组,但启动代码里没同步?HAL_Init() 里优先级分组初始化要特别小心。
Wordsworth 发表于 2025-7-27 07:28 | 显示全部楼层
DSI 和 LTDC 是复杂外设,建议你先禁用中断相关设置,逐个排查是哪一个引起的。
Wordsworth 发表于 2025-7-27 07:28 | 显示全部楼层
如果跳到这个地址没有调试信息,说明很可能是跳转到了 RAM 空区,或者函数指针被错误赋值了。
Bblythe 发表于 2025-7-27 07:30 | 显示全部楼层
可以加个 __disable_irq() 把全局中断关了试试,看能不能跑过 HAL_Init(),确认是不是中断提前触发了。
Pulitzer 发表于 2025-7-27 07:31 | 显示全部楼层
你检查一下 startup_stm32f469xx.s 里有没有设置好中断向量表,有时候链接器配置错了会跳到未知区。
Uriah 发表于 2025-7-27 07:31 | 显示全部楼层
也有可能是代码没完全烧进去,尤其你用 ST-LINK 的话,建议在下载设置里勾选“Full Chip Erase”。
Clyde011 发表于 2025-7-27 07:32 | 显示全部楼层
最后实在不行,可以把工程删掉 .ioc 以外的文件重新生成一次,有时候配置混乱了重新生成更省事。
小夏天的大西瓜 发表于 2025-7-27 22:38 | 显示全部楼层
建议使用MX进行程序编写
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

36

帖子

0

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

36

主题

36

帖子

0

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