①运行模式,特点是不省电(while(1)) ②睡眠模式,特点是内核休眠(关闭内核时钟) ③停止模式,特点是内核外设休眠 ④待机模式,特点是停止供电。
1、STM32睡眠模式详解 进入方式:**内核寄存器SLEEPDEEP = 0,调用WFI或WFE进入睡眠模式。 SLEEPONEXIT = 0 立即睡眠,SLEEPONEXIT = 1,退出睡眠。 唤醒方式:_WFI任意中断唤醒。_WFE任意事件唤醒。 睡眠:关闭内核时钟、不关闭外设、唤醒后会保持睡眠前的内核寄存器以及内存数据。 唤醒延迟:无延迟。 唤醒后执行:唤醒后执行中断函数,完成后继续睡眠。
2、STM32停止模式 进入方式:内核寄存器SLEEPDEEP = 1PWR_CR寄存器PDDS=0,调用WFI或WFE进入停止模式。 PWR_CR寄存器LPDS=0,调压器正常。 PWR_CR寄存器LPDS=1,低功耗模式 PWR_CR寄存器FPDS=0,Flash正常。 PWR_CR寄存器LPDS=1.Flash掉电。 唤醒方式:_WFI外部中断唤醒。_WFE外部事件唤醒。 睡眠:关闭内核时钟,关闭外设时钟,不关闭电源保留寄存器数据。 唤醒延迟:HSI(HSE)启动时间+低功耗恢复时间+flash恢复时间 **唤醒后执行:**唤醒后执行中断函数,完成后继续睡眠。
3、STM32待机模式 进入方式:内核寄存器SLEEPDEEP=1,PWR_CR寄存器PDDS=1,PWR_CR寄存器WUF=0.调用WFI或WFE进入待机模式。 唤醒模式:WKUP上升沿,RTC闹钟事件、NRST、看门狗复位 **睡眠:**内核关闭、外设关闭、内存数据丢失、引脚高阻 唤醒延迟:复位芯片时间 唤醒后执行:唤醒后执行代码继续待机。