首页 > 其他分享 >微雪 esp32c3 深度睡眠和 gpio 唤醒

微雪 esp32c3 深度睡眠和 gpio 唤醒

时间:2024-04-26 09:33:20浏览次数:23  
标签:睡眠 微雪 esp esp32 sleep gpio 唤醒 esp32c3

当项目由电源适配器供电时,我们一般不会太关心功耗。但是,如果要使用电池为项目供电,则需要精打细算。

esp32 深度睡眠

在深度睡眠模式下,CPU、大多数 RAM 和所有数字外围设备都可以关闭。从深度睡眠中出来后,芯片通过复位重新启动,并从一开始就开始执行程序。系统无法自动进入深度睡眠模式。 esp_deep_sleep_start() 函数用于配置唤醒源后立即进入深度睡眠。

esp32 深度睡眠唤醒源

esp32c3 可以使用 定时器 gpio 等方式唤醒。

esp32 唤醒源:定时器

esp32RTC 控制器具有一个内置定时器,您可以在预定义的时间后用来唤醒 ESP32。

此功能在需要时间戳或日常任务的同时保持低功耗的项目中特别有用。

esp_sleep_enable_timer_wakeup(time_in_us) 函数用于将计时器配置为唤醒源。

#define uS_TO_S_FACTOR 1000000ULL  /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP  5           /* Time ESP32 will go to sleep (in seconds) */

void setup(){
  Serial.begin(115200);
  delay(2000); // 给于一定的时间用于开启 Serial 控制台,在深度睡眠的时候是无法连接 esp32 的
  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
  
  Serial.println("Going to sleep now");
  esp_deep_sleep_start();
}

这个程序将每 5s 唤醒一次,然后再次入睡。

esp32 唤醒源:gpio 唤醒

有时候我们需要通过按钮来唤醒 esp32。这里通过 gpio0 来唤醒。注意 esp32c3 只能通过 gpio 0-5 来唤醒。

代码演示使用 gpio0 触发低电平(接地)来唤醒。

void setup(){
  Serial.begin(115200);
  delay(2000); // 给于一定的时间用于开启 Serial 控制台,在深度睡眠的时候是无法连接 esp32 的
  
  // 要使得 gpio0 唤醒,下面 2 行代码是关键
  gpio_set_direction(GPIO_NUM_0, GPIO_MODE_INPUT);
  esp_deep_sleep_enable_gpio_wakeup(BIT(0), ESP_GPIO_WAKEUP_GPIO_LOW);

  Serial.println("Going to sleep now");
  esp_deep_sleep_start();
}

标签:睡眠,微雪,esp,esp32,sleep,gpio,唤醒,esp32c3
From: https://www.cnblogs.com/manastudent/p/18159225

相关文章

  • 15_pinctl和gpio子系统
    pinctl和gpio子系统1.什么是pinctrl和gpio子系统?​ pinctrl子系统是用来设置引脚的复用关系和电气属性的,gpio子系统是当pinctrl子系统把引脚的复用关系设置为gpio功能以后就可以使用gpio子系统来操作引脚了,比如引脚的输入输出,高低电平等2.LinuxPinctrl子系统提供的功能是......
  • 关于引脚复用,不得不提的GPIO_PinSource 和GPIO_Pin
    调整前的代码GPIO_PinAFConfig(GPIOA,GPIO_Pin_9,GPIO_AF_4);GPIO_PinAFConfig(GPIOA,GPIO_Pin_10,GPIO_AF_4);调整后的代码GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_4);GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_4);  不难看出,该工程师调整的就是上面红色参......
  • 微雪 esp32c3 墨水屏显示 demo
    先看esp32c3使用platformio开发墨水屏简介这篇文章,这篇文章中详细说明了从创建项目到烧录代码的整个过程。如果屏幕使用的是H029A01型号能够局部刷新,屏幕驱动关键代码为:GxEPD2_BW<GxEPD2_290,GxEPD2_290::HEIGHT>display(GxEPD2_290(SS,5,2,3));(微雪esp32c3)在使......
  • ZYNQ的gpio的硬件驱动库知识
    对于ZYNQ的硬件驱动库编程方法,我这边用STM32的标准库函数方法来对应。也就是说在ZYNQ里面有给定的官方的标准驱动库,将原本的寄存器方法给一定程度的封装起来。类似于stm32学习过程中给的库函数版本,将你从寄存器版本中解救出来(虽然会影响运行效率,但是这种普通开发者可忽略不计)像......
  • STM32F10系列开发板的GPIO介绍
    1.GPIO介绍GPIO是控制或者采集外部器件的信息的外设,即负责输入输出。它按组分配,每组16个IO口,组数视芯片而定。STM32F103ZET6芯片是144脚的芯片,具有GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF和GPIOG七组GPIO口,共有112个IO口可供我们编程使用2.GPIO八种功能模......
  • 不到2000字,轻松带你搞懂STM32中GPIO的8种工作模式
    大家好,我是知微!学习过单片机的小伙伴对GPIO肯定不陌生,GPIO(generalpurposeinputoutput)是通用输入输出端口的简称,通俗来讲就是单片机上的引脚。在STM32中,GPIO的工作模式被细分为8种,对于初学者来讲,要理解它们可太难了!诶诶诶,给个机会,先别急着退出哈!这不是有我在呢,跟着这篇文......
  • STM32 GPIO输入检测——按键
    前言在嵌入式系统开发中,对GPIO输入进行检测是一项常见且关键的任务。STM32微控制器作为一款功能强大的处理器,具有丰富的GPIO功能,可以轻松实现对外部信号的检测和处理。在本文中,我们将深入探讨如何在STM32微控制器上进行GPIO输入检测,并介绍两种常见的方法:轮询检测和中断检测。......
  • 探秘STM32 GPIO位带操作:释放硬件潜能,轻松驾驭IO
    前言在嵌入式系统开发中,对于STM32微控制器的GPIO操作,位带操作是一种强大而精巧的技术。通过位带操作,我们可以更加高效地操纵单个GPIO引脚,释放硬件的潜能,实现更快速、更精确的IO控制。本文将深入探讨STM32GPIO位带操作的奥秘,带领读者一窥其中的精妙之处。GPIO位带操作是什么?......
  • 【STM32】Gpio通用输入输出功能应用笔记
    文章目录一、前言1.1开发环境1.2GPIO电路原理1.3板卡电路原理1.3.1按键电路原理1.3.2Led电路原理1.3.3Beep电路原理二、功能实现2.1配置STM32Cubemx工程2.2KeilMDK工程编码2.2.1按键功能代码2.2.2LED灯功能代码2.2.3Beep功能代码2.2.4Main函数代码2.2.5K......
  • GPIO端口的BSRR的使用
    BSRR只写寄存器既能控制管脚为高电平,也能控制管脚为低电平。对寄存器高16bit写1对应管脚为低电平,对寄存器低16bit写1对应管脚为高电平。写0,无动作首先看GPIOC的定义接着看这个类型的定义可以看到BSRR为无符号的32位的整形接下来看GPIO_Pin_13的定义可以看......