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

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

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

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

微信图片_2026-01-14_131730_192.png . ^& V2 G1 M% @
二、上电复位与掉电复位(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 9 f! i! P: V9 B
, @  J- T4 f3 m
三、STM32的低功耗模式系统复位后,MCU处于正常运行模式。在正常运行模式下,CPU由HCLK时钟信号驱动连续执行程序指令。用户可以采取一些措施降低系统正常运行时的功耗,例如,可以降低HCLK时钟频率,或者将不使用的外设的时钟信号关闭。从main()函数的代码可以看出,在执行完各种初始化后,最后都是执行一个while()死循环。在while()循环里,通过轮询方式处理各种事务,或通过中断响应处理各种事务。在正常运行模式下,while()循环里的程序代码是一直执行的,即使一行代码都没有。所以在正常运行模式下,一般的嵌入式系统的CPU计算时间都是浪费的。除了正常运行模式,STM32F4系列MCU还有3种低功耗模式。 微信图片_2026-01-14_131738_561.png / F! Z1 r; F/ `6 w
1.睡眠(Sleep)模式Cortex-M4内核时钟停止,1.2V调压器正常工作,外设保持运行。通过WFI(wait for interrupt)或WFE(wait for event)指令进入睡眠模式。进入睡眠模式后,CPU不再执行新的代码。CPU可以被中断或事件唤醒,唤醒后继续执行进入睡眠点之后的代码。 微信图片_2026-01-14_131828_370.png
8 S. T7 V& f: i, \. M% V 微信图片_2026-01-14_131859_651.png
- a$ t4 X7 U( Y4 V2 a; I: M5 v* N" Z3 |1 K. _
  • 参数检查 assert_param()


    , w! Y3 p& w% @" G
  • 确保传入参数只能是:6 ?: N2 L: D0 p% W! |
    PWR_SLEEPEntry_WFI(0x01)    PWR_SLEEPEntry_WFE(0x02)
  • 防止非法参数导致未定义行为+ b2 v) T) }9 {9 P; ?" o$ }, \! X
  • 清除SLEEPDEEP位

    , a9 S# `" b0 |

& r4 `: X' |. r7 @( ?/ k& H- U
  • SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;
    1 o1 G7 e( u2 Z4 `

3 y8 Q/ Z5 n* D" v) I$ P. T# `9 d; m/ S目的:明确指定进入睡眠模式(非停止/待机模式)寄存器说明:Cortex-M0系统控制寄存器(SCR)的SLEEPDEEP位:

    * q# f- u# s2 G2 D
    • 0= 睡眠模式  m" {# g1 Z+ {6 x. v8 z; s" @4 D5 g
  • 1 = 深度睡眠模式(停止/待机)
    " U/ h7 k6 c$ {- E; ]
硬件关联:该位与电源控制寄存器(PWR_CR)的PDDS和LPDS位协同工作2.停止(Stop)模式1.2V域所有时钟都停止,所有外设停止工作,内部调压器可以处于运行或低功耗模式,内部SRAM和寄存器的内容被保留,HSI和HSE振荡器关闭。通过EXTI中断或EXTI事件唤醒,CPU从停止处继续执行代码。 微信图片_2026-01-14_131837_249.png
3 [4 Y2 ]2 G' t' o& F 微信图片_2026-01-14_131903_267.png ( j, N/ w& n4 R1 H$ n- F% n, j
3.待机(Standy)模式
& L) F( a! }, n7 ]% e$ J* L调压器停止,1.2V域断电,内部SRAM和寄存器的内容丢失。只能通过SYS_WKUP引脚的上升沿、RTC闹钟事件、RTC唤醒事件、RTC入侵事件、NRST引脚外部复位等唤醒。从待机模式唤醒相当于系统复位,程序从头开始执行。 微信图片_2026-01-14_131850_493.png
+ ?, V" K: e# [  C+ j 微信图片_2026-01-14_131906_551.png ' z' U# p  T) c8 X
在这3种低功耗模式中,待机模式功耗最低,但是从待机模式唤醒相当于系统复位,程序从头开始执行。睡眠模式和停止模式都能停止CPU的程序执行,被唤醒后,从程序停止处继续执行。应根据系统的实际功能需求选择合适的低功耗模式。
) H3 ?3 Y- o- w* j) d. m
" Y8 X6 i) o8 e: m
收藏 评论0 发布时间:2026-1-14 13:24

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版