单片机基础核心知识点汇总(二十六)

目录

前言

[一、STM32 三种低功耗模式对比](#一、STM32 三种低功耗模式对比)

二、核心注意事项

三、休眠模式代码示例

四、停机模式代码示例

五、待机模式代码示例

[六、GPIO 功耗处理关键代码](#六、GPIO 功耗处理关键代码)

[七、RTOS 下低功耗实现思路](#七、RTOS 下低功耗实现思路)

八、常见低功耗踩坑点

九、功耗优化分层策略

小结


前言

前面篇章我们学习了状态机、内存管理、按键驱动。很多产品电池供电,低功耗是量产硬性指标。很多新手只是简单关闭外设,功耗下降不明显,甚至唤醒异常。

本篇讲解 STM32 三类低功耗模式,寄存器配置、唤醒源、代码实现、功耗裁剪要点。

一、STM32 三种低功耗模式对比

  1. 休眠模式:CPU 停止,外设保持运行,任意中断唤醒,功耗相对较高,唤醒速度快。
  2. 停机模式:主时钟关闭,SRAM 内容保留,多个外部中断唤醒,功耗大幅降低。
  3. 待机模式:SRAM 数据丢失,仅备份域保持,功耗最低,只能特定引脚或者 RTC 唤醒,唤醒等同于复位。

二、核心注意事项

  1. 进入低功耗前,未使用 GPIO 必须配置,浮空引脚会产生漏电流,拉高整体功耗。
  2. ADC、SPI、I2C、定时器等不用外设,要关闭外设时钟。
  3. 中断唤醒时,中断服务函数尽量简短,减少唤醒后的运行时间,尽快再次进入休眠。

三、休眠模式代码示例

复制代码
void enter_sleep_mode(void)
{
    //关闭不需要外设时钟
    __HAL_RCC_TIM2_CLK_DISABLE();
    //进入休眠,WFI等待中断唤醒
    __WFI();
}

四、停机模式代码示例

复制代码
void enter_stop_mode(void)
{
    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
    //唤醒后,需要重新配置系统时钟
    SystemClock_Config();
}

五、待机模式代码示例

复制代码
void enter_standby_mode(void)
{
    __HAL_RCC_PWR_CLK_ENABLE();
    HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);
    HAL_PWR_EnterSTANDBYMode();
}

六、GPIO 功耗处理关键代码

复制代码
void unused_gpio_config(void)
{
    GPIO_InitTypeDef gpio_conf = {0};
    __HAL_RCC_GPIOA_CLK_ENABLE();
    gpio_conf.Pin = GPIO_PIN_All;
    gpio_conf.Mode = GPIO_MODE_ANALOG;
    gpio_conf.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOA, &gpio_conf);
}

未使用引脚设置为模拟输入,消除上下拉和浮空漏电,是降功耗最容易忽略的点。

七、RTOS 下低功耗实现思路

RTOS 空闲任务是进入低功耗的最佳位置。

空闲任务检测所有任务都阻塞,执行进入停机 / 休眠函数,唤醒后继续调度任务。

复制代码
void vApplicationIdleHook(void)
{
    enter_stop_mode();
}

八、常见低功耗踩坑点

  1. 引脚浮空,漏电大,功耗降不下来
  2. 进入停机前没有关闭外设时钟
  3. 停机唤醒后忘记重新初始化系统时钟,程序运行异常
  4. 频繁唤醒,导致平均功耗居高不下
  5. 待机模式下,SRAM 数据丢失,需要提前保存关键数据到 Flash

九、功耗优化分层策略

  1. 软件层面:缩短唤醒工作时长,非必要不频繁唤醒
  2. 外设层面:不用外设关闭时钟
  3. IO 层面:闲置引脚全部配置模拟输入
  4. 电源层面:不用的外部芯片断电

小结

低功耗开发不只是调用一行休眠函数,是 IO、外设、时钟、唤醒逻辑的整套组合设计。

休眠适合需要快速唤醒场景;停机是电池产品最常用方案;待机适合长时间休眠、极少唤醒场景。

相关推荐
新晨单片机设计1 小时前
S005A-基于STM32单片机震动防盗报警器【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus
Jason_zhao_MR1 小时前
Linux与采集MCU通信为什么我们用了双SPI
linux·arm开发·单片机·嵌入式硬件·嵌入式
嵌入式阿蔡2 小时前
云平台设备接入实战:三元组鉴权、属性上报与命令下发(阿里云/华为云)
嵌入式硬件·物联网·嵌入式·存储
liuguomark2 小时前
TMC5160使用问题2
嵌入式硬件·tmc5160
三佛科技-187366133972 小时前
MT8F82XX系列MCU型号选型指南:兼容替代型号全梳理
单片机·嵌入式硬件
Jaixln_HRF3 小时前
芯维尔CN3921 2A/30V同步降压转换器芯片,集成120/80mΩ MOSFET与680kHz频率,用于汽车电子/IoT/便携仪器
嵌入式硬件·物联网·硬件工程
糖糖单片机设计3 小时前
STM32智能行李箱控制系统
stm32·单片机·嵌入式硬件
Rocktech_ruixun3 小时前
机器人视觉SLAM对主控硬件有哪些要求?瑞迅科技RK3588/3576/3568分级方案解析
人工智能·嵌入式硬件·机器人
Brilliantwxx3 小时前
【STM32】GPIO :寄存器原理、点灯实战与输出特性全解
stm32·单片机·嵌入式硬件