低功耗模式介绍

STM32的3种低功耗模式

STM32的这三种低功耗模式主要针对不同的功耗和性能需求,逐级降低功耗:

1、睡眠模式 (Sleep Mode)

特点:内核(CPU)停止运行,但系统时钟 (Systick) 和一些外设(如NVIC)仍然可以工作。这种模式非常适合短时间的休眠。

void lpwr_enter_sleep(void)
{
    HAL_SuspendTick();    //暂停滴答定时器
    HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI);

}

2、停止模式 (Stop Mode)

特点:系统时钟停止,1.8V内核电源继续工作,PLL(锁相环,关闭后,系统失去倍频效果)、HIS(高速内部振荡器,内部时钟源,不再为CPU和外设提供高速时钟)和HSE RC(高速外部振荡器,用于系统时钟的基准源,失去高精度的时钟源)振荡器关闭,寄存器和SRAM数据保留。只有低速时钟 (LSI或LSE) 可以工作,允许使用低功耗的外部中断来唤醒。

void lpwr_enter_stop(void)        
{
    //暂停滴答定时器
    HAL_SuspendTick();
    //点亮LED2,代表进入停机模式
    led2_on();
    //进入到停机模式
    HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON,PWR_STOPENTRY_WFI);
    //熄灭LED2,代表退出停机模式
    led2_off();
     //当退出停机模式后,时钟也发生了变化,会从72M变为8M(HSI)  故需要重新配置系统时钟
    stm32_clock_init(RCC_PLL_MUL9);
    
    
}

3、 待机模式 (Standby Mode)

特点:内核电源关闭,所有寄存器和SRAM内容丢失,仅保留备份寄存器和待机电路供电。种模式能够实现最低功耗,适用于极限低功耗场景。

不同模式进入的标志如下

不同模式的唤醒方式

void lpwr_enter_standby(void)     //待机模式
{

    //使能电源时钟(关闭电压调节器)
    
     __HAL_RCC_PWR_CLK_ENABLE();
    
    //使能WAKEUP引脚的唤醒状态
    
    HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);
    

    //清除唤醒标记,否则将持续保持唤醒状态
    
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
    
    
    //进入待机模式
    
    HAL_PWR_EnterSTANDBYMode();
    
    //测试  ,看代码会不会进行到下面
    
    led2_on();


}
    

main.c 代码

#include "sys.h"
#include "delay.h"
#include "led.h"
#include "uart1.h"
#include "lpwr.h"
#include "key.h"



int main(void)
{
    HAL_Init();                         /* 初始化HAL库 */
    stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
    led_init();
    uart1_init(115200);
    KEY_init();
    lpwr_init();
    printf("hello world!\r\n");
    
    uint8_t i=0;
    while(1)
    { 
        
        if(KEY_scan() == 2)
        {
            //lpwr_enter_sleep();
            
            //lpwr_enter_stop();
            lpwr_enter_standby();
        
        }
       if(i%20 == 0)
           led1_toggle();
       i++;
       delay_ms(10);
      
    }
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值