GPIO操作是所有单片机最基础的操作最重要的操作 ,学会了对一款单片机GPIO的操作,那你就可以说自己入门了这款单片机。本篇文章将简要的介绍ESP32使用IDF进行编程时如何对GPIO进行操作。

1.GIPO初始化

GPIO有两种配置方法:结构体配置法调用函数配置法。结构体配置法和STM32的GPIO配置比较像,使用起来比较简单。以下主要介绍结构体配置方法。

1. 引用头文件 #include <driver/gpio.h>

2. 定义结构体并给结构体赋初值

1
2
3
4
5
6
gpio_config_t ioConfig;//定义一个结构体,名称随便,这里使用ioConfig
ioConfig.pin_bit_mask = (1ull << 18)|(1ull < 19);//要配置的GPIO端口号,这里必须使用强制转化为1ull类型
ioConfig.mode = ;//GPIO模式
ioConfig.pull_up_en = ;//是否上拉
ioConfig.pull_down_en = ;//是否下拉
ioConfig.intr_type = ;//中断类型

​ 或者使用下面方法在定义的同时初始化,下面的方法使用时会简便一些,但是要求使用C99,比C99低的话会报错。

1
2
3
4
5
6
7
gpio_config_t ioConfig = {
.pin_bit_mask = (1ull << 18)|(1ull < 19),
.mode = ,
.pull_up_en = ,
.pull_down_en = ,
.intr_type = ,
};//结尾记得加分号,中间记得加逗号

3. 初始化结构体 gpio_config(&ioConfig);这里记得取地址

2.GPIO相关函数

1.设置GPIO电平

函数:gpio_set_level(gpio_num,level)
例如将P18设置为高电平 gpio_set_level(18,1);

2.读取GPIO电平

函数:int gpio_get_level(gpio_num)
一定要先将引脚定义为读取模式才能读到
使用读写模式也可以,但是我在使用读写模式时遇到很多问题,因此建议只使用读模式或者写模式
例如判断P19引脚的电平是否为低电平,若19引脚为低电平将18引脚设为高电平

1
2
3
4
if(gpio_get_level(19) == 0)
{
gpio_set_level(18,1);
}