一、低功耗模式
当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗,STM32支持三种低功耗模式,可以在要求低功耗、短启动时间和多种唤醒事件之间达到最佳的平衡。
- 睡眠模式SleepMode。在睡眠模式,只有CPU停止,所有外设处于工作状态并可在发生中断/事件时唤醒CPU。
- 停机模式StopMode。保持SRAM和寄存器内容不丢失,达到最低的电能消耗。停止所有内部1.8V部分的供电, PLL、 HSI的RC振荡器和HSE晶体振荡器被关闭,调压器可以被置于普通模式或低功耗模式。可以通过任一EXTI从停机模式中唤醒, EXTI信号可以是16个外部I/O口之一、 PVD的输出、 RTC闹钟或USB的唤醒信号。
- 待机模式StandbyMode。最低的电能消耗。内部1.8V部分的供电被切断; PLL、 HSI的RC振荡器和HSE晶体振荡器关闭;SRAM和寄存器的内容将消失,但后备寄存器的内容仍然保留,待机电路仍工作。从待机模式退出的条件是: NRST上的外部复位信号、 IWDG复位、 WKUP引脚上的一个上升边沿或RTC的闹钟到时。
二、低功耗模式基于HAL库的常用API
2.1睡眠模式SleepMode
- __HAL_RCC_PWR_CLK_ENABLE();//电源管理使能
- HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);//进入睡眠模式
2.2停机模式StopMode
- __HAL_RCC_PWR_CLK_ENABLE();//电源管理使能
- HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);//进入停机模式
- ReSysClkConfig_STOP(); //停机唤醒后需要重新配置时钟
2.3 待机模式StandbyMode
- __HAL_RCC_PWR_CLK_ENABLE();//电源管理使能
- PWR_Check_Standby();//检查是否是待机模式
- __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);//清除唤醒标志
- __HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);//清除待机标志
- __HAL_PWR_GET_FLAG(PWR_FLAG_SB);//获得待机模式标志
- HAL_PWR_EnterSTANDBYMode();//进入待机模式
三、UnusedPin配置原则
1、不用的IO按照外部电路设置成上拉或下拉;
2、设置成浮空输入的功耗最大。
3、不用的管脚模拟输入。