嵌入式学习笔记- 单片机的低功耗以及唤醒

一 单片机的低功耗模式定义

为了省电,单片机可以进入如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)。

相关推荐
于小猿Sup3 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
chao1898445 小时前
STM32 HAL库驱动AT24C02 EEPROM例程
stm32·单片机·嵌入式硬件
不会武功的火柴6 小时前
SystemVerilog语法(8)-有限状态机(FSM)
嵌入式硬件·fpga开发·自动化·ic验证·rtl·uvm方法学
嵌入式小站9 小时前
STM32 零基础可移植教程 05:按键消抖,为什么按一次会触发好几次
chrome·stm32·嵌入式硬件
czhaii9 小时前
跟我动手学FX系列PLC GX2环境
嵌入式硬件
拾知_H10 小时前
STM32/Delay延时函数编程思路
stm32·单片机·时钟·延时
2zcode11 小时前
基于STM32的智能扫地机器人设计与实现
stm32·嵌入式硬件·机器人
jllllyuz11 小时前
单相并网逆变器控制代码实现(STM32版)
stm32·单片机·嵌入式硬件
冉卓电子13 小时前
GD32C103RBT6 misc 内核驱动库极简解析
单片机·嵌入式硬件
yongui4783413 小时前
MAX6675 K型热电偶温度采集程序(Keil环境)
单片机·嵌入式硬件