STM32笔记--电源管理

2019-07-13 21:22发布

为什么STM32需要电源管理:在很多应用场合,对电子设备的功耗要求非常苛刻。如某些传感器信息采集设备,仅靠小型的电池提供电源,要求工作长达数年之久,且期间不需要任何维护。为此,大多数 MCU 都会提供电源管理单元来切换 MCU 的 运行模式,尽量降低器件的功耗。STM32将片上外设和内核以模块方式管理,如下图所示:(PS : ADC 使用独立的电源供电,以提高转换精度。CPU 核心、存储器及内置数字外设由电压调节器供电,而 STM32 的后备域则由 V BAT 供电,确保后备域的备份寄存器和 RTC 在主电源断电时仍能正常工作。

下面是低功耗的三种形式及其异同:


从表中可以看到,这三种低功耗模式层层递进,运行的时钟或芯片功能越来越少,因而功耗越来越低。在睡眠模式中,仅关闭了 CPU 时钟,CPU 停止运行,但其片上外设,CM3核心外设全都还照常运行。有两种方式进入睡眠模式,它的进入方式决定了从睡眠唤醒的方式,分别是 WFI(wait for interrupt)和 WFE(wait for event),即由等待“中断”唤醒和由“事件”唤醒。在停机模式中,进一步关闭了其它所有的时钟,于是所有的外设都停止了工作,但由于其 1.8V 区域的电源没有关闭,还保留了 CPU 的寄存器、内存的信息,所以从停机模式唤醒,并重新开启时钟后,还可以从上次停机处继续执行代码。停止模式可以由任意一个外部中断(EXTI)唤醒。在停止模式中可以选择电压调节器为开模式或低功耗模式,若选择低功耗模式,在唤醒时会加上电压调节器的唤醒延迟。待机模式,这与我们平时印象中的手机关机模式相似,它除了关闭所有的时钟,还把 1.8V 区域的电源也关闭了,也就是说,从待机模式唤醒后,由于没有之前代码的运行记录,只能对芯片复位,重新检测 boot 条件,从头开始执行程序。它有四种唤醒方式,分别是 WKUP(PA0)引脚的上升沿,RTC 闹钟事件,NRST 引脚的复位和 IWDG(窗口看门狗)复位。在学习这部分同时,会出现一个情况,当将例程烧录入单片机之后,下次使用时ST-link会报错,这就是由于电源管理使cpu休眠导致ST-link无法识别,解决方法很简单:类似于网上大部分,按住复位再点下载然后1S后松开就可以下载进去了,这就是复位单片机达到唤醒(也就是还没到睡眠等操作),最好的解决方法是随便找个不带睡眠等操作的程序通过按复位或者关睡眠中断等方式下载进去,下次你的ST-link就能继续正常使用了!若你代码中必须有这些操作,那就只能通过按复位解决了!