学习ESP8266_8_GPIO输出高低电平

1、今天周日

单休,现在是下午17:06,外面下雨,广州也冷了。

如标题,这一篇文章主要是记录,让ESP8266的GPIO输出高低电平。

2、两步

2.1、配置IO口为GPIO功能

相应的头文件在"eagle_soc.h"中

2.1.1、选择IO口功能的宏

以配置GPIO4为例,使用的宏为“PIN_FUNC_SELECT”,后面有两个参数,第一个是引脚的名称,第二个是引脚的功能。

PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U,FUNC_GPIO4);
2.1.2、宏中的参数

头文件中有这两个参数的名称,复制就可以了,不过头文件的GPIO顺序有点乱,我照着GPIO0~GPIO15给排了一下顺序。

#define PERIPHS_IO_MUX_GPIO0_U          (PERIPHS_IO_MUX + 0x34)		//GPIO0
#define FUNC_GPIO0                      0

#define PERIPHS_IO_MUX_U0TXD_U          (PERIPHS_IO_MUX + 0x18)		//GPIO1
#define FUNC_U0TXD                      0
#define FUNC_GPIO1                      3

#define PERIPHS_IO_MUX_GPIO2_U          (PERIPHS_IO_MUX + 0x38)		//GPIO2
#define FUNC_GPIO2                      0
#define FUNC_U1TXD_BK                   2
#define FUNC_U0TXD_BK                   4

#define PERIPHS_IO_MUX_U0RXD_U          (PERIPHS_IO_MUX + 0x14)		//GPIO3
#define FUNC_GPIO3                      3

#define PERIPHS_IO_MUX_GPIO4_U          (PERIPHS_IO_MUX + 0x3C)		//GPIO4
#define FUNC_GPIO4                      0

#define PERIPHS_IO_MUX_GPIO5_U          (PERIPHS_IO_MUX + 0x40)		//GPIO5
#define FUNC_GPIO5                      0

#define PERIPHS_IO_MUX_SD_CLK_U         (PERIPHS_IO_MUX + 0x1c)		//GPIO6
#define FUNC_SDCLK                      0
#define FUNC_SPICLK                     1

#define PERIPHS_IO_MUX_SD_DATA0_U       (PERIPHS_IO_MUX + 0x20)		//GPIO7
#define FUNC_SDDATA0                    0
#define FUNC_SPIQ                       1
#define FUNC_U1TXD                      4

#define PERIPHS_IO_MUX_SD_DATA1_U       (PERIPHS_IO_MUX + 0x24)		//GPIO8
#define FUNC_SDDATA1                    0
#define FUNC_SPID                       1
#define FUNC_U1RXD                      4
#define FUNC_SDDATA1_U1RXD              7

#define PERIPHS_IO_MUX_SD_DATA2_U       (PERIPHS_IO_MUX + 0x28)		//GPIO9
#define FUNC_SDDATA2                    0
#define FUNC_SPIHD                      1
#define FUNC_GPIO9                      3

#define PERIPHS_IO_MUX_SD_DATA3_U       (PERIPHS_IO_MUX + 0x2c)		//GPIO10
#define FUNC_SDDATA3                    0
#define FUNC_SPIWP                      1
#define FUNC_GPIO10                     3

#define PERIPHS_IO_MUX_SD_CMD_U         (PERIPHS_IO_MUX + 0x30)		//GPIO11
#define FUNC_SDCMD                      0
#define FUNC_SPICS0                     1

#define PERIPHS_IO_MUX_MTDI_U           (PERIPHS_IO_MUX + 0x04)		//GPIO12
#define FUNC_GPIO12                     3

#define PERIPHS_IO_MUX_MTCK_U           (PERIPHS_IO_MUX + 0x08)		//GPIO13
#define FUNC_GPIO13                     3

#define PERIPHS_IO_MUX_MTMS_U           (PERIPHS_IO_MUX + 0x0C)		//GPIO14
#define FUNC_GPIO14                     3

#define PERIPHS_IO_MUX_MTDO_U           (PERIPHS_IO_MUX + 0x10)		//GPIO15
#define FUNC_GPIO15                     3
#define FUNC_U0RTS                      4
2.1.3、两个参数参考表格

这个表格在官网可以下载,我把其中的某些单元格隐藏了,看起来比较清楚一点。

Inst Name 就是第一个参数"PERIPHS_IO_MUX_xxx"中的"xxx",代表引脚的名称。

后面的Function1~5就是对应的功能选择(从1开始计数),如果Function1在参数中要写"0"(这时是从0开始计数)。

比如我们要配置IO4为GPIO的功能。
找到IO4在倒数第二行,叫"GPIO4_U",所以第一个参数写"PERIPHS_IO_MUX_GPIO4_U";
GPIO功能在Function1,所以第二个参数是"0".

在这里插入图片描述

2.2、输出高低电平函数

配置完为GPIO功能之后,就可以使用输出IO口状态的宏了,如下。

这个宏的使用很简单,第一个参数是引脚的序号;第二个参数是你想要的高低电平。

GPIO_OUTPUT_SET(GPIO_ID_PIN(4),1);		//输出高电平
GPIO_OUTPUT_SET(GPIO_ID_PIN(4),0);		//输出低电平

"GPIO_ID_PIN(4)"就是4,只不过是封装了一下,看起来含义更明确。

#define GPIO_ID_PIN0                  0
#define GPIO_ID_PIN(n)                (GPIO_ID_PIN0+(n))
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值