本节我们来讲一讲stm32的电源控制,也就是低功耗模式。
1)stm32的低功耗模式简介
stm32有三种低功耗模式,功耗依次降低:
睡眠模式(sleep mode),停止模式(stop mode),待机模式(standby mode)。
睡眠模式:只有内核时钟关闭,外设仍在运行;可以通过任意一个中断或唤醒事件唤醒;唤醒后回到睡眠的位置向后执行。
停止模式:关闭内核时钟、外设时钟,保留内核1.8V供电,寄存器和RAM中的数据可以保持,IO口状态也可保持;可以通过任意一个外部中断唤醒;唤醒后可回到停止的代码处向后执行,但要重新初始化时钟和外设。
待机模式:关闭所有时钟,关闭内核1.8V供电,寄存器和RAM数据不能保持(除了电源控制/状态寄存器(PWR_CSR)、备份寄存器,其他数据都丢失);可通过唤醒引脚(PA0)上升沿、RTC闹钟中断,或者复位唤醒;唤醒后相当于复位,从复位地址开始执行。
三种模式的特性汇总如下表:
当stm32执行WFI(等待中断)或WFE(等待事件)指令后,即进入低功耗模式,这是两条汇编指令,实际使用时,HAL库已经为我们封装好了函数,只需要调用相应的C语言函数即可。
2)低功耗模式的使用
我们仍然以串口的工程为基础,在它上面添加设置,如下图,先设置外部中断:
再设置RTC: