ESP32开发(二)——GPIO管脚配置

这篇具有很好参考价值的文章主要介绍了ESP32开发(二)——GPIO管脚配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        在VSCode中搭建完ESP32的开发环境后,就可以开始快乐编程了。在进行ESP32开发前,我们需要对它的API有个基本了解。

一.资料下载

         授人以鱼不如授人以渔,学会找学习资料很重要。在乐鑫的官网上,给出了各种型号的技术支持,点击支持,技术文档。

esp32 gpio配置,单片机,嵌入式硬件,vscode,c语言

         我所使用的开发板为ESP32,所以选择ESP32,选择ESP-IDF编程指南。

esp32 gpio配置,单片机,嵌入式硬件,vscode,c语言

        点击开来后,里面有非常详细的教程。这里我们重点关注它的各个API接口,点击API参考,外设API,里面列出了关于各类外设对于的API。这边文章主要介绍关于GPIO配置的各种API函数,后面各种接口函数将在后面学习过程中依次介绍。这里我们选泽GPIO & RTC GPIO。

esp32 gpio配置,单片机,嵌入式硬件,vscode,c语言

         GPIO & RTC GPIO介绍文档中先是介绍了ESP32开发板的引脚接口,需要注意的是,并不是所有引脚都能够被复用,有些引脚只能用做指定接口。里面介绍了关于引脚配置所使用到的函数以及结构体。

二.相关函数介绍

在使用相关函数时,我们需要引入相应的头文件:

#include "driver/gpio.h"

(1)用于初始化GPIO引脚函数

//参数: gpio_config_t,GPIO结构指针
//返回:ESP_OK success
//      ESP_ERR_INVALID_ARG Parameter error
//作用:完成对GPIO口方向,上拉,模式,中断等的配置
esp_err_t gpio_config(const gpio_config_t *pGPIOConfig)

(2)引脚高低电平的设置与获取

//参数:GPIO端口号,高低电平(0,1)
//返回:ESP_OK success
//      ESP_ERR_INVALID_ARG Parameter error
//作用:设置引脚高低电平
esp_err_t gpio_set_level(gpio_num_t gpio_num, uint32_t level)

//参数:GPIO的引脚号
//返回:引脚电平
int gpio_get_level(gpio_num_t gpio_num)

(3)引脚配置结构体

typedef struct {
    uint64_t pin_bit_mask;          /*配置引脚寄存器*/
    gpio_mode_t mode;               /*设置引脚模式,输入,输出等*/
    gpio_pullup_t pull_up_en;       /*上拉使能*/
    gpio_pulldown_t pull_down_en;   /*下拉使能*/
    gpio_int_type_t intr_type;      /*中断方式*/
} gpio_config_t;


//gpio_mode_t 参数
typedef enum {
    GPIO_MODE_DISABLE = GPIO_MODE_DEF_DISABLE,                                                         
    GPIO_MODE_INPUT = GPIO_MODE_DEF_INPUT,                                                             
    GPIO_MODE_OUTPUT = GPIO_MODE_DEF_OUTPUT,                                                           
    GPIO_MODE_OUTPUT_OD = ((GPIO_MODE_DEF_OUTPUT) | (GPIO_MODE_DEF_OD)),                               
    GPIO_MODE_INPUT_OUTPUT_OD = ((GPIO_MODE_DEF_INPUT) | (GPIO_MODE_DEF_OUTPUT) |                 
    (GPIO_MODE_DEF_OD)), 
    GPIO_MODE_INPUT_OUTPUT = ((GPIO_MODE_DEF_INPUT) | (GPIO_MODE_DEF_OUTPUT)),                         
} gpio_mode_t;


typedef enum {
    GPIO_PULLUP_DISABLE = 0x0,     /*!< Disable GPIO pull-up resistor */
    GPIO_PULLUP_ENABLE = 0x1,      /*!< Enable GPIO pull-up resistor */
} gpio_pullup_t;

typedef enum {
    GPIO_PULLDOWN_DISABLE = 0x0,   /*!< Disable GPIO pull-down resistor */
    GPIO_PULLDOWN_ENABLE = 0x1,    /*!< Enable GPIO pull-down resistor  */
} gpio_pulldown_t;


