STM32之电源管理

时间:2024-04-17 19:23:02

一、前言
STM32有专门的电源管理外设监控电源并管理设备的运行模式,确保
系统正常运行,并尽量降低器件的功耗。

二、电源监控器
STM32芯片主要通过引脚VDD从外部获取电源,在它的内部具有电源
监控器用于检测VDD的电压,以实现复位功能及掉电紧急处理功能,保证系统可靠地运行。

三、STM32的功耗模式
按功耗由高到低排列, STM32具有运行、睡眠、停止和待机四种工作
模式。

四、睡眠模式
在睡眠模式中,仅关闭了内核时钟,内核停止运行,但其片上外设,
CM3核心的外设全都还照常运行。
有两种方式进入睡眠模式,它的进入方式决定了从睡眠唤醒的方式,
分别是WFI(wait for interrupt)和WFE(wait for event),即由等待“中断”唤醒和由“事件”唤醒。

五、停止模式
在停止模式中,进一步关闭了其它所有的时钟,于是所有的外设都停
止了工作,但由于其1.8V区域的部分电源没有关闭,**还保留了内核的寄存器、内存的信息,**所以从停止模式唤醒,并重新开启时钟后,还可以从上次停止处继续执行代码。停止模式可以由任意一个外部中断(EXTI)唤醒,在停止模式中可以选择电压调节器为开模式或低功耗模式。

六、待机模式
在待机模式中,它除了关闭所有的时钟,还把1.8V区域的电源也完全关闭了。也就是说,从待机模式唤醒后,由于没有之前代码的运行记录,只能对芯片复位,重新检测boot条件,从头开始执行程序。 它有四种唤醒方式,分别是WKUP(PA0)引脚的上升沿, RTC闹钟事件, NRST引脚的复位和IWDG(独立看门狗)复位。

在以上讲解的睡眠模式、停止模式及待机模式中,若备份域电源正常供电,备份域内的RTC都可以正常运行,备份域内的寄存器的数据会被保存,不受功耗模式影响。

七、总结
1.睡眠模式:只有CPU睡觉
2.停机模式:CPU、电源1.8V睡觉
3.待机模式:CPU,电源1.8V,外设(原则:皇后不睡觉,程序可被保留,唤醒后从原来位置执行)。

八、电源管理相关的库函数及命令
①、配置PVD监控功能
PVD可监控VDD的电压,当它低于阈值时可产生PVD中断以让系统
进行紧急处理,这个阈值可以直接使用库函数PWR_PVDLevelConfig配置成前面阈值表中说明的阈值等级。

②、WFI与WFE命令
WFI或WFE命令,实质上都是内核指令,在库文件core_cm3.h中把这些指令封装成了函数。
__WFI()是暂停执行指令,进入睡眠模式,等待中断,暂停至任意中断产生后被唤醒。
__WFE()是暂停指令指令,进入睡眠模式,等待事件,暂停至任意事件产生后被唤醒。

③、停止模式
在调用WFI和WFE指令前设置一些寄存器位, STM32标准库把这部分的操作封装到PWR_EnterSTOPMode函数中了。
注意:在进入停止模式后, STM32的所有I/O都保持在停止前的状
态,而当它被唤醒时, STM32使用HSI作为系统时钟(8MHz)运行,由于系统时钟会影响很多外设的工作状态,所以一般我们在唤醒后会重新开启HSE,把系统时钟设置回原来的状态。

④、待机模式
调用PWR_EnterSTANDBYMode函数会进入待机模式,
在进入待机模式后,除了被使能了的用于唤醒的I/O,其余I/O都进入高阻态,而从待机模式唤醒后,相当于复位STM32芯片,程序重新从头开始执行。

在这里插入图片描述