在Cortex-M3权威指南中有一个要注意的问题:从SYSRESETREQ 被置为有效,到复位发生器执行复位命令,往往会有一个延时。在此延时期间,处理器仍然可以响应中断请求。但我们的本意往往是要让此次执行到此为止,不要再做任何其它事情了。所以,最好在发出复位请求前,先把FAULTMASK 置位。stm32f10x_nvic.c 文件里也直接提供了该函数
- /*******************************************************************************
- * 函数名称: NVIC_SETFAULTMASK
- * 功能描述: 使能FAULTMASK优先级:把执行的优先级提升为-1.
- * 输入参数: 无
- * 输出参数: 无
- * 返回参数: 无
- *******************************************************************************/
- void NVIC_SETFAULTMASK(void)
- {
- __SETFAULTMASK();
- }
-
- 所以要系统复位 只要 调用这个函数就行了
- void SystemReset(void )
- {
- NVIC_SETFAULTMASK();
- NVIC_GenerateSystemReset();
- }
|