这段时间正在磨一个项目,要求系统中STM32F0系列的芯片不工作时处于一个低功耗,要用几个月,所以需要研究下stm32F0的低功耗模式。
经过了解,STM32F0芯片与其他STM32F1系列一样,有休眠(Sleep)、停机(Stop)和待机(Standby)三个模式,相应的功耗如下图。可见,休眠模式由于程序和绝大部分功能还在工作,所以低功耗效果并不是很明显。停机模式和待机模式的低功耗效果拔群,故在该两种中进行取舍,待机模式的待机电流仅2uA,但是仅能被WKUP管脚和RST(复位管脚)唤醒,唤醒后所有东西均需要重新初始化。而停机模式就比较中庸,它的功耗电流是一个范围,是由所需要保留的功能而决定,可以被中断和事件唤醒。
由于电路上需要两路中断分别对单片机进行唤醒,所以选择停机(stop)模式,并且调节器是低功耗模式,仅可被中断,这样尽量降低需要的耗电资源,将功耗降到最低。
进入停机模式
这里我们直接调用官方的函数库stm32f0_pwr.c的函数即可。函数包括两个部分,一部分是开启芯片电源管理的时钟,另一部分是就是进入停机模式,停机模式还有两个选择模式,一个