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后无法进中断的主要内容,如果未能解决你的问题,请参考以下文章