一、特殊引脚说明
仅输入引脚
- GPIO 34-39是GPIO仅输入引脚。这些引脚没有内部上拉或下拉电阻。它们不能用作输出,因此只能将这些引脚用于输入
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 37
- GPIO 38
- GPIO 39
集成在ESP-WROOM-32上的SPI闪存
- 在一些ESP32开发板中,GPIO 6-GPIO 11是暴露的。但是,这些引脚连接到ESP-WROOM-32芯片上的集成SPI闪存,不建议用于其他用途。
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
电容式触摸GPIO
-
ESP32有10个内部电容式触摸传感器。这些传感器可以感知任何带有电荷的东西的变化,比如人的皮肤。因此,它们可以检测到用手指触摸GPIO时引起的变化。这些引脚可以很容易地集成到电容式焊盘中,并取代机械按钮。电容式触摸引脚还可以用来将ESP32从深度睡眠中唤醒。那些内部触摸传感器就连接到这些GPIO上:
- T0 (GPIO 4)
- T1 (GPIO 0)
- T2 (GPIO 2)
- T3 (GPIO 15)
- T4 (GPIO 13)
- T5 (GPIO 12)
- T6 (GPIO 14)
- T7 (GPIO 27)
- T8 (GPIO 33)
- T9 (GPIO 32)
二、头文件位置
components/driver/include/driver/gpio.h
三、常用类型
gpio_num_t
- GPIO编号的枚举值,比如
gpio_num_1
或者1
表示GPIO 1
gpio_mode_t
- GPIO输入、输出模式枚举:
GPIO_MODE_DISABLE
: disable input and outputGPIO_MODE_INPUT
: input onlyGPIO_MODE_OUTPUT
: output only modeGPIO_MODE_OUTPUT_OD
: output only with open-drain modeGPIO_MODE_INPUT_OUTPUT_OD
: output and input with open-drain modeGPIO_MODE_INPUT_OUTPUT
: output and input mode
gpio_pull_mode_t
- GPIO上、下拉电阻枚举:
GPIO_PULLUP_ONLY
: 仅上拉GPIO_PULLDOWN_ONLY
: 仅下拉GPIO_PULLUP_PULLDOWN
: 上拉+下拉GPIO_FLOATING
: 悬空
gpio_int_type_t
- GPIO中断枚举:
GPIO_INTR_DISABLE
: 禁用GPIO中断GPIO_INTR_POSEDGE
: 上升沿触发GPIO_INTR_NEGEDGE
: 下降沿触发GPIO_INTR_ANYEDGE
: 任意沿触发GPIO_INTR_LOW_LEVEL
: 低电平触发GPIO_INTR_HIGH_LEVEL
: 高电平触发
gpio_pulldown_t
- 下拉电阻使能枚举
GPIO_PULLDOWN_DISABLE
GPIO_PULLDOWN_ENABLE
gpio_pullup_t
- 上拉电阻使能枚举
GPIO_PULLUP_DISABLE
GPIO_PULLUP_ENABLE
gpio_config_t结构体
typedef struct {
uint64_t pin_bit_mask; /*!< GPIO pin: set with bit mask, each bit maps to a GPIO */
gpio_mode_t mode; /*!< GPIO mode: set input/output mode */
gpio_pullup_t pull_up_en; /*!< GPIO pull-up */
gpio_pulldown_t pull_down_en; /*!< GPIO pull-down */
gpio_int_type_t intr_type; /*!< GPIO interrupt type */
#if SOC_GPIO_SUPPORT_PIN_HYS_FILTER
gpio_hys_ctrl_mode_t hys_ctrl_mode; /*!< GPIO hysteresis: hysteresis filter on slope input */
#endif
} gpio_config_t;
pin_bit_mask
: 位图,大小64位,表示所有GPIOmode
: GPIO的输入、输出模式pull_up_en
: 上拉电阻使能,前提已配置上拉电阻pull_down_en
: 下拉电阻使能,前提已配置下拉电阻intr_type
: 中断类型:
四、常用API
gpio_config
esp_err_t gpio_config(const gpio_config_t *pGPIOConfig);
- 通过gpio_config_t结构体整体配置GPIO
- 参数:
- pGPIOConfig: gpio_config_t类型指针
- 返回
ESP_OK
: 配置成功ESP_ERR_INVALID_ARG
: 参数错误
gpio_reset_pin
esp_err_t gpio_reset_pin(gpio_num_t gpio_num);
- 恢复GPIO默认设置
- 参数:
- gpio_num: 要reset的GPIO
- 返回: 永远返回
ESP_OK
gpio_set_direction
esp_err_t gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode);
- 设置GPIO的mode
- 参数:
- gpio_num: 要设置的GPIO
- mode:GPIO要设置的模式
- 返回:
ESP_OK
: 成功ESP_ERR_INVALID_ARG
: 参数错误
gpio_set_level
esp_err_t gpio_set_level(gpio_num_t gpio_num, uint32_t level);
- 设置GPIO输出电平
- 参数: