NodeMCU ESP8266 GPIO使用详解(图文并茂)

这篇具有很好参考价值的文章主要介绍了NodeMCU ESP8266 GPIO使用详解(图文并茂)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

NodeMCU ESP8266 GPIO使用详解

esp 8266引脚接收信号,ESP8266学习教程⭐⭐,单片机,嵌入式硬件,ESP8266,物联网

前言

前面的文章中我们已经学习了如何点亮一个LED灯,在嵌入式的世界里,这个相当于我们初学一门编程语言,写下的Hello World程序。

为了让LED闪烁,我们需要操作芯片的GPIO,这是硬件最底层的概念,只不过Arduino的编程中,底层的库函数已经为我们做好了硬件的封装,只要调用相应的API接口就对GPIO进行操作。

如果是更纯粹的单片机开发,我们可能还需要读写各种寄存器,通常这些会出现在单片机的裸机代码或者驱动程序中。

我们在嵌入式开发的过程中,也有必要学习和了解GPIO的相关硬件知识和概念,下面我们会进一步学习。

什么是GPIO?

GPIO叫通用输入输出(General Purpose Input Output),它在集成电路中扮演着非常重要的角色;

  • 可以读取输入信号;
  • 可以输出信号;
  • 接收外部的中断信号;

在NodeMCU ESP8266上的GPIO,简单整理了一下,具体如下所示;

esp 8266引脚接收信号,ESP8266学习教程⭐⭐,单片机,嵌入式硬件,ESP8266,物联网

开发板的引脚名称 ESP8266 内部引脚名称
D0 GPIO16
D1 GPIO5
D2 GPIO4
D3 GPIO0
D4 GPIO2
D5 GPIO14
D6 GPIO12
D7 GPIO13
D8 GPIO15
D9/RX GPIO3
D10/TX GPIO1
D11/SD2 GPIO9
D12/SD3 GPIO10

再复杂一点的话,会有特定时序的信号,比如串口,I2C总线,SPI等等;

GPIO 的使用

GPIO模式通常分为以下几种;

  • 输出模式;
  • 输入模式;
  • 模拟模式;
  • 功能复用模式;

前面小节中有实现用GPIO让LED闪烁的代码,具体如下所示;

void setup() {
  // put your setup code here, to run once:
  pinMode(2, OUTPUT);
  digitalWrite(2,LOW);
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(2000);
  digitalWrite(2,LOW);  // 2 表示D2/GPIO4 开发板上连接的是LED
  delay(2000);
  digitalWrite(2,HIGH);
}

GPIO模式

下面是Arduino.h头文件中定义的几种GPIO模式,基本上是输出和输入两种模式,通常在嵌入式的开发中还有复用模式以及高阻抗的状态,下面我们先介绍输入和输出模式的几种情况,具体定义如下所示;

#define INPUT             0x00
#define INPUT_PULLUP      0x02
#define INPUT_PULLDOWN_16 0x04 // PULLDOWN only possible for pin16
#define OUTPUT            0x01
#define OUTPUT_OPEN_DRAIN 0x03

通常我们要看一下芯片的用户手册;举个例子,看一下相应的GPIO是否支持内部上拉或者内部下拉的输入;上述代码中,我可以使用pinMode函数来指定具体的GPIO的工作模式。

下面我们进一步介绍,会涉及到一些硬件方面的知识,遇到相关不懂的概念,可以先记下来,后面慢慢消化。

作为输出

下面的函数可以让D2接口作为默认输出输出,具体的输出模式需要参考用户手册,一般来说是推挽输出模式;

pinMode(2,OUTPUT);

下面的函数可以让D2接口作为开漏输出模式,具体如下所示;

pinMode(2,OUTPUT_OPEN_DRAIN);

这种输出模式有个特点就是可以输出低电平,但是不能输出高电平,通常要在外部增加上拉电阻。

这里已经设置了输出的模式,如何输出就需要用函数digitalWrite(GPIO, STATE);

  • GPIO:具体的引脚;
  • STATE:具体的输出状态,通常是HIGHLOW

输出高电平

D2硬件接口输出为高电平,具体如下所示;

digitalWrite(2, HIGH);`

输出低电平

D2硬件接口输出为低电平,具体如下所示;

digitalWrite(2, LOW);`

作为输入

D2硬件接口输出设置为输入模式,具体如下所示;

pinMode(2, INPUT);

上拉输入

D2硬件接口设置为上拉输入模式,具体如下所示;

pinMode(2, INPUT_PULLUP);

下拉输入

D2硬件接口设置为下拉输入模式,具体如下所示;

pinMode(2, INPUT_PULLDOWN_16);

读取输入值

读取相应的硬件引脚上的状态需要用到函数digitalRead(),函数原型如下;

extern int digitalRead(uint8_t pin) __attribute__ ((weak, alias("__digitalRead"), nothrow));

D2硬件接口的状态读取到变量 pinState 中,高电平返回1,低电平返回0,具体如下所示;

pinState = digitalRead(2);

总结

本文简单介绍GPIO的一些基本概念,以及NodeMCU ESP8266 基于 Arduino接口的GPIO函数操作。

