获取 IO 管脚实时配置状态
GPIO 驱动提供了一个函数gpio_dump_io_configuration() 用来输出指定管脚的实时配置状态,包括上下拉、输入输出使能、管脚映射等。例如,以下命令可用于输出 GPIO4,GPIO8 与 GPIO26 的配置状态:
gpio_dump_io_configuration(stdout, (1ULL << 4) | (1ULL << 18) | (1ULL << 26));
其输出信息如下:
================IO DUMP Start================
IO[4] -
Pullup: 1, Pulldown: 0, DriveCap: 2
InputEn: 1, OutputEn: 0, OpenDrain: 0
FuncSel: 1 (GPIO)
GPIO Matrix SigIn ID: (simple GPIO input)
SleepSelEn: 1
IO[18] -
Pullup: 0, Pulldown: 0, DriveCap: 2
InputEn: 0, OutputEn: 1, OpenDrain: 0
FuncSel: 1 (GPIO)
GPIO Matrix SigOut ID: 256 (simple GPIO output)
SleepSelEn: 1
IO[26] **RESERVED** -
Pullup: 1, Pulldown: 0, DriveCap: 2
InputEn: 1, OutputEn: 0, OpenDrain: 0
FuncSel: 0 (IOMUX)
SleepSelEn: 1
=================IO DUMP End==================
如果你想要查看所有管脚的配置状态,可以使用命令
gpio_dump_all_io_configuration(stdout, SOC_GPIO_VALID_GPIO_MASK);
配置 USB PHY 管脚为普通 GPIO 管脚
要将 USB PHY 管脚配置为普通 GPIO 管脚,可使用函数gpio_config(),请参考以下代码片段来进行配置。
gpio_config_t usb_phy_conf = {
.pin_bit_mask = (1ULL << USB_PHY_DP_PIN) | (1ULL << USB_PHY_DM_PIN),
.mode = GPIO_MODE_INPUT_OUTPUT,
.pull_up_en = 0,
.pull_down_en = 0,
.intr_type = GPIO_INTR_DISABLE,
};
gpio_config(&usb_phy_conf);
API 参考 - 普通 GPIO
Header File
components/esp_driver_gpio/include/driver/gpio.h
此头文件可以包含在以下文件中
#include "driver/gpio.h"。
此头文件是由esp_driver_gpio组件提供的API的一部分。声明您的组件依赖于esp_driver_gpio,请将以下内容添加到CMakeLists.txt中:
REQUIRES esp_driver_gpio
或
PRIV_REQUIRES esp_driver_gpio。
Functions
gpio_config(const gpio_config_t *pGPIOConfig)
GPIO通用配置。
Configure GPIO's Mode,pull-up,PullDown,IntrType
- 参数 pGPIOConfig --指向GPIO配置结构的指针。
- 返回
- ESP_OK --成功。
- ESP_ERR_INVALID_ARG --参数错误。
gpio_reset_pin(gpio_num_t gpio_num)
将gpio重置为默认状态(选择gpio功能,启用上拉并禁用输入和输出)。
- 参数 gpio_num --GPIO编号。
- 返回
- ESP_OK --成功(始终返回)。
备注: 此功能还将此引脚的IOMUX配置为GPIO功能,并断开任何其他通过GPIO矩阵配置外围输出。
gpio_set_intr_type(gpio_num_t gpio_num, gpio_int_type_t intr_type)
GPIO设置中断触发类型。
- 参数
- gpio_num --GPIO编号。如果要设置触发类型,例如GPIO16,gpio_num应该是gpio_num_16(16)。
- intr_type --中断类型,从gpio_int_type_t中选择。
- 返回
- ESP_OK --成功。
- ESP_ERR_INVALID_ARG --参数错误。
gpio_intr_enable(gpio_num_t gpio_num)
启用GPIO模块中断信号。
- 参数
- gpio_num --GPIO编号。如果要设置触发类型,例如GPIO16,gpio_num应该是gpio_num_16(16)。
- 返回
- ESP_OK --成功。
- ESP_ERR_INVALID_ARG --参数错误。
备注: ESP32:使用ADC或Wi-Fi时,请不要使用GPIO36和GPIO39的中断启用睡眠模式的蓝牙。请参考adc1_get_raw的评论。请参阅第节关于此问题的描述,请参阅ESP32 ECO和Bug解决方案的3.11。
gpio_intr_disable(gpio_num_t gpio_num)
禁用GPIO模块中断信号。
- 参数
- gpio_num --GPIO编号。如果要设置触发类型,例如GPIO16,gpio_num应该是gpio_num_16(16)。
- 返回
- ESP_OK --成功。
- ESP_ERR_INVALID_ARG --参数错误。
备注: 当ISR上下文中禁用缓存时,通过启用配置GPIO_CTRL_FUNC_IN_IRAM