STM32 bootloader程序跳转到APP卡死在B_ENDP_ALIGN,原因:有未处理的中断。解决方法:重启系统

本文介绍了在STM32 Bootloader程序中遇到的问题,即从Bootloader跳转到应用程序(APP)时卡死在B_ENDP_ALIGN。原因在于未处理的中断。解决方案是在跳转到APP前关闭所有外设并禁用中断。同时,详细讨论了中断向量的设置,以及如何在IAP(In-Application Programming)和APP之间正确切换。在IAP完成升级后,通过调用NVIC_SystemReset()函数重启系统,避免程序异常。这种方法确保了Bootloader能够顺利跳转到APP并正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Bootloader和App中都用到了串口,定时器等,所以从Bootloader跳转App后未卡死。

后来写的另一个App里没有用到这几个外设,然后就是无限的卡死。

现在Bootloader中跳转App之前将已打开的外设关掉,再跳转至App就不再出现卡死。 

if(((*(vu32*)(APPLICATION_ADDRESS+4))&0xFF000000)==0x08000000)

{

       __disable_irq();   //解决方法                  

       iap_load_app(APPLICATION_ADDRESS);

}

上述更改会出现跳到APP后的中断也无法执行,加入__enable_irq() ;开总中断后,APP跟之前一样卡死。

接下来:

IAP <->User Program 需要注意的问题

要设置好好中断向量的问题,假设User Program 开始地址是(0x08008000),那么中断向量就必须

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值