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

Posted 果果小师弟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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函数中进行跳转解决该问题。

以上是关于STM32/MM32/GD32 IAP跳转到APP后无法进中断的主要内容,如果未能解决你的问题,请参考以下文章

STM32L073RZ (rev Z) IAP 跳转到引导加载程序(系统内存)

stm32 IAP

STM32 IAP应用程序跳转条件不满意

STM32F405RG实现IAP程序在线应用编程

stm32f103c8 跳转到应用程序不起作用

看完就懂GD32替代STM32全过程记录