当前位置:网站首页>ESP32-ULP协处理器低功耗模式RTC GPIO中断唤醒
ESP32-ULP协处理器低功耗模式RTC GPIO中断唤醒
2022-07-07 06:15:00 【晨之清风】
陈拓 2022/07/06-2022/07/06
1. 概述
该示例展示了当 ULP 通过 WAKE 指令向 RTC 控制器发送中断信号时,主程序该如何配置中断处理函数以响应该中断信号。
- RTC GPIO
RTC GPIO 一共有 18 个 IO 口,这些 GPIO 管脚具有低功耗 RTC 性能和模拟功能,并且由 ESP32 的 RTC 子系统控制。这些功能不使用 IO_MUX 和 GPIO 交换矩阵,而是使用 RTC_MUX 将 IO 指向 RTC 子系统。
当这些管脚被配置为 RTC GPIO 管脚时,作为输出的管脚能够在芯片处于 Deep-Sleep 睡眠状态下保持输出电平值,或者作为输入管脚使用时可以将芯片从 Deep-Sleep 中唤醒。
下表列出了 RTC 管脚和其对应的 GPIO 管脚
ULP 中断发送官方例程在ESP-IoT-Solution库中:
- ESP-IoT-Solution 简介
RTC GPIO
官方文档:
https://docs.espressif.com/projects/espressif-esp-iot-solution/zh_CN/latest/gettingstarted.html
- ESP-IoT-Solution 版本
不同版本的 ESP-IoT-Solution 说明如下:
- ESP-IoT-Solution 编程指南
https://docs.espressif.com/projects/espressif-esp-iot-solution/zh_CN/latest/index.html
2. 获取 ESP-IoT-Solution
- 获取命令
如果从乐鑫官方的github库下载有困难,可以先在gitee上克隆一个库,然后从gitee上下载。下面是从我克隆的库下载,我的库是私有的,你需要自己克隆一个。
- 下载esp-iot-solution v1.1
cd ~/esp
git clone -b release/v1.1 --recursive https://gitee.com/chentuo2000/esp-iot-solution.git
从gitee克隆库下载时,主体很顺利,在下载子模块时遇到麻烦,需要手动下载下面的子模块:
按照源和对应的安装路径手工下载。
如果你还下载不了,可以从下面的链接下载这3个子模块:
下载Adafruit-GFX-Library.tar.gz
https://download.csdn.net/download/chentuo2000/85481416
下载ugfx.tar.gz
https://download.csdn.net/download/chentuo2000/85481491
下载lvgl.tar.gz
https://download.csdn.net/download/chentuo2000/85481538
3. 开发环境
《用乐鑫国内Gitee镜像搭建ESP32开发环境》
https://zhuanlan.zhihu.com/p/348106034
https://blog.csdn.net/chentuo2000/article/details/113424934?spm=1001.2014.3001.5501
4. 构建项目
- 官方例程
ULP 中断发送程序的例子:
https://github.com/espressif/esp-iot-solution/tree/release/v1.1/examples/ulp_examples/ulp_send_interrupt
根据 ULP 的 WAKE 指令说明:
-- 如果主CPU处于睡眠模式,且ULP唤醒被使能,则该中断信号会唤醒主CPU;
-- 如果主CPU处于非睡眠模式,且RTC中断使能寄存器(RTC_CNTL_INT_ENA_REG)中对应的ULP中断使能位(RTC_CNTL_ULP_CP_INT_ENA)被置位,则中断信号会触发RTC控制器产生一个中断;
以下为 ULP 中断注册和中断处理函数:
- 复制官方例程
将官方例子项目复制到ESP-IDF开发工具之外:
cd ~/esp
cp -r ~/esp/esp-iot-solution/examples/ulp_examples/ulp_send_interrupt ~/esp/
- 项目树
cd ulp_send_interrupt
- 刷新esp-idf环境
get_idf
注意:每次打开终端进入sdk都要执行一次此命令
- 设定目标芯片
idf.py set-target esp32
- 清除以前的构建
- 配置项目
idf.py menuconfig
1) 设置Flash存储器大小为4MB
2) ULP默认时开启的
3) 选择Support array 'rtc_gpio_desc' fot ESP32
否则编译时会出现error: 'rtc_gpio_desc' undeclared
保存,退出。
- 编译项目
idf.py build
- 烧写项目
查看USB转串口的COM口号:
烧写:
idf.py -p /dev/ttyS3 -b 115200 flash
- 启用监视器
idf.py monitor -p /dev/ttyS3
5. 示例测试
示例启动后,ULP会一直处于周期(时间为20ms)运行状态,检测GPIO0是否被按下。在按键被按下且释放时:
-- 如果主CPU处于睡眠模式,则该操作会唤醒主CPU;
-- 如果主CPU处于非睡眠模式,则该操作会发送一个RTC中断,中断程序完成相应的处理后,将主CPU设置进入睡眠模式;
系统的日志打印如下:
边栏推荐
- Mountaineering team (DFS)
- Laravel8 uses passport login and JWT (generate token)
- JS的操作
- [Chongqing Guangdong education] audio visual language reference materials of Xinyang Normal University
- 【微信小程序:缓存操作】
- 测试人一定要会的技能:selenium的三种等待方式解读,清晰明了
- 阿里p8推荐,测试覆盖率工具—Jacoco,实用性极佳
- Opencv converts 16 bit image data to 8 bits and 8 to 16
- Interpolation lookup (two methods)
- 求有符号数的原码、反码和补码【C语言】
猜你喜欢
详解华为应用市场2022年逐步减少32位包体上架应用和策略
All about PDF crack, a complete solution to meet all your PDF needs
oracle一次性说清楚,多种分隔符的一个字段拆分多行,再多行多列多种分隔符拆多行,最终处理超亿亿。。亿级别数据量
Other 7 features of TCP [sliding window mechanism ▲]
[MySQL] detailed explanation of trigger content of database advanced
路由信息协议——RIP
【踩坑】nacos注册一直连接localhost:8848,no available server
Data type - floating point (C language)
JS的操作
How to realize sliding operation component in fast application
随机推荐
最长上升子序列模型 AcWing 1017. 怪盗基德的滑翔翼
南京商品房买卖启用电子合同,君子签助力房屋交易在线网签备案
How to add a mask of a target in a picture
A single game with goods increased by 100000, and the rural anchor sold men's clothes on top of the list?
go写一个在一定时间内运行的程序
Sign and authenticate API interface or H5 interface
Input and output of floating point data (C language)
Explain Huawei's application market in detail, and gradually reduce 32-bit package applications and strategies in 2022
Quick sorting (detailed illustration of single way, double way, three way)
IP地址的类别
GOLand idea intellij 无法输入汉字
xray的简单使用
ES6_ Arrow function
Greenplum6.x常用语句
selenium自动化集成,八年测试经验软测工程师,一篇文章带你学懂
About using CDN based on Kangle and EP panel
Greenplum 6.x reinitialization
[hard core science popularization] working principle of dynamic loop monitoring system
Redis summary
指针进阶,字符串函数