PWR简介
可编程电压检测器:使用于电池供电,或者对安全要求比较高的设备,当电压过低或者过高都会造成不必要的错误,因此我们可以在电压不正常的时候通过PWR电源控制及时制止。
电源框图
需要熟记stm32内部有几个供电区,每个供电区都有什么。
最上面是模拟电路的供电包括VDDA;中间是数字电路的供电包括VDD区域和1.8V供电区域;VBAT是后备供电。
上面的模拟电路供电的主要是A/D转换器(A/D转换器还有两个参考电压的供电引脚)、温度传感、复位模块、PLL(锁相环)。
中间的数字电路供电部分,,待机电路实在VDD电压下的;VDD通过电压调节器降压到1.8V来为1.8V供电区供电,CPU、存储器、内置数字外设是在1.8V的电压下工作的;当需要与外部联系的时候CPU等又会通过IO口变为3.3V。
下面的后备电源区RCC_BDCR(备份域控制寄存器)是RCC的寄存器,低电压检测器可以使当有电源供电的时候用VDD,没有电源的时候使用备用电源。
上电复位和掉电复位 (了解)
不可进行手动的控制,了解即可。低的时候为0,高的时候为1.
可编程电压监测器(了解)
可以进行编程控制阈值,低的时候为1,高的时候为0。PVD输出可以用来申请中断,PVD的中断申请是通过外部中断来实现的。
低功耗模式
这三种模式从上到下越来越省电
1.睡眠模式:WFI(Wait For Interrupt)、WFE有对应的库函数。WFI因为是中断唤醒的,所以单片机唤醒之后就会进入中断函数。WFE的唤醒事件可以是外部中断配置为事件模式,也可以是使能了中断但是没有配置NVIC,WFE从哪里睡眠就从哪里醒来。
关闭电路通常会有两个做法:关闭时钟与关闭电源。关闭时钟所有的运算和涉及时序的操作都会暂停,只有当电压调节器为关的状态的时候寄存器和存储器内的数据才会丢失。关闭电源就是电路直接断电,电路的操作和数据都会直接丢失,电压调节器关就相当于直接将1.8V区域断电。
2.停机模式:PDDS = 0,SLEEPDEEP = 1 ,LPDS = 0(电压调节器开启),LPDS = 1,电压调节器进入低功耗的模式。最后在调用WFI和WFE就可以进入停机状态了,WFI需要外部中断的中断模式唤醒,WFE需要外部中断的事件模式唤醒。
3.待机模式:PDDS = 1,SLEEPDEEP = 1深度睡眠,最后调用WFI或者WFE即可进入待机模式。
最后再配置WFI或者WFE。
三种模式的特性
睡眠模式
停止模式
在进入停机模式之前是HSE经过PLL倍频得到的72MHz频率,进入停机模式后HSE和PLL关闭了,再退出停机模式的时候会默认使用HSI的8MHz作为系统时钟。为了还是72MHz我们需要调用SystemInit()就可以了。