N32G45X 复位控制单元
支持三种复位方式 : 电源复位 ,系统复位,备份域复位
本次简单说明一下系统复位中的软件复位
发生以下事件之一时会产生系统复位:
NRST 引脚上的低电平(外部复位)
窗口看门狗计数终止(WWDG 复位)
独立看门狗计数终止(IWDG 复位)
软件复位(SW 复位)
低功耗管理复位
电源复位
MMU 保护复位
RAM 奇偶校验出错复位
备份域 EMC 复位
保持域 EMC 复位
BOR 复位
其中,软件复位 可以通过设置 Cortex™-M4 应用中断和复位控制寄存器中的 SYSRESETREQ 位来产生软件复位。
原型:
__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)
{
__DSB(); /* Ensure all outstanding memory accesses included
buffered write are completed before reset /
SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
(SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
SCB_AIRCR_SYSRESETREQ_Msk ); / Keep priority group unchanged /
__DSB(); / Ensure completion of memory access */
for(;😉 /* wait until reset */
{
__NOP();
}
}
N32中可以直接调用库函数 NVIC_SystemReset 来实现 。
rt_hw_interrupt_disable(); //关闭全部中断
//rt_hw_interrupt_enable(level); //打开全部中断
NVIC_SystemReset(); // 系统软件复位
网上没搜到,做个记录 。