前言

  官方提供了以下函数检测引脚输入状态

    

  检测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输入检测的更多相关文章

  1. ESP8266 LUA脚本语言开发: 外设篇-GPIO输入检测

    咱使用 GPIO0 https://nodemcu.readthedocs.io/en/master/modules/gpio/#gpioread 第一种 GPIO设置为输出的状态下读取引脚状态 gp ...

  2. ESP8266 SDK开发: 外设篇-GPIO输出高低电平

    前言 官方提供了两个函数 GPIO_OUTPUT_SET(gpio_no, bit_value) 设置GPIO2输出高电平 GPIO_OUTPUT_SET(2, 1); 设置GPIO2输出低电平 GP ...

  3. ESP8266 LUA脚本语言开发: 外设篇-GPIO中断检测

    https://nodemcu.readthedocs.io/en/master/modules/gpio/#gpiomode 测试引脚 GPIO0 gpio.mode(,gpio.INT) func ...

  4. ESP8266 SDK开发: 外设篇-串口

    串口分布 串口切换说明 1.默认所有的数据都使用串口0输出 官方提供了函数可以选择printf利用哪一个串口输出 配置printf使用串口1打印输出,波特率115200 (注:这样配置对于调试程序很有 ...

  5. ESP8266 LUA脚本语言开发: 外设篇-GPIO输出高低电平

    前言 所有的LUA开发API参考 https://nodemcu.readthedocs.io/en/master/en/modules/gpio/ 原理图 让GPIO2输出高电平只需 gpio.mo ...

  6. esp8266 SDK开发之环境搭建

    最近在弄这个WiFi模块,发现网上SDK开发方面的资料很少,发现了一套视频教程,不过主讲人的讲课方式实在受不了.对基于SDK开发感兴趣的同学可以通过本帖在Ubuntu系统上通过Eclipes搭建开发环 ...

  7. ESP8266 SDK开发: 测试下诱人的程序

    前言 这一节测试一下诱人的程序 实现的功能,APP通过SmartConfig给Wi-Fi模块配网并绑定设备,然后通过MQTT远程控制开发板的继电器, APP显示ESP8266采集的温湿度数据. 简而言 ...

  8. ESP8266 LUA脚本语言开发: 外设篇-串口

    https://nodemcu.readthedocs.io/en/master/modules/uart/ 串口发送数据 发送一个16进制到串口 uart.write(0, 0xaa) 注: 之所以 ...

  9. ESP8266 LUA脚本语言开发: 外设篇-定时器,延时,看门狗

    https://nodemcu.readthedocs.io/en/master/modules/tmr/ local mytimer1 = tmr.create() function TimeFun ...

随机推荐

  1. hw笔试题-01

    #include <stdlib.h> #include <stdio.h> #include <string.h> int str_split(char *inp ...

  2. 在 React 组件中监听 android 手机物理返回/回退/back键事件

    当前端页面嵌入到 webview 中运行时,有时会需要监听手机的物理返回按键事件来做一些自定义的操作. 比如我最近遇到的,在一个页面里面有批量选择的功能,当点击手机的返回键时,清除页面上的选中状态.我 ...

  3. Type Erasure with Pokemon---swift的类型擦除

    我感觉这个是swift的设计缺陷. 类型擦除:解决泛型类型作为公用类型的问题 是抽象的公用机制的一种实现方式. 1)类型擦除并不能解决类型不一致的兼容问题,只能解决类似继承一致性的兼容问题. 2)擦除 ...

  4. MySQL for OPS 04:存储引擎

    写在前面的话 在使用 Linux 的时候,可以经常听到有关文件系统 FS(File System)的东西,MySQL 也有属于自己类似的东西,那就是存储引擎.之前在创建数据表的时候,在 Create ...

  5. ABAP 新语法-实例讲解

    主要内容 内联声明 构造表达式 内表操作 Open SQL 其他 本文列出了ABAP新语法的一些使用方式,供大家学习参考. 内联声明 代码实现: *&--------------------- ...

  6. APS.NET MVC + EF (06)---模型

    在实际开发中,模型往往被划分为视图模型和业务模型两部分,视图模型靠近视图,业务模型靠近业务,但是在具体编码上,它们之间并不是隔离的. 6.1 视图模型和业务模型 模型大多数时候都是用来传递数据的.然而 ...

  7. m3u8的blob格式视频在线下载

    有时候我们希望在在线观看视频的同时将对应的视频下载下来,研究了很多方式,最终发现使用ffmpeg这个工具可以很好完成m3u8格式. 具体方法就是执行: ffmpeg -i https://cdn-ho ...

  8. Linux之Shell编程(15)

    case: for:   while:

  9. vue-router简易的实现原理

    class VueRouter { constructor(options) { this.$options = options; this.routeMap = {}; // 路由响应式 this. ...

  10. vue学习指南:第二篇(详细Vue基础) - Vue的指令

    一. Vue 的介绍 1. vue是一个 mvvm 的框架.(面试官经常会问的),angular 是 mvc的框架. 2. vm 是 vum 的实例,这个实例存在计算机内存中,主要干两件大事: 1. ...