typedef enum {
    GPIO_INTR_DISABLE = 0,     /*!< Disable GPIO interrupt                             */
    GPIO_INTR_POSEDGE = 1,     /*!< GPIO interrupt type : rising edge                  */
    GPIO_INTR_NEGEDGE = 2,     /*!< GPIO interrupt type : falling edge                 */
    GPIO_INTR_ANYEDGE = 3,     /*!< GPIO interrupt type : both rising and falling edge */
    GPIO_INTR_LOW_LEVEL = 4,   /*!< GPIO interrupt type : input low level trigger      */
    GPIO_INTR_HIGH_LEVEL = 5,  /*!< GPIO interrupt type : input high level trigger     */
    GPIO_INTR_MAX,
} gpio_int_type_t;

三.创建工程

        打开VScode,Ctrl+Shift+P,在命令框中输入show examples.

esp32 gpio配置,单片机,嵌入式硬件,vscode,c语言

         选择sample project->Create project using example sample_project,选择工程文件夹。

esp32 gpio配置,单片机,嵌入式硬件,vscode,c语言

         选择我信任此作者。

esp32 gpio配置,单片机,嵌入式硬件,vscode,c语言

         打开工程如图所示。

esp32 gpio配置,单片机,嵌入式硬件,vscode,c语言

然后我们就开始代码编写 ,这里我就直接张代码了哦!

#include <stdio.h>
#include <inttypes.h>
#include <string.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "esp_chip_info.h"
#include "esp_flash.h"
#include "driver/gpio.h"


#define RXD GPIO_NUM_19     //GPIO管脚定义
#define TXD GPIO_NUM_23
#define RXD_OUTPUT_PIN_SEL (1ULL << RXD)   //配置GPIO_OUT寄存器
#define TXD_OUTPUT_PIN_SEL (1ULL << TXD)   


void IO_int(void){
    gpio_config_t IO_Config;

    IO_Config.pin_bit_mask = RXD_OUTPUT_PIN_SEL;
    IO_Config.mode = GPIO_MODE_DEF_OUTPUT;               /*输出 */
    IO_Config.pull_up_en = 1;       /*上拉*/
    IO_Config.pull_down_en = 0;  
    IO_Config.intr_type = GPIO_INTR_DISABLE;    /*不使能中断*/
    gpio_config(&IO_Config);

    IO_Config.pin_bit_mask = TXD_OUTPUT_PIN_SEL;
    gpio_config(&IO_Config);

    gpio_set_level(RXD,0);
    gpio_set_level(TXD,0);
}

void app_main(void)
{

    IO_int();//初始化
    while (1)
    {
        vTaskDelay(1000/portTICK_PERIOD_MS);  //延迟1s
        gpio_set_level(RXD,1);//设置高电平
        gpio_set_level(TXD,0);//设置低电平
    }

}

         作为第一个工程项目,关于如何下载工程到开发板中,我将做详细的讲解。

        (1)串口选择:如果不知道选择哪一个串口,有一个简答直白的方法,把开发板拔掉,再插上,多出来的那个串口就是啦!如果插上后没有反应,一个可能是由于你电脑没有装相应的驱动,另一个可能是你的电源线只能供电(两线),换个电源线。如果还是不可以,可能就是开发板有问题了。

esp32 gpio配置,单片机,嵌入式硬件,vscode,c语言

 (2)设备选择

esp32 gpio配置,单片机,嵌入式硬件,vscode,c语言

 (3)编译下载

esp32 gpio配置,单片机,嵌入式硬件,vscode,c语言

esp32 gpio配置,单片机,嵌入式硬件,vscode,c语言

esp32 gpio配置,单片机,嵌入式硬件,vscode,c语言

         到此,整个工程结束。

 文章来源地址https://www.toymoban.com/news/detail-688220.html

