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

目录

前言

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

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

相关推荐
不悔哥2 天前
开源OV-Watch:怎么做一个智能手表
单片机·开源·嵌入式
XiHongShi20162 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
深圳老胡2 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
女神下凡2 天前
嵌入式设计的各种存储芯片的硬件/软件设计规范,非常全面。
arm开发·单片机·嵌入式硬件
梅梅9662 天前
一款mipi转lvds的lcd调试(LT8912B)
单片机·计算机外设·电脑·显示器·pd芯片
开发笔记-阿牛2 天前
蓝牙音乐灯拆解,又一次拆到蓝牙音乐灯芯片CK6865L
人工智能·单片机·嵌入式硬件·音视频·音频
从零开始的嵌入式之旅2 天前
day47
arm开发·经验分享·笔记·嵌入式硬件
恒锐丰科技林技术员2 天前
EG1164 高压大电流升压同步整流芯片解析
经验分享·嵌入式硬件·硬件工程
CHENKONG_CK2 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
祖力552 天前
ARM时钟
嵌入式硬件·arm·时钟·imx6ull