嵌入式学习笔记- 单片机的低功耗以及唤醒
一 单片机的低功耗模式定义
为了省电,单片机可以进入如Sleep、Stop、Standby等低功耗模式。在这些模式下,CPU核心时钟可能会停止,但某些外设(如串口、定时器)的时钟仍然可以运行。
理解:CPU核心时钟停止,程序停止运行,某些外设时钟可能停止,也可能运行,这要取决于不同的单片机的硬件设计
二 单片机低功耗的唤醒
通过外设中断唤醒低功耗模式,如外部中断,这是最常见的,或者串口中断,唤醒单片机,这个唤醒的过程是硬件设计实现的。
例如,当一个在低功耗模式下的单片机,其使能了中断的外设(如串口)产生了一个有效的事件(如接收到一个字节),这个中断信号可以将CPU从睡眠中“唤醒”,使其退出低功耗模式,恢复正常运行,并执行相应的中断服务程序。
三 低功耗的正确设置方式
为了使单片机能顺利以预想的方式从低功耗模式唤醒,第一要正确设置低功耗模式,第二要正确设置设置外设中断。
1. 进入正确的低功耗模式: 不是所有睡眠模式都能被串口唤醒。你需要进入一个 “可以被该外设中断唤醒” 的低功耗模式。
浅度睡眠(如Wait, Sleep): CPU时钟停止,但外设时钟仍在运行。串口绝对可以唤醒。
深度睡眠(如Stop, Standby): 大部分时钟都停止了。此时需要检查数据手册,看串口是否在特定条件下(例如,使用独立的低速时钟,如32.768kHz的LSE)仍然可以工作并产生唤醒信号。在某些深度睡眠模式下,串口可能无法工作,也就无法唤醒了。
2. 正确设置外设中断
例如要实现串口中断唤醒,必须同时满足以下几个条件:
使能串口接收器: 配置串口控制寄存器,开启接收功能。
使能串口接收中断: 配置串口的中断控制寄存器,允许其在接收到数据时产生中断。
配置I/O引脚: 将对应的RX引脚配置为串口功能,而不是普通的GPIO。
使能全局中断: 确保单片机的全局中断开关是打开的(例如,在ARM Cortex-M核中是__enable_irq()
,在51核中是EA=1
)。