PAGE1
PAGE1
STM32L4系列的电源管理
电源管理概述
电源管理是STM32L4系列单片机中一个非常重要的模块,它不仅关系到系统的稳定运行,还直接影响到功耗和电池寿命。STM32L4系列单片机提供了多种电源管理功能,包括多种低功耗模式、电压调节、电源监控和复位功能等。这些功能使得STM32L4系列单片机非常适合电池供电的应用,如便携式设备、物联网节点等。
低功耗模式
STM32L4系列单片机支持多种低功耗模式,包括:
Sleep模式
Stop模式
Standby模式
Shutdown模式
这些模式通过不同的功耗和唤醒时间来平衡系统性能和功耗需求。
Sleep模式
Sleep模式是最轻度的低功耗模式,适用于需要快速唤醒并恢复执行的任务。在Sleep模式下,CPU停止工作,但所有外围设备和SRAM内容保持不变。系统时钟源(如HSE、HSI、LSI等)可以继续运行,因此可以使用定时器或外部中断来唤醒系统。
进入Sleep模式
//进入Sleep模式
voidEnterSleepMode(void){
//配置GPIO为低功耗模式
GPIO_InitTypeDefGPIO_InitStruct={0};
__HAL_RCC_GPIOA_CLK_DISABLE();//关闭GPIOA时钟
//进入Sleep模式
HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI);
}
从Sleep模式唤醒
//从Sleep模式唤醒
voidWakeUpFromSleepMode(void){
__HAL_RCC_GPIOA_CLK_ENABLE();//重新开启GPIOA时钟
//配置GPIO
GPIO_InitTypeDefGPIO_InitStruct={0};
GPIO_InitStruct.Pin=GPIO_PIN_0;
GPIO_InitStruct.Mode=GPIO_MODE_INPUT;
GPIO_InitStruct.Pull=GPIO_NOPULL;
HAL_GPIO_Init(GPIOA,GPIO_InitStruct);
}
Stop模式
Stop模式比Sleep模式节省更多的功耗,适用于需要长时间低功耗运行的场景。在Stop模式下,CPU和大部分外围设备停止工作,但RTC和备份寄存器保持供电。系统时钟源也停止,因此需要外部中断或RTC闹钟来唤醒系统。
进入Stop模式
//进入Stop模式
voidEnterStopMode(void){
//配置GPIO为低功耗模式
GPIO_InitTypeDefGPIO_InitStruct={0};
__HAL_RCC_GPIOA_CLK_DISABLE();//关闭GPIOA时钟
//进入Stop模式
HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI);
}
从Stop模式唤醒
//从Stop模式唤醒
voidWakeUpFromStopMode(void){
__HAL_RCC_GPIOA_CLK_ENABLE();//重新开启GPIOA时钟
//配置GPIO
GPIO_InitTypeDefGPIO_InitStruct={0};
GPIO_InitStruct.Pin=GPIO_PIN_0;
GPIO_InitStruct.Mode=GPIO_MODE_INPUT;
GPIO_InitStruct.Pull=GPIO_NOPULL;
HAL_GPIO_Init(GPIOA,GPIO_InitStruct);
}
Standby模式
Standby模式是STM32L4系列单片机中最深度的低功耗模式,适用于需要长时间待机的场景。在Standby模式下,CPU和几乎所有外围设备停止工作,但RTC和备份寄存器保持供电。系统时钟源也停止,因此需要外部中断或RTC闹钟来唤醒系统。
进入Standby模式
//进入Standby模式
voidEnterStandbyMode(void){
//配置GPIO为低功耗模式
GPIO_InitTypeDefGPIO_InitStruct={0};
__HAL_R