ESP32之ESP-IDF学习笔记1——GPIO输出

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

记录一下,对知识的整理和复习,方便你我他。。。
只是记录的外设的API函数的使用,外设知识不介绍。


提示:以下是本篇文章正文内容,下面案例可供参考

一、包含的头文件

#include "driver/gpio.h"

二、API

/*
函数: gpio_reset_pin
功能: 重置引脚
输入: gpio_num:GIPO引脚编号
返回值: 0 -> OK; other -> 异常;
*/
esp_err_t gpio_reset_pin(gpio_num_t gpio_num)

/*
函数: gpio_set_direction
功能: 设置GPIO的模式
输入: gpio_num:GIPO引脚编号; mode:模式(是个枚举值)
返回值: 0 -> OK; other -> 异常;
*/
esp_err_t gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode)

/*
函数: gpio_config
功能: 配置GPIO
输入: pGPIOConfig:GPIO的配置信息,是个结构体指针
返回值: 0 -> OK; other -> 异常;
*/
esp_err_t gpio_config(const gpio_config_t *pGPIOConfig)

/*
函数: gpio_set_level
功能: 设置GPIO的输出
输入:gpio_num:GIPO引脚编号; level:0 -> 输出低电平;1 -> 输出高电平;
返回值: 0 -> OK; other -> 异常;
*/
esp_err_t gpio_set_level(gpio_num_t gpio_num, uint32_t level)

三、GPIO初始化

  1. 方法1
void Led_init(void)
{
    gpio_reset_pin(LED0_GPIO);//重置引脚
    gpio_set_direction(LED0_GPIO, GPIO_MODE_OUTPUT);//输出模式
    //gpio_set_level(LED0_GPIO, 0);//默认让之歌引脚输出什么电平
}
  1. 方法2
void Led_init(void)
{
    gpio_config_t GpioConfigt;

    GpioConfigt.pin_bit_mask = BIT64(LED0_GPIO);//设置引脚
    GpioConfigt.mode = GPIO_MODE_OUTPUT;//设置模式
    GpioConfigt.pull_up_en = GPIO_PULLUP_ENABLE;//上拉使能
    GpioConfigt.pull_down_en = GPIO_PULLDOWN_DISABLE;//下拉失能
    GpioConfigt.intr_type = GPIO_INTR_DISABLE;//配置中断
    gpio_config(&GpioConfigt);
    //gpio_set_level(LED0_GPIO, 0);//默认让这个引脚输出什么电平
}

注意: 1. GpioConfigt.pin_bit_mask这个参数需要使用 BIT64() 转换一下。
2. 中断需要配置一下失能。

四、代码

4.1 main.c

#include <stdio.h>
#include "esp_log.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "led.h"

void app_main(void)
{
    char *tag = "main";
    esp_log_level_set(tag, ESP_LOG_DEBUG); //设置日志等级
    Led_init();
    while(true)
    {
        LED0(OPEN);
        ESP_LOGD(tag, "GPIO_NUM_2 输出高电平");
        vTaskDelay(1000);
        LED0(CLOSE);
        ESP_LOGD(tag, "GPIO_NUM_2 输出低电平");
        vTaskDelay(1000);   
    }
}

注意: 1. 设置日志等级时,工程的配置中需要修改一下 Maximum log verbosity
2. 工程的配置中需要修改一下 configTICK_RATE_HZ

在这里插入图片描述

在这里插入图片描述

4.2 led.c

#include "  .h"
#include "driver/gpio.h"

// void Led_init(void)
// {
//     gpio_reset_pin(LED0_GPIO);//重置引脚
//     gpio_set_direction(LED0_GPIO, GPIO_MODE_OUTPUT);//输出模式
// }

void Led_init(void)
{
    gpio_config_t GpioConfigt;

    GpioConfigt.pin_bit_mask = BIT64(LED0_GPIO);//设置引脚
    GpioConfigt.mode = GPIO_MODE_OUTPUT;//设置模式
    GpioConfigt.pull_up_en = GPIO_PULLUP_ENABLE;//上拉使能
    GpioConfigt.pull_down_en = GPIO_PULLDOWN_DISABLE;//下拉失能
    GpioConfigt.intr_type = GPIO_INTR_DISABLE;//配置中断
    gpio_config(&GpioConfigt);
    gpio_set_level(LED0_GPIO, 0);
}

4.3 led.h

#ifndef __LED_H
#define __LED_H

#define OPEN        1
#define CLOSE       0
#define LED0_GPIO   GPIO_NUM_2
#define LED0(status)  gpio_set_level(LED0_GPIO, status)

void Led_init(void);
#endif

五、补充

之前是写stm32的所以编程风格。。。

5.1 如何添加自己写的驱动

ps:因该还有其它方法, CMakeLists.txt 文件有点像linux中的makefile。
保存路径是在main文件夹下的BSP文件中
在这里插入图片描述

修改main文件夹下的 CMakeLists.txt 文件
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值