IAP升级运行不到NVIC_SystemReset()问题
使用cubemx生成的模板实现IAP升级时失败调试发现NVIC_SystemReset()被优化掉将优化等级调到level0后才能运行这条函数另外NVIC_SystemReset()会通过设置SYSRESETREQ位触发复位但在触发到实际复位之间存在延迟。如果此期间有中断发生可能导致复位失败。解决方法在调用NVIC_SystemReset()前使用__set_FAULTMASK(1)关闭所有中断确保复位过程不被打断。__set_FAULTMASK(1); // 禁用所有中断NVIC_SystemReset(); // 执行复位
