IAP升级运行不到NVIC_SystemReset()问题

📅 2026/7/8 5:27:15 👁️ 阅读次数 📝 编程学习
IAP升级运行不到NVIC_SystemReset()问题

使用cubemx生成的模板实现IAP升级时失败,调试发现NVIC_SystemReset()被优化掉,将优化等级调到level0后才能运行这条函数


另外,NVIC_SystemReset()会通过设置SYSRESETREQ位触发复位,但在触发到实际复位之间存在延迟。如果此期间有中断发生,可能导致复位失败。

解决方法:在调用NVIC_SystemReset()前,使用__set_FAULTMASK(1)关闭所有中断,确保复位过程不被打断。

__set_FAULTMASK(1); // 禁用所有中断

NVIC_SystemReset(); // 执行复位