按功耗由高到低排列, STM32 具有运行、睡眠、停止和待机四种工作模式。
低功耗各模式下芯片工作情况:
睡眠模式:仅关闭了内核时钟,内核停止运行,但其片上外设, CM4 核心的外设全都还照常
运行。有两种方式进入睡眠模式,它的进入方式决定了从睡眠唤醒的方式,分别是 WFI(wait for
interrupt) 和 WFE(wait for event)。
运行流程:关闭时钟-->进入睡眠模式-->等待唤醒-->恢复时钟
//暂停滴答时钟,防止通过滴答时钟中断唤醒
HAL_SuspendTick();
//进入睡眠模式
HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI);
//等待中断唤醒 K1 或 K2 按键中断
//被唤醒后,恢复滴答时钟
HAL_ResumeTick();
停止模式:进一步关闭了其它所有的时钟,于是所有的外设都停止了工作,但由于其 1.2V
区域的部分电源没有关闭,还保留了内核的寄存器、内存的信息,所以从停止模式唤醒,并重新
开启时钟后,还可以从上次停止处继续执行代码。停止模式可以由任意一个外部中断 (EXTI) 唤
醒。在停止模式中可以选择电压调节器为开模式或低功耗模式,可选择内部 FLASH 工作在正常
模式或掉电模式。
待机模式:它除了关闭所有的时钟,还把 1.2V 区域的电源也完全关闭了,也就是说,从待机模
式唤醒后,由于没有之前代码的运行记录,只能对芯片复位,重新检测 boot 条件,从头开始执行
程序。它有四种唤醒方式,分别是 WKUP(PA0) 引脚的上升沿, RTC 闹钟事件, NRST 引脚的复
位和 IWDG(独立看门狗) 复位。