【ESP32】ESP-IDF开发 | 低功耗管理+RTC唤醒和按键唤醒例程
1. 简介

ESP32支持5种低功耗模式,低功耗管理单元包括调压器、功耗控制器、电源开关单元、电源域隔离单元 (Isolation Cell) 等部分。
1.1 RTC单元
RTC单元是ESP32低功耗管理的核心,可用于管理低功耗模式的进入和退出,控制时钟源、PLL、电源开关和隔离单元以产生电源门控、时钟门控和复位信号。

RTC单元主要包含以下几个模块:
- RTC主状态机:记录电源状态;
- 数字和模拟电源控制器:可用于为RTC的数字模块和模拟模块生成电源门控/时钟门控信号;
- 睡眠和唤醒控制器:可处理低功耗模式的进入和退出;
- 计时器:包括RTC主计时器、ULP协处理器计时器和触摸计时器;
- 低功耗处理器和传感器控制器:ULP协处理器、触摸控制器、SAR ADC控制器等;
- 保留内存:RTC慢速内存,绝大部分用作保留内存或存储ULP协处理器的指令和数据内存;RTC快速内存,绝大部分用作保留内存;
- 保留寄存器:该寄存器永远开启,可用于数据存储;
- RTC IO管脚:18 个“always-on”管脚,通常作为唤醒源。
1.2 低功耗时钟
在低功耗模式下,ESP32的40 MHz晶振和PLL通常将断电以降低功耗,转而使用低功耗时钟维持工作。
RTC模块可以使用5个低功耗时钟源:
- 外部低速晶振时钟XTL32K_CLK(32.768 kHz);
- 外部高速晶振时钟XTAL_DIV_CLK(2 MHz ~ 40 MHz);
- 内部RC振荡器RC_SLOW_CLK(频率可调,通常为150 kHz);
- 内部8MHz振荡器RC_FAST_CLK;
- 内部31.25 kHz时钟RC_FAST_DIV_CLK(来自内部8MHz振荡器,256分频)。

以上的时钟源在RTC内部会区分成慢速时钟和快速时钟,每个RTC内部模块所使用的时钟类型是不同的;像RTC定时器、RTC主状态机和电源管理模块使用的是慢速时钟,ULP协处理器、传感器控制器、RTC内存和RTC寄存器使用的是快速时钟。

对于数字内核(无线模块)则可以使用上面的4种时钟源。
1.3 低功耗模式
1. Active模式
- CPU的工作时钟为XTAL_DIV_N(40 MHz/26 MHz)或PLL(80 MHz/160 MHz/240 MHz);
- 芯片可以接收、发射或监听信号。
2. Modem-sleep模式
- CPU可以工作,时钟可以配置;
- Wi-Fi/蓝牙基带受时钟门限控制或关闭,射频模块关闭;
- PLL 为 80 MHz 时,电流消耗:≈ 30 mA;
- XTAL 为 2 MHz 时,电流消耗:≈ 3 mA;
- 即刻唤醒;
3. Light-sleep模式
- 内部 8 MHz 振荡器、40 MHz 高速晶振、PLL 及射频模块均禁用;
- 数字内核时钟受门限限制,CPU暂停工作;
- ULP 协处理器和触摸控制器可以周期性触发,对传感器进行监测;
- 电流消耗:≈ 800 µA;
- 唤醒延迟:< 1 ms;
4. Deep-sleep模式
- 内部 8 MHz 振荡器、40 MHz 高速晶振、PLL 及射频模块均禁用;
- 数字内核断电,CPU内容丢失;
- RTC 内核的供电电压降至 0.7V;
- 8 x 32 位数据保存在通用保留寄存器中;
- RTC 内存和快速 RTC 内存可以保持;
- 电流消耗:≈ 6.5 µA;
- 唤醒延迟:< 1 ms。
5. 休眠模式
- 内部 8 MHz 振荡器、40 MHz 高速晶振、PLL 及射频模块均禁用;
- 数字内核断电,CPU 内容丢失;
- RTC 外设域断电;
- RTC 内核的供电电压降至 0.7V;
- 8 x 32 位数据保存在通用保留寄存器中;
- RTC 内存和快速 RTC 内存断电;
- 电流消耗:≈ 4.5 µA;
- 唤醒源:仅支持 RTC 计时器;
- 唤醒延迟:< 1 ms。
1.4 唤醒源
| 唤醒源 | Light-sleep | Deep-sleep | 休眠 |
|---|---|---|---|
| EXT0 | Y | Y | N |
| EXT1 | Y | Y | Y |
| GPIO | Y | Y | N |
| RTC定时器 | Y | Y | Y |
| SDIO | Y | N | N |
| WiFi | Y | N | N |
| UART0 | Y | N | N |
| UART1 | Y | N | N |
| TOUCH | Y | Y | N |
| ULP协处理器 | Y | Y | N |
| 蓝牙 | Y | N | N |
2. 例程
2.1 RTC定时器唤醒
这个例程中配置RTC定时器,使处理器在进入深度睡眠后5秒自动唤醒。
#include "freertos/FreeRTOS.h"
#include "freertos/queue.h"
#include "esp_log.h"
#include "esp_sleep.h"#include <string.h>#define TAG "app"int app_main()
{while (1) {ESP_ERROR_CHECK(esp_sleep_enable_timer_wakeup(5 * 1000000));ESP_LOGI(TAG, "Enter deep sleep");esp_deep_sleep_start();ESP_LOGI(TAG, "Exit deep sleep");}
}
idf对低功耗的封装是比较完善的,仅需两个函数就可以完成。
esp_sleep_enable_timer_wakeup配置定时器唤醒的时间,单位为微秒。
默认情况下,RTC定时器的时钟源选择的是RC_SLOW_CLK,即内部150kHz振荡器,因为该时钟源的功耗是最小的。如果需要更改时钟源,需要修改CONFIG_RTC_CLK_SRC编译选项。
esp_deep_sleep_start使处理器进入深度睡眠模式;当然也可以调用esp_light_sleep_start进入浅睡眠模式。
下面就是程序的系统打印log。需要注意的是,因为深度睡眠下CPU会断电,内部寄存器的内容丢失,所以唤醒后程序是从头开始执行的。

