网站容易出现的问题,苏州展厅设计公司排名,易企秀网站开发技术,做网站服务器基于ESP32-IDF驱动GPIO输出控制LED 文章目录 基于ESP32-IDF驱动GPIO输出控制LED一、点亮LED3.1 LED电路3.2 配置GPIO函数gpio_config()原型和头文件3.3 设置GPIO引脚电平状态函数gpio_set_level()原型和头文件3.4 代码实现并编译烧录 一、点亮LED
3.1 LED电路 可以看到#x…基于ESP32-IDF驱动GPIO输出控制LED 文章目录 基于ESP32-IDF驱动GPIO输出控制LED一、点亮LED3.1 LED电路3.2 配置GPIO函数gpio_config()原型和头文件3.3 设置GPIO引脚电平状态函数gpio_set_level()原型和头文件3.4 代码实现并编译烧录 一、点亮LED
3.1 LED电路 可以看到LED灯连接到了我们开发板上的GPIO27引脚。
3.2 配置GPIO函数gpio_config()原型和头文件
在 ESP-IDF 中配置 GPIO 的函数是 gpio_config()它的函数原型如下
esp_err_t gpio_config(const gpio_config_t *pGPIOConfig);参数说明
pGPIOConfig指向 gpio_config_t 类型结构体的指针用于配置 GPIO 的各项属性。 gpio_config_t 结构体定义
gpio_config_t 是一个结构体用于设置 GPIO 的各种参数。它的定义如下
typedef struct {uint64_t pin_bit_mask; // GPIO 引脚的位掩码gpio_mode_t mode; // GPIO 模式输入/输出等gpio_pullup_t pull_up_en; // 是否启用上拉gpio_pulldown_t pull_down_en; // 是否启用下拉gpio_int_type_t intr_type; // GPIO 中断类型
} gpio_config_t;gpio_config_t 各成员详细说明
成员类型描述pin_bit_maskuint64_t指定要配置的 GPIO 引脚的位掩码。例如配置 GPIO27 为 (1ULL 27)。modegpio_mode_t设置 GPIO 的工作模式取值如下- GPIO_MODE_DISABLE禁用 GPIO- GPIO_MODE_INPUT设置为输入模式- GPIO_MODE_OUTPUT设置为输出模式- GPIO_MODE_OUTPUT_OD设置为开漏输出模式- GPIO_MODE_INPUT_OUTPUT设置为输入输出模式- GPIO_MODE_INPUT_OUTPUT_OD设置为输入开漏输出模式pull_up_engpio_pullup_t是否启用上拉电阻- GPIO_PULLUP_ENABLE启用上拉- GPIO_PULLUP_DISABLE禁用上拉pull_down_engpio_pulldown_t是否启用下拉电阻- GPIO_PULLDOWN_ENABLE启用下拉- GPIO_PULLDOWN_DISABLE禁用下拉intr_typegpio_int_type_t设置 GPIO 中断触发类型取值如下- GPIO_INTR_DISABLE禁用中断- GPIO_INTR_POSEDGE上升沿触发中断- GPIO_INTR_NEGEDGE下降沿触发中断- GPIO_INTR_ANYEDGE任意边沿触发中断- GPIO_INTR_LOW_LEVEL低电平触发中断- GPIO_INTR_HIGH_LEVEL高电平触发中断 返回值
gpio_config() 函数的返回值是 esp_err_t 类型用于指示函数的执行结果
ESP_OK配置成功。其他错误代码配置失败。 头文件
要使用 gpio_config 函数需要包含以下头文件
#include driver/gpio.h示例代码
以下代码展示如何配置 GPIO27 为输出模式同时禁用上下拉电阻
gpio_config_t io_conf;io_conf.pin_bit_mask (1ULL GPIO_NUM_27); // 配置 GPIO27
io_conf.mode GPIO_MODE_OUTPUT; // 设置为输出模式
io_conf.pull_up_en GPIO_PULLUP_DISABLE; // 禁用上拉
io_conf.pull_down_en GPIO_PULLDOWN_DISABLE; // 禁用下拉
io_conf.intr_type GPIO_INTR_DISABLE; // 禁用中断
gpio_config(io_conf); // 应用配置通过 gpio_config() 函数可以灵活地配置 GPIO 引脚的各种属性适用于多种应用场景如 LED 控制、按键输入、中断处理等。
3.3 设置GPIO引脚电平状态函数gpio_set_level()原型和头文件
在 ESP-IDF 中gpio_set_level 用于设置指定 GPIO 引脚的电平状态其原型定义如下
esp_err_t gpio_set_level(gpio_num_t gpio_num, uint32_t level);参数说明
gpio_num 类型gpio_num_t指定要设置电平的 GPIO 引脚。例如GPIO_NUM_27。有效范围GPIO_NUM_0 到硬件支持的最大 GPIO 编号ESP32 的最大值通常为 GPIO_NUM_39。 level 类型uint32_t指定电平值 0 表示设置为低电平。1 表示设置为高电平。 返回值 返回值类型为 esp_err_t表示函数执行的结果 ESP_OK设置成功。ESP_ERR_INVALID_ARG如果指定的 GPIO 编号无效或未配置为输出模式。 头文件
要使用 gpio_set_level 函数需要包含以下头文件
#include driver/gpio.h3.4 代码实现并编译烧录
#include freertos/FreeRTOS.h // 包含FreeRTOS头文件
#include freertos/task.h // 包含任务管理头文件
#include driver/gpio.h // 包含GPIO驱动头文件#define LED_GPIO GPIO_NUM_27 // 定义GPIO27为LED引脚void LED_RUN(void *arg)
{while(1){gpio_set_level(GPIO_NUM_27, 1); // 点亮LED}
}void app_main(void)
{gpio_config_t io_conf;io_conf.pin_bit_mask (1ULL LED_GPIO); // 设置引脚为GPIO27io_conf.mode GPIO_MODE_OUTPUT; // 设置引脚模式为输出模式io_conf.pull_up_en GPIO_PULLUP_DISABLE; // 禁止上拉电阻io_conf.pull_down_en GPIO_PULLDOWN_DISABLE; // 禁止下拉电阻io_conf.intr_type GPIO_INTR_DISABLE; // 禁止中断gpio_config(io_conf);xTaskCreatePinnedToCore(LED_RUN, LED_RUN, 2048, NULL, 3, NULL, 1); // 创建任务LED_RUN栈大小2048优先级3运行在核心1上
}这段代码通过 ESP-IDF 框架使用 FreeRTOS 创建了一个任务用来控制 GPIO27 引脚点亮一个 LED。
idf.py create-project led // 创建工程
idf.py build // 编译程序
idf.py flash // 烧录程序
idf.py monitor // 日志输出最终我们开发板上的LED就成功点亮了
框架使用 FreeRTOS 创建了一个任务用来控制 GPIO27 引脚点亮一个 LED。
idf.py create-project led // 创建工程
idf.py build // 编译程序
idf.py flash // 烧录程序
idf.py monitor // 日志输出最终我们开发板上的LED就成功点亮了