你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

小白也能明白的STM32的低功耗与唤醒机制

[复制链接]
flyingstar 发布时间:2026-1-14 13:24
一、STM32的电源管理简介

电源对电子设备的重要性不言而喻,它是保证系统稳定运行的基础,而保证系统能稳定运行后,又有低功耗的要求。 在很多应用场合中都对电子设备的功耗要求非常苛刻,如某些传感器信息采集设备,仅靠小型的电池提供电源,要求工作长达数年之久, 且期间不需要任何维护;由于智慧穿戴设备的小型化要求,电池体积不能太大导致容量也比较小,所以也很有必要从控制功耗入手, 提高设备的续行时间。因此,STM32有专门的电源管理外设监控电源并管理设备的运行模式,确保系统正常运行,并尽量降低器件的功耗。

微信图片_2026-01-14_131730_192.png . r# Q+ g3 c+ N, e& R% L
二、上电复位与掉电复位(POR与PDR)当检测到VDD的电压低于阈值VPOR及VPDR时,无需外部电路辅助,STM32芯片会自动保持在复位状态,防止因电压不足强行工作而带来严重的后果。 见图 POR与PDR ,在刚开始电压低于VPOR时(约1.92V), STM32保持在上电复位状态(POR,Power On Reset),当VDD电压持续上升至大于VPOR时,芯片开始正常运行,而在芯片正常运行的时候, 当检测到VDD电压下降至低于VPDR阈值(约1.88V),会进入掉电复位状态(PDR,Power Down Reset)。 微信图片_2026-01-14_131735_106.png . @" M8 Z! S( T+ P- w4 P
0 t6 B. V8 z, d6 f% g; M
三、STM32的低功耗模式系统复位后,MCU处于正常运行模式。在正常运行模式下,CPU由HCLK时钟信号驱动连续执行程序指令。用户可以采取一些措施降低系统正常运行时的功耗,例如,可以降低HCLK时钟频率,或者将不使用的外设的时钟信号关闭。从main()函数的代码可以看出,在执行完各种初始化后,最后都是执行一个while()死循环。在while()循环里,通过轮询方式处理各种事务,或通过中断响应处理各种事务。在正常运行模式下,while()循环里的程序代码是一直执行的,即使一行代码都没有。所以在正常运行模式下,一般的嵌入式系统的CPU计算时间都是浪费的。除了正常运行模式,STM32F4系列MCU还有3种低功耗模式。 微信图片_2026-01-14_131738_561.png
. }( m( }  R2 k, p" u3 M9 f' r; e' E+ z1.睡眠(Sleep)模式Cortex-M4内核时钟停止,1.2V调压器正常工作,外设保持运行。通过WFI(wait for interrupt)或WFE(wait for event)指令进入睡眠模式。进入睡眠模式后,CPU不再执行新的代码。CPU可以被中断或事件唤醒,唤醒后继续执行进入睡眠点之后的代码。 微信图片_2026-01-14_131828_370.png 7 z. b" a% t# D9 B
微信图片_2026-01-14_131859_651.png . q5 r  I+ ^0 D0 N4 c$ n
( ?. Q+ n% z0 I/ K5 H9 d+ T3 @
  • 参数检查 assert_param()


    $ ^( v# _9 h/ K( K
  • 确保传入参数只能是:8 z2 n4 k0 l9 j( c( {: A
    PWR_SLEEPEntry_WFI(0x01)    PWR_SLEEPEntry_WFE(0x02)
  • 防止非法参数导致未定义行为
    ) X4 P- Y" D7 y5 _. y
  • 清除SLEEPDEEP位


    9 `2 P! N% [3 @" Q
+ L" K, f9 r$ z1 `$ n! |9 H2 h
  • SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;
    7 r* i# i* P) N5 ?4 @. c) y+ B) G! ^
0 N# O5 g* w6 [$ u: B& Z6 H
目的:明确指定进入睡眠模式(非停止/待机模式)寄存器说明:Cortex-M0系统控制寄存器(SCR)的SLEEPDEEP位:
    3 |9 b6 t4 N  {* G! U# J! y
    • 0= 睡眠模式
      ' P0 n7 O8 r/ f. Z9 O+ N$ s
  • 1 = 深度睡眠模式(停止/待机)  Y" s! v9 s2 Q' t5 z* U* I' A3 [4 H
硬件关联:该位与电源控制寄存器(PWR_CR)的PDDS和LPDS位协同工作2.停止(Stop)模式1.2V域所有时钟都停止,所有外设停止工作,内部调压器可以处于运行或低功耗模式,内部SRAM和寄存器的内容被保留,HSI和HSE振荡器关闭。通过EXTI中断或EXTI事件唤醒,CPU从停止处继续执行代码。 微信图片_2026-01-14_131837_249.png
8 R) i) f9 l  a1 F, ^" E/ [ 微信图片_2026-01-14_131903_267.png
: R# U$ N& G% X' [+ u" s. n' c) M3.待机(Standy)模式
* i4 [* Z# R9 y0 @6 b调压器停止,1.2V域断电,内部SRAM和寄存器的内容丢失。只能通过SYS_WKUP引脚的上升沿、RTC闹钟事件、RTC唤醒事件、RTC入侵事件、NRST引脚外部复位等唤醒。从待机模式唤醒相当于系统复位,程序从头开始执行。 微信图片_2026-01-14_131850_493.png
8 Z8 Y& v7 J3 q$ q' ]9 ? 微信图片_2026-01-14_131906_551.png
6 |$ G1 N: Y) i  T: w在这3种低功耗模式中,待机模式功耗最低,但是从待机模式唤醒相当于系统复位,程序从头开始执行。睡眠模式和停止模式都能停止CPU的程序执行,被唤醒后,从程序停止处继续执行。应根据系统的实际功能需求选择合适的低功耗模式。
6 ?# F: Y( {( _

* G4 C' c9 {! |: f) }5 Y+ _7 H
赞 收藏 评论0 发布时间:2026-1-14 13:24

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版