2.2 按键唤醒
这个例程中配置处理器进入深度睡眠,使用GPIO按键唤醒。
#include "freertos/FreeRTOS.h"
#include "freertos/queue.h"
#include "esp_log.h"
#include "esp_sleep.h"
#include "driver/rtc_io.h"#include <string.h>#define TAG "app"int app_main()
{esp_sleep_wakeup_cause_t cause = esp_sleep_get_wakeup_cause();if (cause == ESP_SLEEP_WAKEUP_EXT0) {ESP_LOGI(TAG, "Wake up by EXT0");}while (1) {ESP_ERROR_CHECK(esp_sleep_enable_ext0_wakeup(0, 0));ESP_ERROR_CHECK(rtc_gpio_pullup_en(0)); // 内部上拉ESP_ERROR_CHECK(rtc_gpio_pulldown_dis(0));ESP_LOGI(TAG, "Enter deep sleep");esp_deep_sleep_start();}
}
如果要在深度睡眠模式下使用GPIO唤醒,必须使用RTC GPIO,ESP32中只有部分GPIO可以复用为该功能。

我使用的是IO0作为唤醒脚。esp_sleep_enable_ext0_wakeup函数传入唤醒IO号和唤醒电平;0就是低电平唤醒,1就是高电平唤醒。
rtc_gpio_pullup/pulldown_dis/en函数配置GPIO的上下拉,我设置成上拉模式。这里要注意即使板子上的IO带了硬件上下拉,但是进入深度睡眠是会关闭VDD电源的,所以还是需要配置。
同样使用esp_deep_sleep_start进入深度睡眠。
下面就是按键唤醒后的系统log。

相关文章:
【ESP32】ESP-IDF开发 | 低功耗管理+RTC唤醒和按键唤醒例程
1. 简介 ESP32支持5种低功耗模式,低功耗管理单元包括调压器、功耗控制器、电源开关单元、电源域隔离单元 (Isolation Cell) 等部分。 1.1 RTC单元 RTC单元是ESP32低功耗管理的核心,可用于管理低功耗模式的进入和退出,控制时钟源、PLL、电源开…...
Windows 局域网IP扫描工具:IPScaner 轻量免安装
IPScaner是一款258KB的工具,具备快捷修改IP、批量扫描、地址计算等功能,自动识别本机IP网段,快速查看IP使用情况,适用于监控维护、企业IT运维等场 软件功能介绍: 1)快捷修改本地IP、IP批量扫描、IP地址计算…...
HTML的浮动与定位
1. 浮动 浮动可以使一个元素脱离自己原本的位置,并在父元素的内容区中向左或向右移动,直到碰到父元素内容区的边界或者其它浮动元素为止。 值描述left元素向左浮动right元素向右浮动 普通文档流:浏览器在默认情况下规定一个块元素在父元素…...
【网络安全 | 漏洞挖掘】我如何通过路径遍历实现账户接管
未经许可,不得转载。 文章目录 不久前,我发现了一个我在高中时非常常用的知名应用程序,它在Intigriti上是一个私有程序,本文称之为REDACTED。 我开始参与REDACTED的漏洞赏金计划,这个应用程序在我开始进行黑客攻击之前我已经非常熟悉了。最初我并没有抱太高的期望。 我首…...
DB-GPT系列(四):DB-GPT六大基础应用场景part1
一、基础问答 进入DB-GPT后,再在线对话默认的基础功能就是对话功能。这里我们可以和使用通义千问、文心一言等在线大模型类似的方法, 来和DB-GPT进行对话。 但是值得注意的是,DB-GPT的输出结果是在内置提示词基础之上进行的回答,…...
SpringCloud篇(服务拆分 / 远程调用 - 入门案例)
目录 一、服务拆分原则 二、服务拆分示例 1. 案例需求 2. 案例要求 3. 导入SQL语句 4. 实现思路 4.1. 创建父工程 cloud-demo 管理依赖 依赖导入思路 4.2. 创建子工程 order-servic 4.3. 创建子工程 user-servic 4.4. 创建 cloud_order 数据库和表并插入数据 4.5. …...
Rust 建造者模式
在DDD中,DTO(数据传输对象)->BO(业务对象)、BO(业务对象)->PO(持久化对象,有的叫DO,即和数据表映射的实体)等等情况要做转换,这里提供以下转换方式 1、from或者try_from trait实现对象转换 需要转换对象满足接收对象的所有…...
ANN DNN CNN SNN
这些缩写代表了不同类型的人工神经网络: • ANN(Artificial Neural Network):人工神经网络,是模仿人脑神经元之间连接和交互方式的计算模型。它由节点(或称为“神经元”)组成的网络,…...
go语言进阶之并发模式
并发模式 并发模式是指在程序设计中同时处理多个任务或进程的方式,以提高效率和响应性 for select循环模式 for select循环模式通常用于处理并发操作,尤其是在需要等待多个通道时。 select的执行过程主要是以下几步 阻塞等待,直到其中一…...
Spring Cloud LoadBalancer:负载均衡的服务调用
在微服务系统中,有时候一个服务会部署多个实例,在我们调用这类实例时,如何实现负载均衡的调用呢?这时候就要用到Spring Cloud的负载均衡组件LoadBalancer了 LoadBalancer简介 LoadBalancer是Spring Cloud官方提供的负载均衡组件,通过它能使客户端在多个服务实例之间分发传…...
微信小程序之轮播图
效果图 实现 <swiper class"banner" indicator-dots"true" indicator-color"rgba(255,255,255,1)" indicator-active-color"#ff0000" autoplay"true" interval"100" circular"true"><swi…...
羲和数据集收集器1.3
为了实现所要求的功能,我们需要进一步完善代码,使其能够处理多种格式的输入文件,并生成符合要求的 JSON 格式的输出文件。具体来说,我们完善了以下内容: 增强 extract_qa_pairs_from_content 函数:使其能够识别和处理不同格式的 QA 对。 确保输出文件的格式正确:每个 Q…...
UE--IOS打包失败 AutomationTool exiting with ExitCode=9 (9)
[Remote] Executing build UATHelper: 打包 (IOS): Setting up bundled DotNet SDK UATHelper: 打包 (IOS): /Users/zyh/UE5/Builds/DESKTOP-FKKSVFQ/Y/UE/UE_5.2/Engine/Build/BatchFiles/Mac/../../../Binaries/ThirdParty/DotNet/6.0.302/mac-x64 UATHelper: 打包 (IOS)…...
第8章利用CSS制作导航菜单
8.1 水平顶部导航栏 水平菜单导航栏是应用范围最广的网站导航设计,一般位于页面顶部。它适用性强,几乎适用于所有类型的网站,且设计难度低。若导航过于普通,无法承载复杂信息结构,在内容模块较多时,则需结…...
UNIX网络编程-TCP套接字编程
概述 TCP客户端/服务器程序示例是执行如下步骤的一个回射服务器: 客户端从标准输入读入一行文本,并写给服务器。服务器从网络输入读入这行文本,并回射给客户端。客户端从网络输入读入这行回射文本,并显示在标准输出上。 TCP服务器…...
美团代付微信小程序 read.php 任意文件读取漏洞复现
0x01 产品描述: 美团代付微信小程序是美团点评旗下的一款基于微信小程序技术开发的应用程序功能,它允许用户方便快捷地请求他人为自己支付订单费用。通过微信小程序,用户可以轻松实现代付操作,无需跳转到其他应用或网页…...
centos7 node升级到node18
使用jenkins发布vue3项目提示node18安装失败 错误日志: /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node18/bin/node: /lib64/libm.so.6: version GLIBC_2.27 not found (required by /var/lib/jenkins/tools/jenkins.plugins.node…...
使用Matlab建立随机森林
综述 除了神经网络模型以外,树模型及基于树的集成学习模型是较为常用的效果较好的预测模型。我们以下构建一个随机森林模型。 随机森林是一种集成学习方法,通过构建多个决策树并结合其预测结果来提高模型的准确性和稳定性。在MATLAB中,可以…...
【江苏-无锡】《无锡市市级政务信息化建设及运行维护项目支出预算标准(试行)》 -省市费用标准解读系列10
2023年3月28日,无锡市政府投资评审中心出台《无锡市市级政务信息化建设及运行维护项目支出预算标准(试行)》,此标准是为进一步提高财政评审效率,规范评审行为,保证评审质量,节约政府投资&#x…...
2024-11-12 问AI: [AI面试题] 您将如何设计一个人工智能系统来预测电信公司的客户流失?
文心一言 设计一个人工智能系统来预测电信公司的客户流失,是一个复杂但至关重要的任务,它涉及到多个步骤和关键要素。以下是一个详细的设计方案: 一、明确需求和目标 在设计智能系统之前,需要明确系统的需求和目标,…...
基于特征图的机器学习模型选择:从静态规则到动态适应
1. 项目概述:从“凭感觉”到“有章法”的模型选择在机器学习项目的实战中,最让人头疼的环节之一,往往不是调参,而是最初那个看似简单的问题:我该用哪个模型?面对Scikit-Learn库里琳琅满目的算法,…...
GTA5线上小助手:终极方案助你高效称霸洛圣都
GTA5线上小助手:终极方案助你高效称霸洛圣都 【免费下载链接】GTA5OnlineTools GTA5线上小助手 项目地址: https://gitcode.com/gh_mirrors/gt/GTA5OnlineTools 厌倦了在GTA5线上模式中重复枯燥的刷钱任务?想要快速解锁所有服装和载具却不知从何入…...
SPT-AKI存档编辑器终极指南:掌握《逃离塔科夫》单机版修改技巧
SPT-AKI存档编辑器终极指南:掌握《逃离塔科夫》单机版修改技巧 【免费下载链接】SPT-AKI-Profile-Editor Программа для редактирования профиля игрока на сервере SPT-AKI 项目地址: https://gitcode.com/gh_m…...
Adobe全系列软件激活指南:5分钟掌握GenP 3.0终极破解技巧
Adobe全系列软件激活指南:5分钟掌握GenP 3.0终极破解技巧 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 你是否在为Adobe Creative Cloud的高昂订阅费用…...
PXE启动Ubuntu时,你的initrd.img配置对了吗?一个参数让无盘启动快3倍
PXE启动Ubuntu时initrd.img的深度调优指南当你在凌晨三点盯着PXE启动进度条缓慢爬升时,是否想过那个看似简单的initrd.img文件里藏着多少性能玄机?作为运维老兵的我在经历了数十次无盘系统部署后,发现90%的PXE启动性能问题都源于initrd配置不…...
量子机器学习在水质预测中的实践:QSVC与QNN模型对比分析
1. 项目概述:当量子计算遇见水质监测作为一名长期关注前沿技术落地的从业者,我最近完成了一个将量子机器学习(QML)应用于水质预测的实践项目。这个项目的核心,是尝试用量子计算的新范式,去解决一个经典的环…...
别再手动筛图了!用OpenCV拉普拉斯方差法,5分钟搞定图像模糊度自动检测
告别低效筛选:基于OpenCV的智能图像模糊检测实战指南在数字图像处理领域,模糊检测一直是影响自动化流程的关键瓶颈。无论是电商平台的商品图片审核,还是摄影作品集的初筛,传统人工肉眼判断的方式不仅效率低下,更难以保…...
突破小红书反爬:5个User-Agent伪装策略与实战指南
突破小红书反爬:5个User-Agent伪装策略与实战指南 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接…...
3分钟解锁网易云音乐加密文件:NCMDump黑科技全攻略
3分钟解锁网易云音乐加密文件:NCMDump黑科技全攻略 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经在网易云音乐下载了心爱的歌曲,却只能在官方App里听?那种感觉就像买了一本好书&#…...
ESXi 6.7性能调优第一步:别急着装系统,先搞定主板BIOS里这4个关键设置
ESXi 6.7性能调优实战:BIOS层四大核心参数深度解析当你以为ESXi的性能瓶颈在于内存分配或存储配置时,可能忽略了最底层的硬件虚拟化支持。我曾亲眼见证一个中型企业的vSphere集群在调整BIOS参数后,虚拟机密度提升了40%,而硬件配置…...