由于作者能力有限,文章中难免存在错误和纰漏,请大胆指正,如果对于文章中存在疑惑或者问题,欢迎在评论区进行留言。

如果文章帮到了你,请帮忙点赞,三连支持👍👍👍。文章来源地址https://www.toymoban.com/news/detail-772827.html

到了这里,关于NodeMCU ESP8266 GPIO使用详解(图文并茂)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NodeMCU ESP8266 点亮LED灯手把手教程(图文并茂+超级详细)

    大家如果学过编程,那么 Hello World 往往是大家写下的第一个程序,在C语言中,看着控制台输出 hello world ,也就意味着我们敲开了编程的大门。同样的,点亮一个LED灯可以说是嵌入式里的 hello world 。 NodeMCU ESP8266是一款基于ESP8266芯片的开发板。之前我们有做过介绍,这个开发

    2024年02月05日
    浏览(92)
  • NodeMCU ESP8266 中断介绍以及使用详解

    今天,我们将学习中断和定时器的相关概念,并且基于NodeMCU ESP8266 12E开发板搭建硬件电路,通过使用中断和定时器实现我们想要实现的功能。 中断在嵌入式开发中是很常见的功能,特别是在单片机的开发中。通常 GPIO 引脚可以接收外部的信号,根据不同的信号类型,可以触

    2024年02月04日
    浏览(61)
  • Java 线程池详解,图文并茂,还有谁不会?!

    来源:blog.csdn.net/mu_wind/article/details/113806680 我们知道,线程的创建和销毁都需要映射到操作系统,因此其代价是比较高昂的。出于避免频繁创建、销毁线程以及方便线程管理的需要,线程池应运而生。 降低资源消耗 :线程池通常会维护一些线程(数量为 corePoolSize),这些线

    2024年02月06日
    浏览(53)
  • secureCRT安装和使用教程【图文并茂】

    简介 一般而言,嵌入式开发板使用串口来监控后台。可以使用串口线连接开发板和电脑,对于没有串口的笔记本电脑来说,一般还需要一根USB转串口线。 串口线 串口软件多种多样,比如secureCRT、Xshell、超级终端、miniCom、putty等,它们的功能大同小异,因此只需安装用的顺手

    2024年02月03日
    浏览(89)
  • 超详解线段树(浅显易懂,几乎涵盖所有线段树类型讲解,匠心之作,图文并茂)

    线段树是一种 二叉搜索树 ,而 二叉搜索树 ,首先 满足二叉树 ,即 每个结点 最多有 两颗子树 ,并且是一颗 搜索树 ,我们要知道,线段树的每个结点都存储了 一个区间 ,也可以理解成 一个线段 ,而 搜索 ,就是在这些 线段 上进行 搜索操作 得到你想要的 答案 。 线段树

    2024年02月05日
    浏览(43)
  • C语言递归+DFS(深度优先搜索算法)详解 图文并茂,手把手教你画树状图

    目录 一.标准定义 二.跳台阶(典型递归题目) 三.递归实现指数型枚举 四.递归实现排列型枚举 五.递归实现组合型枚举 六.DFS算法模板 深度优先搜索算法(Depth First Search,简称DFS): 一种用于遍历或搜索树或图的算法 。 沿着树的深度遍历树的节点, 尽可能深的搜索树的分

    2024年02月04日
    浏览(71)
  • 史上最全在IDEA中部署并使用Tomcat,图文并茂一看包会!

    前言 之前自己迷茫过怎样在idea中使用Tomcat,因此查了很多资料,在这做个总结。 在项目的创建区内,右击项目名,在弹窗中选择“添加框架支持”; 选择“Web应用程序4.0”,再点击“确定”、; 可以看到在项目区创建好了“web框架”;自带一个“index.jsp”文件,是默认打

    2024年02月04日
    浏览(45)
  • 手把手图文并茂教你创建并使用私钥privateKey登录 SSH 服务器

    我们平时登录Linux服务器的时候,经常是使用用户名和密码进行登录,但是如果我们要使用它进行代码连接或者其他操作的情况下,我们需要一种更为安全的方式进行登录,就需要privateKey登录 SSH 服务器 RSA 非对称加密 在 SSH 登录时可以使用 RSA 密钥登录 使用工具ssh-keygen可以

    2024年02月15日
    浏览(51)
  • Activiti7(图文并茂)

    Activiti 是由 jBPM (BPM,Business Process Management 即业务流程管理) 的创建者 Tom Baeyens 离开 JBoss 之后建立的项目,构建在开发 jBPM 版本 1 到 4 时积累的多年经验的基础之上,旨在创建下一代的 BPM 解 决方案。 Activiti 作为一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计

    2024年02月06日
    浏览(58)
  • RabbitMQ入门篇【图文并茂,超级详细】

    接下来看看由辉辉所写的关于RabbitMQ的相关操作吧 目录 🥳🥳Welcome 的Huihui\\\'s Code World ! !🥳🥳 前言 1.什么是MQ 2.理解MQ 3.生活案例分析与理解 4.MQ的使用场景 (1)解耦 传统模式 中间件模式 (2)削峰 传统模式 中间件模式 (3)异步  传统模式 中间件模式 5.常见的MQ 一. Rab

    2024年01月20日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包