[其他]

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

[复制链接]
408|1
手机看帖
扫描二维码
随时随地手机跟帖
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 | 显示全部楼层 |阅读模式
基于MM32F3277单片机上,利用UART1对MCU进行IAP升级。

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

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

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


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

661

帖子

0

粉丝