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

目录

前言

[一、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、外设、时钟、唤醒逻辑的整套组合设计。

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

相关推荐
尼喃42 分钟前
OVP/OCP过压过流保护芯片选型表:2A、3A、5A与10A方案怎么选
嵌入式硬件
无敌贵点大王6 小时前
嵌入式软件面试经(自用)
c语言·stm32·单片机·学习·mongodb·面试·职场和发展
NYFEA7 小时前
NF532重磅上新:高集成度13.56MHz非接触式控制器
嵌入式硬件
我是海飞7 小时前
使用杰理 AC7925B 实现 Windows电脑 USB 副屏
windows·单片机·电脑·嵌入式·杰理
我是海飞8 小时前
杰理 JL703N SDK 实现 AI 自动化调试:自动进入下载模式、下载、重启与日志抓取
人工智能·单片机·自动化·音视频·杰理
Zwawa8 小时前
PID 的三个参数之外:位置式、增量式和反馈控制
c语言·单片机·嵌入式
创界工坊工作室8 小时前
29-基于单片机的万年历设计
stm32·单片机·嵌入式硬件·proteus
木由里予8 小时前
NAND 这门生意
运维·服务器·网络·单片机
国科安芯9 小时前
在轨服务与空间机器人任务中跨飞行器CANFD互连的共模与单粒子问题综述
嵌入式硬件·机器人·canfd·低轨卫星·商业航天·抗辐射
沐欣工作室_lvyiyi9 小时前
基于STM32的社区养老控制系统设计(论文+源码)
stm32·单片机·嵌入式硬件·社区养老控制系统·保定理工学院·华德学院·淮南师范学院