7.1.3 可编程电压检测器
STM32F072VBT6微控制器片内有可编程电压监测器(PVD),用于监视VDD电源并与PVD阈值相比较,当VDD低于或高于阈值VPVD时可以产生中断,微控制器通过中断服务程序既可以生成警告消息,也可以执行紧急关闭任务,将其置于安全状态。PVD阈值可以通过编程电源控制寄存器PWR_CR的PLS[2:0]位设定,PVDE位用于使能PVD。电源控制/状态寄存器PWR_CSR的PVDO标志用于指示VDD是高于还是低于PVD的电压阈值。
当PVDO置位时,该事件内部连接到外部中断的第16线上,当VDD下降到PVD阈值以下或当VDD上升到PVD阈值以上时,PVD输出触发信号的波形如图7-4所示。按照外部中断线16的触发设置,会在相应的边沿产生PVD中断请求。

7.2 低功耗模式
当系统复位后微控制器工作于运行模式,此时外设正常运行,内核及SRAM持续供电,未使用的外设时钟默认为关闭状态。有时,我们想尽量节省微控制器的电流消耗,这一点在使用电池的手持设备中往往非常重要。降低功耗的方法有多种,如在运行模式下,可以通过降低微控制器工作频率、关闭不使用的外设模块时钟的方法来降低功耗。不仅如此,当CPU不需要持续运行时(如等待某个外部事件),可以将微控制器置于不同的低功耗模式下来进一步降低功耗。以下我们要进一步探讨STM32F0系列微控制器的低功耗模式。
7.2.1 低功耗模式的分类
STM32F072VBT6微控制器由Cortex-M0内核和相关外设模块构成,Cortex-M0内核自身支持睡眠(Sleep)和深度睡眠(Sleepdeep)两种低功耗模式。按照Cortex-M0内核、外设时钟、片上电压调节器等工作状态的组合,可以将STM32F072VBT6微控制器的低功耗模式细分为睡眠模式(Sleep mode)、停机模式(Stop mode)和待机模式(Standby mode)三种,具体详见表7-1。

7.2.2 睡眠模式
在睡眠模式下,Cortex-M0内核进入Sleep状态,内核时钟关闭并停止工作,所有外设,包括内核外设(如NVIC、SysTick)等仍在运行,所有I/O口线都保持与运行模式一样的状态,并可在任何中断/事件发生后唤醒。
1.进入睡眠模式
在运行模式下,当Cortex-M0系统控制寄存器的SLEEPDEEP位清0时,按照Cortex-M0系统控制寄存器中SLEEPONEXIT位的设置不同,有两种进入睡眠模式的方法。
·Sleep-now:当SLEEPONEXIT位清0时,执行WFI或WFE指令后MCU立即进入睡眠模式。
·Sleep-on-exit:当SLEEPONEXIT位置“1”时,执行WFI或WFE指令后,MCU从最低优先级的中断服务程序中退出后进入睡眠模式。
2.退出睡眠模式
如果是执行WFI指令进入睡眠模式,任意一个由NVIC识别的外设中断都可以唤醒微控制器并退出睡眠模式
网硕互联帮助中心





评论前必须登录!
注册