到了这里,关于ESP32开发(二)——GPIO管脚配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 一起玩儿物联网人工智能小车(ESP32)——14. 用ESP32的GPIO控制智能小车运动起来(二)

    摘要:本文主要讲解如何使用Mixly实现对单一车轮的运动控制。 下面就该用程序控制我们的小车轮子转起来了。打开Mixly软件,然后单击顶部“文件”菜单中的“新建”功能,我们来开启一个新程序的开发工作。 我们的工作同样是先从最简单的开始,初期只控制一个轮子,实

    2024年02月04日
    浏览(37)
  • 一起玩儿物联网人工智能小车(ESP32)——13. 用ESP32的GPIO控制智能小车运动起来(一)

    摘要:本文更深入的讲述了GPIO的相关知识,并完成了导线连接工作,为下一步的软件开发做好了准备。 通用输入输出端口(GPIO:General Purpose Input/Output Port),在前面已经有了初步的介绍,本篇将进行更详细的阐述,希望大家能够了解GPIO端口是如何工作的。 通用输入输出端

    2024年02月04日
    浏览(33)
  • 一起玩儿物联网人工智能小车(ESP32)——15. 用ESP32的GPIO控制智能小车运动起来(三)

    摘要:本文介绍用ESP32的GPIO控制智能小车朝各个方向运动 在前面已经实现了用ESP32开发板控制单个车轮正反向旋转。接下来就是同时控制4个轮子转动,让整个智能小车动起来了。 说干就干,第一步还是初始化8个GPIO引脚,将这8个引脚的初始状态都设置为低电平。配置好了以

    2024年01月23日
    浏览(40)
  • 单片机开发---ESP32S3移植NES模拟器(一)

    《单片机开发—ESP32-S3模块上手》 《单片机开发—ESP32S3移植lvgl+触摸屏》 依旧是参考韦东山老师的作品来移植的 《ESP32|爷青回!ESP32(单片机) NES模拟器_NES游戏机掌机教程(开源+详细讲解实现代码!)》 韦老师已经将代码开源,喜欢的朋友当然是可以去支持一波。 另外还有gi

    2023年04月16日
    浏览(33)
  • 单片机开发---ESP32S3移植NES模拟器(二)

    《单片机开发—ESP32-S3模块上手》 《单片机开发—ESP32S3移植lvgl+触摸屏》 《单片机开发—ESP32S3移植NES模拟器(一)》 暖场视频,小时候称这个为—超级曲线射门!!!!!!!!!! ESP32上天使之翼游戏 看门狗 源码中有两处看门狗的喂狗操作,前期都被注释掉了。 因为开

    2023年04月09日
    浏览(114)
  • ESP32修改BootLoader:在boot中添加GPIO和IIC驱动方式

    ESP32有着强大的引导加载程序(Bootloader)功能: 主要执行以下任务: 内部模块的最小化初始配置; 根据分区表和 ota_data(如果存在)选择需要引导的应用程序(app)分区; 将此应用程序映像加载到 RAM(IRAM 和 DRAM)中,最后把控制权转交给应用程序。 引导加载程序位于 F

    2024年02月07日
    浏览(27)
  • 嵌入式STM32 单片机 GPIO 的工作原理详解

    STM32的 GPIO 介绍 GPIO 是通用输入/输出端口的简称,是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 以 STM32F103ZET6 芯片为例子,该芯片共有 144 脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为

    2024年02月20日
    浏览(40)
  • STM32单片机(三)第二节:GPIO输出练习3(蜂鸣器)

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月11日
    浏览(32)
  • ESP32单片机入门篇

    目录 一、ESP32单片机的基本概念 1.双核架构 2. Wi-Fi和蓝牙功能 3. 集成多种外设 4. 支持多种操作系统 二、开发环境 1. Arduino IDE 2. ESP-IDF 三、开发语言 四、注意事项 五、代码例程 (1)点亮LED灯 1. 电路图 2. 代码 3. 代码注释 4. 注意事项 (2)控制继电器 1. 电路图 2. 代码 3. 代码

    2024年02月08日
    浏览(42)
  • esp32单片机在arduino环境下,串口接收解码

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 当主控芯片发送一串数据,但此数据为一串字符串,需要将此字符串翻译成整型数组,以形成指令,控制串口屏。 例如:esp32单

    2024年02月09日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包