【ESP32填坑日记】问题篇⑥ ESP32-C3低功耗问题

项目背景:

提示:本篇文章同样适用于ESP32其他型号的Bluetooth和WiFi下的功耗问题。

项目背景简述:

  1. 本项目需要在保证Bluetooth功能正常的前提下实现低功耗功能。
  2. 在项目开发中,遇到Demo板发热严重。Demo板只有普通Bluetooth通讯和CAN通讯功能,并无耗电太大的元器件。
  3. 经排除,确认发热是由ESP32-C3这颗MCU引起的,ESP32只使用了Bluetooth,并没有使用WiFi。

提示:本文默认读者已经阅读过官网文档中的睡眠模式应用程序示例

1. 官网对睡眠模式的介绍:

在这里插入图片描述
我们需要了解到以下内容:

  1. ESP32 具有 Light-sleep 和 Deep-sleep 两种睡眠节能模式。
  2. 在 Light-sleep 模式下,
以下是ESP32-C3的休眠和唤醒代码示例: #include "esp_sleep.h" void setup() { //初始化代码 } void loop() { //主循环代码 //进入深度睡眠模式 esp_sleep_enable_timer_wakeup(30000000); //设置定时唤醒时间为30秒 esp_deep_sleep_start(); } //唤醒后执行的代码 void IRAM_ATTR isr_handler(void* arg) { //中断处理代码 } //配置唤醒引脚 esp_sleep_enable_ext0_wakeup(GPIO_NUM_0, 1); //配置GPIO0为唤醒引脚,当引脚电平为高时唤醒 //配置唤醒中断 esp_sleep_enable_ext1_wakeup(BIT64(2), ESP_EXT1_WAKEUP_ANY_HIGH); //配置GPIO2为唤醒引脚,当引脚电平为高时唤醒 //配置唤醒定时器 esp_sleep_enable_timer_wakeup(5000000); //设置定时唤醒时间为5秒 //进入浅度睡眠模式 esp_light_sleep_start(); //配置唤醒中断 gpio_install_isr_service(0); gpio_isr_handler_add(GPIO_NUM_0, isr_handler, (void*) GPIO_NUM_0); //配置GPIO0中断处理函数 //配置唤醒定时器 timer_config_t timer_config = { .alarm_en = true, .counter_en = false, .intr_type = TIMER_INTR_LEVEL, .counter_dir = TIMER_COUNT_UP, .auto_reload = true, .divider = 80 //80MHz时钟分频器,定时器时钟为1MHz }; timer_init(TIMER_GROUP_0, TIMER_0, &timer_config); timer_set_counter_value(TIMER_GROUP_0, TIMER_0, 0); //计数器清零 timer_set_alarm_value(TIMER_GROUP_0, TIMER_0, 5000000); //设置定时器计数值为5秒 timer_enable_intr(TIMER_GROUP_0, TIMER_0); timer_isr_register(TIMER_GROUP_0, TIMER_0, isr_handler, (void*) TIMER_0, ESP_INTR_FLAG_IRAM, NULL); //配置定时器中断处理函数 //进入深度睡眠模式 esp_deep_sleep_start();
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量子君@极客工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值