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

ESP32 GPIO使用

ESP32 GPIO使用

#define GPIO_OUT_PIN 2      //定义引脚号
#define GPIO_OUTPUT_PIN_SEL  (1<<GPIO_OUT_PIN)      //定义输出引脚的宏,用来将输出引脚号转换为位掩码void bsp_gpio_init(){gpio_config_t io_conf;io_conf.pin_bit_mask = GPIO_OUTPUT_PIN_SEL;     //  配置GPIO引脚io_conf.mode = GPIO_MODE_OUTPUT;        //  配置GPIO模式io_conf.pull_up_en = 0;     //  配置上拉电阻io_conf.pull_down_en = 0;   // 配置下拉电阻io_conf.intr_type = GPIO_INTR_ANYEDGE;      //配置GPIO口的中断类型gpio_config(&io_conf);
}

其他可以选择的参数:
intr_type:中断类型
GPIO_PIN_INTR_DISABLE(禁止中断)
GPIO_PIN_INTR_POSEDGE(上升沿触发)
GPIO_PIN_INTR_NEGEDGE(下降沿触发)
GPIO_PIN_INTR_ANYEDGE(边沿触发)
GPIO_PIN_INTR_LOW_LEVEL(低电平触发)
GPIO_PIN_INTR_HIGH_LEVEL(高电平触发)。

mode:GPIO口的工作模式,
GPIO_MODE_INPUT(输入模式)
GPIO_MODE_OUTPUT(输出模式)
GPIO_MODE_INPUT_OUTPUT(输入/输出模式)。

pin_bit_mask:GPIO口的引脚编号
GPIO_INPUT_PIN_SEL(输入引脚)
GPIO_OUTPUT_PIN_SEL(输出引脚)。

pull_down_en:是否启用GPIO口的下拉电阻,可以选择0(禁止)或1(启用)。
pull_up_en:是否启用GPIO口的上拉电阻,可以选择0(禁止)或1(启用)。

示例:

#include <stdio.h>
#include "esp_log.h"
#include"freertos/FreeRTOS.h"
#include"freertos/task.h"
#include"driver/gpio.h"
#include "driver/uart.h"
#include <esp_timer.h>#define GPIO_OUT_PIN 2
#define GPIO_OUTPUT_PIN_SEL  (1<<GPIO_OUT_PIN)#define GPIO_ON gpio_set_level(GPIO_OUT_PIN, 1)     //高电平
#define GPIO_OFF gpio_set_level(GPIO_OUT_PIN, 0)    //低电平static const char* TAG = "MyModule";
//#define BUF_SIZE (1024)
void bsp_gpio_init(){gpio_config_t io_conf;io_conf.pin_bit_mask = GPIO_OUTPUT_PIN_SEL;     //  配置GPIO引脚io_conf.mode = GPIO_MODE_OUTPUT;        //  配置GPIO模式io_conf.pull_up_en = 0;     //  配置上拉电阻io_conf.pull_down_en = 0;   // 配置下拉电阻io_conf.intr_type = GPIO_INTR_ANYEDGE;      //配置GPIO口的中断类型gpio_config(&io_conf);// uart_config_t uart_config = {//         .baud_rate = 115200,//         .data_bits = UART_DATA_8_BITS,//         .parity    = UART_PARITY_DISABLE,//         .stop_bits = UART_STOP_BITS_1,//         .flow_ctrl = UART_HW_FLOWCTRL_DISABLE//     };// uart_param_config(UART_NUM_1, &uart_config);// uart_set_pin(UART_NUM_1, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);// uart_driver_install(UART_NUM_1, BUF_SIZE * 2, 0, 0, NULL, 0);printf("init\n");ESP_LOGI(TAG, "GPIO Init ready!");
}
void app_main(void)
{uint16_t count = 0;bsp_gpio_init();while(1){if(0 == count){count = 1;GPIO_ON;}else{count = 0;GPIO_OFF;}printf("\ncount: %d\n",count);vTaskDelay(1000 / portTICK_PERIOD_MS); /*  1000 / portTICK_PERIOD_MS,表示延时1000ms,portTICK_PERIOD_MS表示每ms有多少个ticks,ticks是一个时间片,一般1ms有1000ticks,如果延时1000ms,则需要1000*1000=1000000ticks。*/}
}

有关ESP_LOGI(TAG, “GPIO Init ready!”);可以看之前文章
https://blog.csdn.net/hongyun1221/article/details/129391697

http://www.lryc.cn/news/33008.html

相关文章:

  • JavaScript 高级4 :正则表达式
  • 如何让AI帮你干活-娱乐(3)
  • webview的工作、内存泄漏、漏洞以及缓存机制原理原理+方案解决
  • BFD协议原理
  • 你把骑行当什么? 它就是你需要的
  • python基础系列 —— 迭代器与内置高阶函数
  • MySQL面试题-日志
  • Android 10.0 去掉Launcher3默认给 icon增加的APK图标白边
  • E900V21C(S905L-armbian)安装armbian-Ubuntu(WiFi)
  • tpc协议的3次握手和4次挥手
  • YOLOv5害虫识别项目代码打包完整上传Gitee仓库(已开源)以及git上传速率限制踩坑记录
  • 从零开始学习c语言|21、动态内存管理
  • swagger关闭/v2/api-docs仍然可以访问漏洞
  • k8s pod调度总结
  • 28个案例问题分析---10---对生产环境的敬畏--生产环境
  • 视觉SLAM十四讲ch7-1视觉里程计笔记
  • 模仿评论样式
  • xxl-job调度中心、执行器源码详解
  • cpp c++summary笔记 复杂类型 “right-left” rule
  • bash编程(马哥)
  • 搭建Gerrit环境Ubuntu
  • 朋友去华为面试,轻松拿到26K的Offer,羡慕了......
  • springboot项目如何配置启动端口
  • IOS - 抓包通杀篇
  • 盒子模型的简介
  • Kubernetes 101,第二部分,pod
  • protobuf序列化解码原理
  • OpenCV——line、circle、rectangle、ellipse、polylines函数的使用和绘制文本putText函数以及绘制中文的方法。
  • 性能平台数据提速之路
  • Dns域名解析服务器