[STM32F7] Bootloader跳转应用程序后外设异常,像没复位干净

[复制链接]
220|19
Clyde011 发表于 2025-10-9 07:30 | 显示全部楼层 |阅读模式
自制Bootloader跳转到应用程序后,有时外设状态混乱,比如UART没输出,TIM中断不触发。怀疑是外设没完全复位或中断向量表没重映射成功。试过手动关闭外设,但还是偶发异常。
 楼主| Clyde011 发表于 2025-10-9 07:32 | 显示全部楼层
可能是中断优先级冲突,应用启动时重设一次。
公羊子丹 发表于 2025-10-9 07:33 | 显示全部楼层
我遇过类似情况,是因为没关闭SysTick。
周半梅 发表于 2025-10-9 07:34 | 显示全部楼层
向量表地址记得重新设置到应用区。
帛灿灿 发表于 2025-10-9 07:35 | 显示全部楼层
有些外设需要手动软复位,比如RCC。
童雨竹 发表于 2025-10-9 07:36 | 显示全部楼层
你试试在跳转前关掉所有中断。
万图 发表于 2025-10-9 07:37 | 显示全部楼层
我印象里SCB寄存器也要重置下。
Wordsworth 发表于 2025-10-9 07:38 | 显示全部楼层
也可能是数据段没清理干净。
Bblythe 发表于 2025-10-9 07:39 | 显示全部楼层
跳转前最好关掉缓存和MPU。
Pulitzer 发表于 2025-10-9 07:39 | 显示全部楼层
我加了一个小延时后现象减少不少。
Uriah 发表于 2025-10-9 07:41 | 显示全部楼层
ST官方Bootloader例程里有完整流程,可以参考。
七毛钱 发表于 2025-10-9 10:20 | 显示全部楼层
系统状态未完全复位引起的吧!
内政奇才 发表于 2025-10-9 11:29 | 显示全部楼层
中断向量表重映射失效了?
内政奇才 发表于 2025-10-9 11:29 | 显示全部楼层
可能是Bootloader中使用的UART、TIM等外设未完全复位,导致APP启动时外设寄存器保持使能状态,引发冲突。
海滨消消 发表于 2025-10-9 12:43 | 显示全部楼层
中断向量表可能木有正确重映射。
豌豆爹 发表于 2025-10-9 12:25 | 显示全部楼层
可能是多次跳转导致堆栈空间碎片化,MSP未重置到APP的初始值,引发堆栈溢出或非法访问。
麻花油条 发表于 2025-10-9 13:26 | 显示全部楼层
可能看门狗未正确喂狗,导致复位循环。
classroom 发表于 2025-10-9 14:27 | 显示全部楼层
在跳转前执行硬件复位,让所有外设和寄存器恢复到初始状态。
classroom 发表于 2025-10-9 10:35 | 显示全部楼层
跳转前插入内存屏障。
cr315 发表于 2025-10-9 15:35 | 显示全部楼层
在Bootloader中烧录APP前计算CRC,跳转前校验防止程序损坏。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

160

主题

5927

帖子

0

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