PWR电源控制(STM32笔记)
目录简介电源框图低功耗模式模式选择睡眠模式停止模式待机模式简介PWRPower Control电源控制PWR负责管理STM32内部的电源供电部分可以实现可编程电压监测器和低功耗模式的功能可编程电压监测器PVD可以监控VDD电源电压当VDD下降到PVD阀值以下或上升到PVD阀值之上时PVD会触发中断用于执行紧急关闭任务低功耗模式包括睡眠模式Sleep、停机模式Stop和待机模式Standby可在系统空闲时降低STM32的功耗延长设备使用时间电源框图低功耗模式停机和待机模式的区分PDDS位。PDDS 0停机模式。PDDS 1待机模式。停机状态下的LPDS用于调节电压调节器是处于开启状态LPDS 0还是低功耗状态LPDS 1睡眠模式只关闭CPU不关闭其他的外设停机模式关闭CPU和外设电压调节器设置为开启或低功耗储存数据待机模式关闭CPU外设和电压调节器。模式选择睡眠模式执行完WFI/WFE指令后STM32进入睡眠模式程序暂停运行唤醒后程序从暂停的地方继续运行SLEEPONEXIT位决定STM32执行完WFI或WFE后是立刻进入睡眠还是等STM32从最低优先级的中断处理程序中退出时进入睡眠在睡眠模式下所有的I/O引脚都保持它们在运行模式时的状态WFI指令进入睡眠模式可被任意一个NVIC响应的中断唤醒WFE指令进入睡眠模式可被唤醒事件唤醒停止模式执行完WFI/WFE指令后STM32进入停止模式程序暂停运行唤醒后程序从暂停的地方继续运行1.8V供电区域的所有时钟都被停止PLL、HSI和HSE被禁止SRAM和寄存器内容被保留下来在停止模式下所有的I/O引脚都保持它们在运行模式时的状态当一个中断或唤醒事件导致退出停止模式时HSI被选为系统时钟.我们的程序是默认systemInit里面的配置是使用的HSE外部高速时钟通过PLL倍频得到72MHz主频。但是进入停止模式后PLL和HSE都停止了。而且在退出停止模式时他不会在主动开启PLL和HSE。而是默认使用HSI的8MHz直接作为主频。所以在推出停止模式后要开启HSE配置主频为72MHz当电压调节器处于低功耗模式下系统从停止模式退出时会有一段额外的启动延时WFI指令进入停止模式可被任意一个EXTI中断唤醒WFE指令进入停止模式可被任意一个EXTI事件唤醒待机模式执行完WFI/WFE指令后STM32进入待机模式唤醒后程序从头开始运行整个1.8V供电区域被断电PLL、HSI和HSE也被断电SRAM和寄存器内容丢失只有备份的寄存器和待机电路维持供电在待机模式下所有的I/O引脚变为高阻态浮空输入WKUP引脚的上升沿、RTC闹钟事件的上升沿、NRST引脚上外部复位、IWDG复位退出待机模式PWR库函数//将寄存器复位默认值 void PWR_DeInit(void); //使能后备区域的访问 void PWR_BackupAccessCmd(FunctionalState NewState); //使能PVD void PWR_PVDCmd(FunctionalState NewState); //配置PVD的阈值电压 void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel); //使能位于PA0位置的Wakeup引脚 void PWR_WakeUpPinCmd(FunctionalState NewState); //进入停止模式 void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry); //进入待机模式 void PWR_EnterSTANDBYMode(void); //获取标志位 FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG); //清除标志位 void PWR_ClearFlag(uint32_t PWR_FLAG);