一、PWR电源控制
1.1 PWR(Power Control)
PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能
可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务
低功耗模式包括睡眠模式(Sleep)、停机模式(Stop)和待机模式(Standby),可在系统空闲时,降低STM32的功耗,延长设备使用时间
在三种低功耗模式下,第二次下载程序方法:长按复位键,之后点击下载按钮,及时松开复位键
1.2 电源框图
STM32
的工作电压
(V
DD
)
为
2.0
~
3.6V
。通过内置的电压调节器提供所需的
1.8V
电源。
当主电源
V
DD
掉电后,通过
V
BAT
脚为实时时钟
(RTC)
和备份寄存器提供电源
VDDA(VDD Analog,模拟部分供电):A/D转换器(参考电压VREF)、温度传感器、复位模块、PLL(锁相环)
VDD(数字电路供电):I/O电路(待机电路、电压调节器)
VBAT(备份区域供电):LSE、后被寄存器BSK、RCC BDCR寄存器(备份域控制寄存器)、RTC
电压调节器:为1.8V区域供电
复位后调节器总是使能的。根据应用方式它以
3
种不同的模式工作。
● 运转模式:调节器以正常功耗模式提供
1.8V
电源
(
内核,内存和外设
)
。
● 停止模式:调节器以低功耗模式提供
1.8V
电源,以保存寄存器和
SRAM
的内容。
● 待机模式:调节器停止供电。除了备用电路和备份域外,寄存器和
SRAM
的内容全部丢失。
低电压检测器:VDD有电时由VDD为后备区域供电,VDD没电时由VBAT为后备区域供电
1.3 上电复位和掉电复位
上电复位和掉电复位:当VDD/VDDA低于指定的限位电压VPOR/VPDR时,系统保持为复位(低电平有效)状态,不需外部复位电路
1.4 可编程电压监测器PVD
功能:用于执行紧急关闭任务
使用方法:寄存器
(PWR_CR)
中的
PLS[2:0]
位进行比较来监控电源,这几位选择监控电压的阀值。
通过设置
PVDE
位来使能
PVD
寄存器
(PWR_CSR)
中的
PVDO
标志用来表明
V
DD
是高于还是低于
PVD
的电压阀值。
当V
DD
下降到
PVD
阀值以下和
(
或
)
当
V
DD
上升到
PVD
阀值之上时,根据外部中断第16
线的上升
/
下降边沿触发设置,就会产生
PVD
中断。
二、低功耗模式
当
CPU
不需继续运行时,可以利用多种低功耗模式来节省功耗,例如长时间等待某个外部事件
STM32F103C8T6
三种低功耗模式:
● 睡眠模式
(Cortex-M3
内核停止,所有外设包括
Cortex-M3
核心的外设,如
NVIC
、系统时
钟
(SysTick)
等仍在运行
)
● 停止模式
(
所有的时钟都已停止
)
● 待机模式
(1.8V
电源(电压调节器)关闭
)
此外,在运行模式下,可以通过以下方式中的一种降低功耗:
● 降低系统时钟((SYSCLK)(SystemInit():首先开启HSI,恢复寄存器的缺省配置,之后根据不同的宏,配置相关寄存器,得到既定的时钟频率
)
● 关闭
APB
和
AHB总线上未被使用的外设时钟(HCLK:AHB的时钟、
PCLK1
、
PCLK2:APB的时钟)
WFI:Wait For Interrupt等待中断,一般醒来之后处理中断
WFE:Wait For Event等待事件,直接从睡得地方继续运行
低功耗模式判断:配置响应寄存器后,通过调用__WFI()或__WFE()后,进入低功耗模式
SLEEPDEEP和SLEEPONEXIT位于系统内核,只能操作相关寄存器,没有相关函数
PDDS和LPDS位于PWR外设,可以使用相关库函数
2.1 睡眠模式
进入:通过执行
WFI
或
WFE
指令进入睡眠状态
退出:
如果执行
WFI
指令进入睡眠模式,任意一个被嵌套向量中断控制器响应的外设中断都能将系统从
睡眠模式唤醒。
如果执行
WFE
指令进入睡眠模式,则一旦发生唤醒事件时,微处理器都将从睡眠模式退出。唤
醒事件可以通过下述方式产生:
2.2 停止模式
在停止模式下,通过设置电源控制寄存器
(PWR_CR)
的
LPDS
位使内部调节器进入低功耗模式,
能够降低更多的功耗。
如果正在进行闪存编程,直到对内存访问完成,系统才进入停止模式。
如果正在进行对
APB
的访问,直到对
APB
访问完成,系统才进入停止模式
程序默认时钟是HSE通过PLL得到72MHz,
当退出停止模式后,HSI作为系统时钟。为了避免前后时钟频率不一致
,在进入停止模式的指令后,调用SystemInit()
可选择的其他功能: