睡眠
进入睡眠的方式很简单:
只需要调用WFI 或WFE 命令,在睡眠模式中,内核停止,但是所有外设,包括M4 核心的外设均处于工作状态中。
唤醒睡眠的方式:
- 任一中断;
- 唤醒事件。
__WFI();
__WFE();
停止
进入停止的操作为:
调用
PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry)
函数。
唤醒停止的操作为:
任一外部中断。
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
SYS_HSE_Config();
需要注意的是:
由于程序从停止模式中唤醒时会将HSI 配置为系统时钟,故当唤醒后,我们需要重新将HSE 配置为系统时钟。
待机
进入待机的操作为:
调用
PWR_EnterSTANDBYMode()
函数。
唤醒待机的操作为:
- WKUP 引脚的上升沿;
- RTC 闹钟事件;
- NRST 引脚上的外部复位;
- IWDG 复位。
在进入待机模式前需要使能WKUP 引脚的唤醒功能:
PWR_WakeUpPinCmd(ENABLE);