ESP8266 SDK开发: 外设篇-GPIO输入检测
前言
官方提供了以下函数检测引脚输入状态

检测GPIO5
if( GPIO_INPUT_GET(5) == 0 ) GPIO5当前为低电平
if( GPIO_INPUT_GET(5) == 1 ) GPIO5当前为高电平
检测输入的第一种方式
在引脚为输出的状态下,检测引脚输入状态
注:该模式应用于检测引脚输出的高低电平状态.
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U , FUNC_GPIO5);
GPIO_OUTPUT_SET(5, 1);//设置GPIO5输出高电平(控制继电器吸合)
if(GPIO_INPUT_GET(5) == 1)
{
printf("\r\n 继电器引脚输出高电平 \r\n");
}



另外:如果某个引脚控制传感器,传感器本身引脚有很强的拉低能力,也可以用此模式检测
列如:开发板的GPIO0外接的按钮

如想检测其是否按下:
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U , FUNC_GPIO0);
GPIO_OUTPUT_SET(0, 1);//设置GPIO0输出高电平
if(GPIO_INPUT_GET(0) == 0)
{
//按钮按下
}
原因:
即使控制引脚输出了高电平,当按下按钮的时候,引脚接地,引脚强制被拉低.
注意:如果所接传感器的输出能力不强,则需要看下面第二种方式
检测输入的第二种方式
补充一个知识点
设置引脚输入上拉 PIN_PULLUP_EN(引脚的寄存器地址)

检测输入的时候设置管脚为输入然后再做检测
注:该模式主要应用于和芯片之间通信
以下为检测GPIO0的输入
// PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U , FUNC_GPIO0);//GPIO0作为普通IO功能(以前设置过作为普通IO,不需要重复设置)
GPIO_DIS_OUTPUT(0);//如果以前设置过GPIO为输出,则调用此函数关闭GPIO0输出
PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO0_U);//上拉输入
if(GPIO_INPUT_GET(0) == 0)
{
//引脚被拉低
}

其它
配置多个引脚为输入

GPIO_AS_INPUT(BIT2 | BIT13); //配置GPIO2,GPIO13为输入
ESP8266 SDK开发: 外设篇-GPIO输入检测的更多相关文章
- ESP8266 LUA脚本语言开发: 外设篇-GPIO输入检测
咱使用 GPIO0 https://nodemcu.readthedocs.io/en/master/modules/gpio/#gpioread 第一种 GPIO设置为输出的状态下读取引脚状态 gp ...
- ESP8266 SDK开发: 外设篇-GPIO输出高低电平
前言 官方提供了两个函数 GPIO_OUTPUT_SET(gpio_no, bit_value) 设置GPIO2输出高电平 GPIO_OUTPUT_SET(2, 1); 设置GPIO2输出低电平 GP ...
- ESP8266 LUA脚本语言开发: 外设篇-GPIO中断检测
https://nodemcu.readthedocs.io/en/master/modules/gpio/#gpiomode 测试引脚 GPIO0 gpio.mode(,gpio.INT) func ...
- ESP8266 SDK开发: 外设篇-串口
串口分布 串口切换说明 1.默认所有的数据都使用串口0输出 官方提供了函数可以选择printf利用哪一个串口输出 配置printf使用串口1打印输出,波特率115200 (注:这样配置对于调试程序很有 ...
- ESP8266 LUA脚本语言开发: 外设篇-GPIO输出高低电平
前言 所有的LUA开发API参考 https://nodemcu.readthedocs.io/en/master/en/modules/gpio/ 原理图 让GPIO2输出高电平只需 gpio.mo ...
- esp8266 SDK开发之环境搭建
最近在弄这个WiFi模块,发现网上SDK开发方面的资料很少,发现了一套视频教程,不过主讲人的讲课方式实在受不了.对基于SDK开发感兴趣的同学可以通过本帖在Ubuntu系统上通过Eclipes搭建开发环 ...
- ESP8266 SDK开发: 测试下诱人的程序
前言 这一节测试一下诱人的程序 实现的功能,APP通过SmartConfig给Wi-Fi模块配网并绑定设备,然后通过MQTT远程控制开发板的继电器, APP显示ESP8266采集的温湿度数据. 简而言 ...
- ESP8266 LUA脚本语言开发: 外设篇-串口
https://nodemcu.readthedocs.io/en/master/modules/uart/ 串口发送数据 发送一个16进制到串口 uart.write(0, 0xaa) 注: 之所以 ...
- ESP8266 LUA脚本语言开发: 外设篇-定时器,延时,看门狗
https://nodemcu.readthedocs.io/en/master/modules/tmr/ local mytimer1 = tmr.create() function TimeFun ...
随机推荐
- guava(四)区间Ranges
一.构建区间 (a..b) open(C, C) [a..b] closed(C, C) [a..b) closedOpen(C, C) (a..b] openClosed(C, C) (a..+∞) ...
- 环境变量对于 VS 有什么用?
一.前言 环境变量可以用来组织 VS 工程目录.VS 作为一个 IDE,其天职在于帮开发者组织好工程,主要包括对工程中源文件.库文件的组织.(本质上是提供一个可视化的操作界面,让开发者方便的定义编译器 ...
- CSS改变浏览器默认滚动条样式
前言 最近总是看到某网站滚动条不是浏览器默认样式,而是自定义样式 比如我博客的滚动条,自定义滚动条样式和hover前后的效果 顿时来了兴致和有一个疑问,这是怎么实现的呢? 解决 注:经测试,目 ...
- Ubuntu 16.04上源码编译和安装pytorch教程,并编写C++ Demo CMakeLists.txt | tutorial to compile and use pytorch on ubuntu 16.04
本文首发于个人博客https://kezunlin.me/post/54e7a3d8/,欢迎阅读最新内容! tutorial to compile and use pytorch on ubuntu ...
- Windows Form父子两个窗体之间的传值测试
1:先看测试的效果图: 2:全部的代码 using System; using System.Windows.Forms; namespace WindowsForms { public partia ...
- Python - 面向对象 - 第二十天
Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过 ...
- SQL server已经设置为单用户模式,Sql server还原失败数据库正在使用,无法获得对数据库的独占访问权
如果已经设置为单用户模式,还是报这个错误的话,就按照一下SQL执行就
- MySQL 8.0.18安装教程(windows 64位)
目录 1-先去官网下载点击的MySQL的下载 2-配置初始化的my.ini文件的文件3-初始化MySQL4-安装MySQL服务 + 启动MySQL 服务5-连接MySQL + 修改密码 * 第一项 ...
- Python基础21
对轴0,轴1,“axis”轴的理解很关键
- ActiveMQ反序列化(CVE-2015-5254) && ActiveMQ任意文件写入 (CVE-2016-3088)
ActiveMQ 反序列化漏洞(CVE-2015-5254) 漏洞详情 ActiveMQ启动后,将监听61616和8161两个端口,其中消息在61616这个端口进行传递,使用ActiveMQ这个中间件 ...