STM32 低功耗模式:SLEEP / STOP / STANDBY 怎么选

三种模式速览

模式 电流(典型) CPU SRAM 寄存器 唤醒方式 唤醒时间
SLEEP(睡眠) ~10mA→~1mA 保持 保持 任一中断 几 μs
STOP(停止) ~1mA→~110μA(低功耗调压器 PWR_LOWPOWERREGULATOR_ON);主调压器约 450μA 保持 保持 EXTI / RTC 几 μs
STANDBY(待机) ~100μA→~2μA 掉电 掉电 掉电 RST / RTC / WAKE 几 ms

SLEEP 模式

CPU 停转,外设继续工作(串口能收数据、定时器继续计数)。

复制代码
// 进入 SLEEP
HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);
// WFI = Wait For Interrupt,任一中断就会唤醒

适合:短暂空闲,比如等串口数据、等定时器。

STOP 模式

CPU 和外设都停止,SRAM 和寄存器内容保持。所有时钟停振(HSE/HSI 关了)。

复制代码
// 进入 STOP
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

唤醒后需要重新配置系统时钟

复制代码
// EXTI 回调中唤醒
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    // 唤醒后先不动,main 里恢复时钟
}
​
// main 中
HAL_PWR_EnterSTOPMode(...);
// 醒来后从这里继续执行
SystemClock_Config();  // 必须重新配时钟!

适合:几秒到几十秒的空闲。

STANDBY 模式

最省电。除了 RTC 和唤醒引脚,全都断电。醒来相当于复位------从 main 重新执行。

复制代码
// 进入 STANDBY
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);  // PA0 可唤醒
HAL_PWR_EnterSTANDBYMode();

醒来判断是否从 STANDBY 复位:

复制代码
if (__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET)
{
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);
    printf("Woke from STANDBY\r\n");  // 注意:STANDBY 唤醒后经历复位,需重新初始化串口等外设后方可 printf
}

适合:电池供电、几分钟甚至几小时才工作一次的场景。

实测步骤

用万用表(mA 档)串在 VCC 回路里:

复制代码
int main(void)
{
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    printf("Entering STOP in 3s...\r\n");
    HAL_Delay(3000);
​
    // 进入 STOP
    HAL_SuspendTick();  // 暂停 SysTick(避免醒来后 HAL_Delay 出错)
    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
​
    // 唤醒后
    SystemClock_Config();
    HAL_ResumeTick();
    printf("Woke up!\r\n");
​
    while (1) HAL_Delay(1000);
}

按下 PA0(带 EXTI),看电流从几 mA 降到几百 μA,再按一下回到几 mA。

选型指南

你想省电多久 用哪个
等串口数据(< 1s) SLEEP
等按键输入(几秒~几分钟) STOP
传感器定时上报(几分钟~几天) STANDBY + RTC 唤醒
相关推荐
笨笨饿7 小时前
#110_SCH3000 平台图传系统配置指南:从 DVP 摄像头到 UVC/WiFi 双通道传输
c语言·stm32·单片机·嵌入式硬件·物联网·vim
千秋岁rr9 小时前
5.0 TIM
单片机·嵌入式硬件
小僧景贤10 小时前
STM32 startup.s 启动文件与 .map 映射文件深度技术解析(md/hd 版本差异化对比)
stm32·内存映射·startup.s·map 文件·单片机启动流程
zcmodeltech11 小时前
水利水电沙盘模型控制系统设计与实现:多场景多工况联动方案
网络·stm32·嵌入式硬件·制造·多分类
2601_9667990412 小时前
CH398 技术解析:USB 3.0转千兆以太网单芯片方案与内置电源设计要点
单片机·嵌入式硬件
zlinear数据采集卡13 小时前
数据采集卡从入门到精通(38):上位机开发实战——Python/QT/LabVIEW的技术选型与分层架构
python·单片机·嵌入式硬件·qt·fpga开发·开源·labview
嵌入式阿蔡13 小时前
项目实战 02:智能家居环境网关——ESP32 做 BLE 中心 + 本地联动
网络·单片机·嵌入式硬件·esp32·智能家居·嵌入式实时数据库
自小吃多13 小时前
Capture软件原理图添加差分属性笔记
笔记·嵌入式硬件
简单电磁炮13 小时前
ADXL345调试
单片机·嵌入式硬件
LCG元14 小时前
STM32 软件模拟 I2C 驱动 AT24C02 EEPROM:从时序原理到实测读写全记录
stm32·单片机·嵌入式硬件