当前位置: 首页 > java >正文

ESP32配置GPIO,实现每0.5秒翻转LED电平

一、控制LED每隔0.5秒翻转电平

#define LED_PIN GPIO_NUM_27void led_task(void *pvParameters)
{// 配置GPIOgpio_config_t io_conf = {.pin_bit_mask = (1ULL << LED_PIN),  // 设置GPIO27为输出引脚.mode = GPIO_MODE_OUTPUT,           // 配置为输出模式.pull_up_en = GPIO_PULLUP_DISABLE,  // 禁用上拉电阻.pull_down_en = GPIO_PULLDOWN_DISABLE, // 禁用下拉电阻.intr_type = GPIO_INTR_DISABLE      // 禁用中断};gpio_config(&io_conf);while(1) {// 翻转LED状态static uint8_t level = 0;gpio_set_level(LED_PIN, level);level = !level;// 延时500msvTaskDelay(pdMS_TO_TICKS(500));}
}

这段代码是对一个 gpio_config_t 类型的结构体变量 io_conf 进行初始化,然后通过调用 gpio_config(&io_conf) 函数对 GPIO 引脚进行配置。

  • .pin_bit_mask = (1ULL << LED_PIN)pin_bit_mask 字段用于指定要配置的 GPIO 引脚位掩码。这里 (1ULL << LED_PIN) 表示将 LED_PIN 对应的位设置为 1,其余位为 0。1ULL 是一个无符号长整型常量,通过左移操作将其移到 LED_PIN 对应的位位置,从而实现对指定引脚的选取。例如,如果 LED_PIN 定义为 27,则该表达式的结果是第 27 位为 1,其余位为 0 的 64 位无符号整数,表示选中 GPIO27。
  • .mode = GPIO_MODE_OUTPUTmode 字段用于设置 GPIO 的工作模式,这里将其设置为 GPIO_MODE_OUTPUT,即输出模式,表示该引脚被配置为输出引脚。
  • .pull_up_en = GPIO_PULLUP_DISABLEpull_up_en 字段用于控制是否启用上拉电阻。GPIO_PULLUP_DISABLE 表示禁用上拉电阻,即不对该引脚启用内部的上拉电阻。
  • .pull_down_en = GPIO_PULLDOWN_DISABLEpull_down_en 字段用于控制是否启用下拉电阻。GPIO_PULLDOWN_DISABLE 表示禁用下拉电阻,即不对该引脚启用内部的下拉电阻。
  • .intr_type = GPIO_INTR_DISABLEintr_type 字段用于设置 GPIO 的中断类型。GPIO_INTR_DISABLE 表示禁用中断,即该引脚不会产生中断信号。

gpio_config_t 结构体中,除了上述字段外,还有其他一些可用的选项,以下是详细介绍:

二、其他可用的 GPIO 引脚配置选项

  1. GPIO 引脚工作模式(mode)选项

    • GPIO_MODE_INPUT:输入模式。引脚用于接收外部信号,此时通常会结合上拉或下拉电阻配置(如果需要)来确保引脚电平稳定。
    • GPIO_MODE_OUTPUT_OD:开漏输出模式。在这种模式下,引脚只能输出低电平或者高阻态。需要外部上拉电阻来将引脚拉高,常用于多个设备共享一条总线的情况,可以有效避免引脚电平冲突。
    • GPIO_MODE_INPUT_OD:开漏输入模式。引脚在输入模式下具有开漏特性,一般也需要外部上拉或下拉电阻来配合使用,用于特殊的输入场景,如一些带有线与功能的总线信号输入。
    • GPIO_MODE_DISABLE:禁用模式。引脚的功能被禁用,不会作为 GPIO 使用,可能用于其他外设功能或者完全不使用该引脚。
  2. GPIO 引脚上拉电阻配置(pull_up_en)选项

    • GPIO_PULLUP_ENABLE:启用上拉电阻。当引脚处于输入模式时,上拉电阻会将引脚电平拉高到高电平状态,防止引脚电平悬空,在一些需要默认高电平的场景下很有用,比如连接按键的一端接地,另一端接 GPIO 引脚,启用上拉电阻后,按键未按下时引脚为高电平,按键按下时引脚为低电平。
  3. GPIO 引脚下拉电阻配置(pull_down_en)选项

    • GPIO_PULLDOWN_ENABLE:启用下拉电阻。与上拉电阻相反,下拉电阻会将引脚电平拉低到低电平状态,适用于需要默认低电平的场景,例如连接一个上拉的按键到 GPIO 引脚,启用下拉电阻后,按键未按下时引脚为低电平,按键按下时引脚为高电平。
  4. GPIO 引脚中断类型(intr_type)选项

    • GPIO_INTR_LOW_LEVEL:低电平触发中断。当引脚电平持续为低电平时,产生中断。
    • GPIO_INTR_HIGH_LEVEL:高电平触发中断。当引脚电平持续为高电平时,产生中断。
    • GPIO_INTR_FALLING_EDGE:下降沿触发中断。当引脚电平从高变低时,产生中断。
    • GPIO_INTR_RISING_EDGE:上升沿触发中断。当引脚电平从低变高时,产生中断。
    • GPIO_INTR_ANYEDGE:任意边沿触发中断。当引脚电平发生跳变(无论是上升沿还是下降沿)时,都产生中断。
http://www.xdnf.cn/news/5296.html

相关文章:

  • python笔记和练习----少儿编程课程【阶段二(二)】
  • C++--类的构造函数与初始化列表差异
  • 抖音视频上传功能测试全维度拆解——从基础功能到隐藏缺陷的深度挖掘
  • 【八股消消乐】项目中如何优化JVM内存分配?
  • [题解]2023CCPC黑龙江省赛 - Ethernet
  • Java多线程同步方法ReentrantLock显式锁实现方式
  • Python数据分析
  • Spring 6.x 详解介绍
  • 【从零实现JsonRpc框架#1】Json库介绍
  • 基于NI-PXI的HIL系统开发
  • MySQL 1366 - Incorrect string value:错误
  • MySQL:视图
  • 串口屏调试 1.0
  • ComfyUI 如何安装ComfyUI_SLK_joy_caption_two
  • window环境下,如何通过USB接口控制打印机
  • 质心均匀体(引力屏蔽技术)
  • 算法训练营第十三天|226.翻转二叉树、101. 对称二叉树、 104.二叉树的最大深度、111.二叉树的最小深度
  • 多模态大模型中的视觉分词器(Tokenizer)前沿研究介绍
  • 【入门】数字走向II
  • JavaScript 数组去重:11 种方法对比与实战指南
  • 什么是 B2B?2B 产品销售怎么找客户?
  • Unity基础学习(十)Camera组件
  • [ctfshow web入门] web67
  • JVM对象创建内存分配
  • [特殊字符]️ 快速检测与修复TLS 1.0/1.1漏洞指南
  • 人形机器人:主控芯片
  • 红黑树算法笔记(二)性能对比实验
  • 解密数据结构之位图和布隆过滤器
  • TCP IP
  • 社区商城分销团长扩充与扩散策略优化的系统方案