一、睡眠模式
在初始化时使能PWR时钟
__HAL_RCC_PWR_CLK_ENABLE(); //使能PWR时钟
然后调用函数进入睡眠模式
//暂停滴答时钟,防止通过滴答时钟中断唤醒
HAL_SuspendTick();
//进入睡眠模式
HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI);
PS:唤醒后程序将从HAL_PWR_EnterSLEEPMode()语句下方的代码继续执行
二、停机模式
在初始化时使能PWR时钟
__HAL_RCC_PWR_CLK_ENABLE(); //使能PWR时钟
然后调用函数进入停机模式
//进入停机模式
HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI);
//停机模式唤醒后,系统将默认使用HSI时钟8MHz,调用该函数重新配置时钟为72MHz
SystemClock_Config();
PS:唤醒后程序将从HAL_PWR_EnterSTOPMode语句下方的代码继续执行
三、待机模式
在初始化时使能PWR时钟
__HAL_RCC_PWR_CLK_ENABLE(); //使能PWR时钟
然后调用函数进入停机模式
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1); //配置WKUP引脚
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); //清除WUF唤醒标志
HAL_PWR_EnterSTANDBYMode(); //进入待机模式
PS:唤醒后程序将重新运行,HAL_PWR_EnterSTANDBYMode()将会无效