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
相关文章:
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_SE…...
JavaScript 高级4 :正则表达式
JavaScript 高级4 :正则表达式 Date: January 19, 2023 Text: 正则表达式、正则表达式特殊字符、正则表达式中的替换 目标: 能够说出正则表达式的作用 能够写出简单的正则表达式 能够使用正则表达式对表单进行验证 能够使用正则表达式替换内容 正则…...
如何让AI帮你干活-娱乐(3)
背景今天的话题会偏代码技巧一些,对于以前没有接触过代码的朋友或者接触代码开发经验较少的朋友会有些吃力。上篇文章介绍了如何广视角的生成相对稳定的视频。昨天的实现相对简单,主要用的是UI界面来做生成。但是生成的效果其实也显而易见,不…...
webview的工作、内存泄漏、漏洞以及缓存机制原理原理+方案解决
分析一段appium的日志来分析webview的工作原理,文章尾部附有自动化脚本及完整日志: 解析: 获取上下文列表 服务端发送命令adb shell cat /proc/net/unix获取域套接字列表。那什么是域套接字呢? 域套接字:是unix系统里…...
BFD协议原理
BFD协议原理引入背景不使用BFD带来的问题OSPF感知慢VRRP产生次优路径BFD技术简介BFD会话建立方式和检测机制BFD会话建立过程BFD工作流程BFD的单臂回声BFD默认参数以及调整方法总结引入背景 随着网络应用的广泛部署,网络发生中断可能影响业务正常运行并造成重大损失…...
你把骑行当什么? 它就是你需要的
1.骑行是一种有活力的运动,尝试一下你一定会喜欢上它的!2.把骑行当作一种娱乐,让自己快乐地体验自然的美!3.骑行可以帮助你改变心态,让你的心情变得更加愉悦!4.让骑行成为你每天的计划,看看骑行…...
python基础系列 —— 迭代器与内置高阶函数
目录 一、迭代器 1、基本概念 2、如何定义一个迭代器 3、如果判断对象是否是迭代器 4、如何重置迭代器 5、如何调用迭代器 二、高阶函数 1、map函数 2、filter函数 3、reduce函数 4、sorted函数 一、迭代器 1、基本概念 迭代:是一个重复的过程,每次重复…...
MySQL面试题-日志
目录 1.MySQL 中常见的日志有哪些? 2.慢查询日志有什么用? 3.binlog 主要记录了什么? 4.Mysql的binlog有几种录入格式?分别有什么区别? 5.redo log 如何保证事务的持久性? 6.页修改之后为什么不直接刷…...
Android 10.0 去掉Launcher3默认给 icon增加的APK图标白边
1.概述 在10.0的系统产品开发中,Launcher3定制化开发中,发现在给第三方app的icon绘制图标的时候,会有白边第三方app的图标没有完全绘制出来,而系统app不存在这个问题,是完全绘制出来的,所以需要分析图标绘制类来解决这个问题 2.去掉Launcher3默认给 icon增加的APK图标白…...
E900V21C(S905L-armbian)安装armbian-Ubuntu(WiFi)
基本上是s905L芯片的刷机都是如此,包括Q7等 在网上寻找好多的教程关于e900v21c的刷机包和教程都少的可怜,唯一的就是这个:山东联通版创维E900V21C盒子刷入Armbiam并安装宝塔和Docker,但他是不能用WiFi和蓝牙的然后就是寻找s90l的…...
tpc协议的3次握手和4次挥手
建立连接的3次握手过程: A: 我想和你建立连接,你收到我的请求吗?(我想娶你) B: 好的,我收到了你的请求,我们可以建立连接,我同意。(好的,我愿意嫁给你) A: 好的,我收到了你的回应,我…...
YOLOv5害虫识别项目代码打包完整上传Gitee仓库(已开源)以及git上传速率限制踩坑记录
YOLOv5害虫识别项目代码打包完整上传Gitee仓库(已开源)以及git上传速率限制踩坑记录 ps: 最近很多小伙伴需要这个害虫识别项目的源码,由于文件过大,所以将代码完整上传至gitee,所有文件、教程、论文、以及代码模型…...
从零开始学习c语言|21、动态内存管理
一、malloc函数 1、什么是malloc函数 malloc是memery(内存)和allocate(分配)的缩写,顾名思义,malloc函数为动态分配内存的意思 2、malloc函数语句 int *p(int *)malloc(sizeof(int))malloc函数的形参为申请的内存空间大小,上述申请了一个i…...
swagger关闭/v2/api-docs仍然可以访问漏洞
今天接到安全团队的说swagger有未授权访问漏洞,即使在swagger关闭的情况下http://127.0.0.1:8086/agcloud/v2/api-docs?group%E7%94%A8%E6%88%B7%E5%85%B3%E8%81%94%E4%BF%A1%E6%81%AF%E6%A8%A1%E5%9D%97仍然还能访问。 看了下原来是有写一个拦截器 registry.addI…...
k8s pod调度总结
在Kubernetes平台上,我们很少会直接创建一个Pod,在大多数情况下会通过控制器完成对一组Pod副本的创建、调度 及全生命周期的自动控制任务,如:RC、Deployment、DaemonSet、Job 等。本文主要举例常见的Pod调度。1全自动调度功能&…...
28个案例问题分析---10---对生产环境的敬畏--生产环境
一:背景介绍 1:上午9:23,老师没有进行上课,但是却又很多的在线人员,并且在线人员的时间也不正确。 2:开发人员及时练习用户,查看用户上课情况。 3:10点整,询问项目组长发…...
视觉SLAM十四讲ch7-1视觉里程计笔记
视觉SLAM十四讲ch7-1 视觉里程计笔记本讲目标从本讲开始,开始介绍SLAM系统的重要算法特征点法ORB特征BRIEF实践特征提取与匹配2D-2D:对极几何八点法求E八点法的讨论从单应矩阵恢复R,t小结三角化。 符号读作*指向AA的指针(总在左侧)[]容纳AA的数组(总在左侧)()返…...
2025年—ComfyUI面部与手部修复实战指南:从插件选择到模型优化
1. ComfyUI面部修复插件深度对比 在AI绘画领域,面部修复一直是让新手头疼的问题。相比WebUI的一键式ADetailer插件,ComfyUI需要更手动化的操作流程,但这反而让我们能更深入理解AI修复的底层逻辑。2025年最新版的ComfyUI中,有两个插…...
告别打包烦恼:Qt Installer Framework 4.6 保姆级教程,从配置到生成exe安装包
Qt Installer Framework 4.6 终极实战指南:从零构建专业级安装包 当你终于完成了一个Qt应用的开发,编译了Release版本,甚至用windeployqt处理了依赖,接下来面临的挑战是如何将这些文件打包成一个专业的安装程序。这正是Qt Instal…...
PLECS 4.7模拟下的特斯拉Model 3电驱系统三步搭建与性能分析:从双闭环Boost电...
基于PLECS4.7的特斯拉Model3电驱仿真及报告 电驱系统仿真搭建过程,由三步构成,分别为:双闭环Boost电路搭建、三相逆变电路搭建,电机控制电路搭建。 双闭环Boost电路输入电压370V,输出电压为500V,实现50kW输…...
复现瓦斯抽采钻孔间距优化的二维数值模拟研究模型
复现论文《瓦斯抽采钻孔间距优化三维数值模拟量化研究》模型 模型为二维 不是论文的三维图 钻孔间距优化的数学建模手记 最近在复现某篇瓦斯抽采钻孔优化的论文时,发现原论文的三维模型对计算资源要求太高。为了快速验证核心结论,我决定将模型简化到二维…...
春晚具身机器人惊艳亮相,具身智能行业即将迎来黄金时代?高薪岗位火热招聘,这份求职指南你值得拥有!
今年春晚,具身又迎来了高光时刻。不少朋友看完后找我调侃,这几家上春晚的公司估值又要拉升了。其中,宇树的武术表演实在惊叹,双截棍、后空翻,把全球机器人运控能力拉升了一个档次,unitree可以说是断层领先。…...
百川2-13B模型中文OCR增强:OpenClaw图片信息提取优化
百川2-13B模型中文OCR增强:OpenClaw图片信息提取优化 1. 为什么需要OCR增强的智能体 上个月在处理一份电子合同时,我遇到了一个典型问题:合同是扫描件图片格式,我需要从中提取关键条款、金额和日期等信息。手动录入不仅耗时&…...
comsol18650圆柱形电池组流体直冷热管理仿真 采用电化学-热-流场耦合/集总电池-流场...
comsol18650圆柱形电池组流体直冷热管理仿真 采用电化学-热-流场耦合/集总电池-流场耦合仿真模型 模拟电池组在充放电工况下,湍流流体介质直冷的散热模式下电池的电性能,热参数变化「这年头搞电池热管理,谁还没被18650的散热问题卡过脖子&…...
1746-NR4电阻模拟输入
1746-NR4 模拟输入模块(电阻输入)特点由 Allen-Bradley 生产,属于 SLC 500 系列类型为 模拟输入模块,专门用于电阻信号采集提供 4 路独立输入通道支持热电偶、RTD(热电阻)及其他电阻传感器输入精度高&#…...
“COMSOL仿真实现平板电极流注放电:结合等离子体空气反应框架与速率系数求解”
comsol仿真,流注放电仿真,平板电极流注放电。 已复现文献。 包含等离子体空气反应框架。 速率系数求解。 采用等离子体模块。 。流注放电仿真是一种研究等离子体生成和传播机制的重要工具。通过COMSOL仿真,我们可以直观地观察等离子体在不同介…...
计算机毕业设计springboot基于的乡村有机产品交易平台的设计与实现 基于Spring Boot的农特产品线上购销管理系统 利用Spring Boot构建的乡村绿色农产品电商服务平台
计算机毕业设计springboot基于的乡村有机产品交易平台的设计与实现(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着互联网技术的深度普及与电子商务的蓬勃发展,消…...
