单片机基础核心知识点汇总(三十四)

目录

前言

[一、STM32 三种低功耗模式核心区别(必考)](#一、STM32 三种低功耗模式核心区别(必考))

[1. 睡眠模式(SLEEP)](#1. 睡眠模式(SLEEP))

[2. 停机模式(STOP)](#2. 停机模式(STOP))

[3. 待机模式(STANDBY)](#3. 待机模式(STANDBY))

[二、为什么你的设备休眠耗电依旧很大?(90% 人的通病)](#二、为什么你的设备休眠耗电依旧很大?(90% 人的通病))

三、量产级进入低功耗标准流程(必须按顺序)

四、睡眠模式实战代码

五、停机模式(STOP)量产核心代码(重点)

六、待机模式(STANDBY)极致省电代码

[七、RTC 定时唤醒低功耗(周期性唤醒神器)](#七、RTC 定时唤醒低功耗(周期性唤醒神器))

八、低功耗开发十大致命坑点

[1、休眠后功耗依旧几十 mA](#1、休眠后功耗依旧几十 mA)

2、进入低功耗后无法唤醒

3、唤醒后程序乱跑、死机

4、外部模块不断电,休眠依旧耗电

[5、ADC 未关闭,模拟外设持续漏电](#5、ADC 未关闭,模拟外设持续漏电)

6、中断挂起未清除,休眠立刻唤醒

7、滴答定时器未关闭,休眠频繁唤醒

8、浮空引脚外接电阻,形成分压漏电

9、停机模式误用外部时钟,导致无法休眠

10、频繁进出休眠导致时序错乱

九、量产设备终极低功耗优化方案

1、硬件层面

2、软件层面

3、功耗梯度策略

十、三种模式量产选型总结


前言

本篇我们反向攻坚 ------低功耗

现在绝大多数物联网设备、电池设备、穿戴设备、无线传感器、门禁设备,核心难点不是功能实现,而是续航 。 很多新手写完代码功能正常,但设备待机耗电巨大,电池几天就没电,完全无法量产。

STM32 低功耗不是简单开个模式就完事,它是一套系统性优化工程。 很多人踩过的坑: 配置了待机模式功耗依旧高、无法唤醒、唤醒死机、外设未关闭导致漏电、IO 浮空漏电、时钟未降级、休眠卡死。

本篇系统性讲透 STM32 三大低功耗模式、唤醒原理、功耗差异、外设关断、IO 漏电根治、量产级低功耗架构,手把手带你把设备功耗压到微安级


一、STM32 三种低功耗模式核心区别(必考)

STM32 官方提供三种休眠等级,功耗逐级降低、资源丢失逐级增多,选型错误是功耗高的根源。

1. 睡眠模式(SLEEP)

  • CPU 停止运行,外设、时钟、定时器、ADC 全部继续工作
  • 功耗下降少
  • 任意中断即可唤醒
  • 特点:响应最快,几乎无延迟
  • 适用:短时休眠、频繁唤醒设备

2. 停机模式(STOP)

  • 关闭系统时钟 HSI/HSE
  • CPU、定时器、ADC、串口停止
  • 保留 SRAM、寄存器数据
  • 功耗大幅降低
  • 只能外部中断、RTC、看门狗唤醒
  • 适用:大部分电池物联网设备(量产最常用

3. 待机模式(STANDBY)

  • 功耗最低,仅保留备份域电路
  • SRAM 数据全部丢失、寄存器清空
  • 只能 WKUP 引脚、RTC 闹钟唤醒
  • 唤醒等同于软重启
  • 适用:超长待机、一年免充电设备

工程核心结论: 要保留运行状态 → STOP 停机 要极致省电、不怕重启 → STANDBY 待机

二、为什么你的设备休眠耗电依旧很大?(90% 人的通病)

真正的低功耗瓶颈不是休眠模式 ,而是:IO 漏电 单片机所有浮空 IO、上拉 IO、未关闭模拟外设,都会产生微安级静态漏电流,累积起来功耗爆炸。

六大漏电根源:

  1. ADC 未关闭,模拟通道持续耗电
  2. IO 口浮空,高低电平不确定漏电
  3. IO 外接上拉下拉,休眠持续灌电流
  4. 定时器、DMA、串口未关闭时钟
  5. 系统高速时钟未降级
  6. 外部模块未断电(传感器、LED、模块电源)

三、量产级进入低功耗标准流程(必须按顺序)

想要真正低功耗,不能直接休眠,必须执行休眠预处理

  1. 关闭所有外设时钟(TIM/ADC/USART/SPI/I2C/DMA)
  2. 关闭所有中断(除唤醒中断)
  3. 所有 GPIO 统一配置为模拟输入(杜绝漏电)
  4. 关闭高速时钟,切换内部低速时钟
  5. 关闭所有外部模块电源
  6. 清中断标志、关闭挂起中断
  7. 进入低功耗模式

四、睡眠模式实战代码

适合需要快速唤醒、频繁工作的场景

复制代码
void MCU_Enter_Sleep(void)
{
    // 进入睡眠模式
    HAL_SuspendTick();   // 关闭滴答定时器
    __HAL_WFI();         // 等待中断唤醒
    HAL_ResumeTick();    // 恢复滴答定时器
}

特点:

  • 任意中断立刻唤醒
  • 程序继续执行,不会重启
  • 功耗降低有限

五、停机模式(STOP)量产核心代码(重点)

工业物联网、电池设备标准用法

复制代码
void MCU_Enter_StopMode(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    
    //1. 关闭所有外设时钟
    __HAL_RCC_TIM1_CLK_DISABLE();
    __HAL_RCC_TIM2_CLK_DISABLE();
    __HAL_RCC_TIM3_CLK_DISABLE();
    __HAL_RCC_ADC1_CLK_DISABLE();
    __HAL_RCC_USART1_CLK_DISABLE();
    __HAL_RCC_SPI1_CLK_DISABLE();
    __HAL_RCC_I2C1_CLK_DISABLE();

    //2. 所有GPIO设为模拟输入,杜绝漏电
    __HAL_RCC_GPIOA_CLK_ENABLE();
    __HAL_RCC_GPIOB_CLK_ENABLE();
    __HAL_RCC_GPIOC_CLK_ENABLE();

    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Pin = GPIO_PIN_All;

    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

    //3. 进入停机模式
    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

    //4. 唤醒后重新配置系统时钟
    SystemClock_Config();
}

停机模式唤醒条件

  • 外部中断 EXTI(按键、传感器中断)
  • RTC 定时唤醒
  • 引脚电平触发唤醒

唤醒后:程序继续运行,变量不丢失,状态保留

六、待机模式(STANDBY)极致省电代码

功耗最低,适合超长期休眠

复制代码
void MCU_Enter_Standby(void)
{
    // 清除待机标志
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
    
    // 开启WKUP唤醒
    HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1_HIGH);
    
    // 进入待机模式
    HAL_PWR_EnterSTANDBYMode();
}

特点:

  • 唤醒后程序重启
  • SRAM 数据全部丢失
  • 功耗可压到 1~2uA

七、RTC 定时唤醒低功耗(周期性唤醒神器)

绝大多数低功耗产品逻辑: 休眠 → 定时唤醒 → 采集数据 → 上传 → 继续休眠

通过 RTC 实现秒 / 分级定时唤醒,是物联网设备标配。 可实现:1 分钟唤醒一次、1 小时唤醒一次,极大提升续航。

八、低功耗开发十大致命坑点

1、休眠后功耗依旧几十 mA

99% 原因:GPIO 未全部设为模拟输入,持续漏电

2、进入低功耗后无法唤醒

原因:唤醒中断未开启、进入模式选错、中断标志未清除

3、唤醒后程序乱跑、死机

原因:唤醒后未重新初始化系统时钟

4、外部模块不断电,休眠依旧耗电

MCU 休眠了,但传感器、LED、模块还在工作

5、ADC 未关闭,模拟外设持续漏电

6、中断挂起未清除,休眠立刻唤醒

7、滴答定时器未关闭,休眠频繁唤醒

8、浮空引脚外接电阻,形成分压漏电

9、停机模式误用外部时钟,导致无法休眠

10、频繁进出休眠导致时序错乱

解决:增加任务空闲判断,无业务再休眠

九、量产设备终极低功耗优化方案

1、硬件层面

  • 所有不用 IO 默认模拟输入
  • 传感器加可控电源 MOS 管,休眠彻底断电
  • 上拉电阻按需配置,禁止浮空分压
  • 电源采用 LDO,禁止 DC-DC 轻载耗电

2、软件层面

  • 业务执行完毕立刻进入停机模式
  • 所有外设用时开启、用完关闭
  • 休眠前统一 GPIO 状态
  • 采用 RTC 定时唤醒 + 事件唤醒双模式
  • 禁止空闲循环空跑

3、功耗梯度策略

  • 繁忙阶段:全速运行
  • 空闲阶段:睡眠模式
  • 长期空闲:停机模式
  • 超长待机:待机模式

十、三种模式量产选型总结

  1. 需要极速响应、频繁唤醒 → 睡眠模式
  2. 电池设备、保留状态、定时采集 → 停机模式(首选)
  3. 超长待机、一年续航、无需保存数据 → 待机模式
相关推荐
Horn Still Sounds2 小时前
51单片机入门:硬件基础、位运算、数码管动态显示完整梳理
嵌入式硬件·mongodb·51单片机
三佛科技-187366133973 小时前
24W-48W隔离双绕组非标自供电芯片LP3718CD(电路原理图)
单片机·嵌入式硬件
糖糖单片机设计5 小时前
基于 STM32 的小型鸟类宠物繁殖系统
stm32·嵌入式硬件·宠物
电子元器件选型哥6 小时前
一文讲清LLC谐振电路工作原理
单片机·嵌入式硬件·硬件工程师·电子元器件·器件选型
HUI-4747 小时前
EG1162|SOP‑16 高压同步整流降压控制器,最高 600V 输入,大电流 5V 输出优选
嵌入式硬件·硬件工程
POMAGTOR7 小时前
【5G 通讯 POGOPIN 弹簧顶针连接器解决方案】
网络·嵌入式硬件·5g
ZLG_zhiyuan7 小时前
测试方案 | 从“000”到“111”,高效完成100BASE-TX以太网眼图测试
单片机·嵌入式硬件
恒锐丰科技林技术员7 小时前
EG1198:120V 宽压内置 MOS 降压 DC‑DC 电源芯片解析
经验分享·嵌入式硬件·硬件工程
数字新视界8 小时前
能耗管理系统的综合方案与优化实战解析
嵌入式硬件·物联网·数据中心·数据中心基础设施管理·dcim管理系统