l63t89 发表于 2022-11-18 18:36


版权声明:本文为CSDN博主「果果小师弟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39400113/article/details/126462393

l63t89 发表于 2022-11-18 19:00

STM32/MM32/GD32 IAP跳转到APP后无法进中断

基于MM32F3277单片机上,利用UART1对MCU进行IAP升级。

问题描述:在主机给MCU进行升级时,当boot loader接收完固件跳转到APP中,程序正常运行,串口数据正常打印,但是无法进入中断。重新MCU启动后,正常进入中断,也就是从bootloader直接跳转过去正常得,所以定位原因在bootloader中。

跳转之前也已经关闭全局中断__set_PRIMASK(1);,跳转后,app一开始在SystemInit()函数中使能全局中断__set_PRIMASK(0);。由于不进行固件接收再跳转,是正常得,所以进一步定位是接收固件得问题。

最终排查出,MCU接收固件是在UART1中断服务函数中处理的,表明在跳转之前中断关闭了但是还在执行中断中的程序。所以最终在接收完成时设置标志位,在中断外main函数中进行跳转解决该问题。

————————————————


页: [1]
查看完整版本: STM32/MM32/GD32 IAP跳转到APP后无法进中断