Skip to content

查询哪些是可以输出的引脚

乐鑫官网 查看模组/芯片的手册-管脚定义 类型带有‘O’(OUTPUT)的就是可以输出的引脚

注意

esp32 wroom 32有几个引脚是仅输入的

Arduino 方式

设置引脚 pinMode(pin, mode)

在输出前必须至少设置一次引脚模式 pinMode(pin, mode)

pin: IO号 纯数字

手册里面写IO几就是几,名称不是IO开头的就查看后面的GPIO号码

mode :引脚模式

ESP32引脚有下面几种模式 简单数字输出时选择 OUTPUT

#define INPUT             0x01 //输入

//OUTPUT
#define OUTPUT            0x03 //普通输出
#define PULLUP            0x04 //上拉
#define INPUT_PULLUP      0x05 //上拉输入
#define PULLDOWN          0x08 //下拉
#define INPUT_PULLDOWN    0x09 //下拉输入
#define OPEN_DRAIN        0x10 //开漏 不能输出高电平
#define OUTPUT_OPEN_DRAIN 0x13 //开漏输出 可以输出高电平
#define ANALOG            0xC0 //ADC模式

数字输出 digitalWrite(pin, value)

  • pin:IO号 同上
  • value:HIGH为高电平 LOW为低电平

ESP-IDF方式

需要包含头文件 #include "driver/gpio.h"

设置引脚 gpio_config(gpio_config_t*)

GPIO配置结构体如下 pin_bit_mask 是引脚的位掩码,使用多少号IO,就把该变量的多少位置1

/**
 * @brief Configuration parameters of GPIO pad for gpio_config function
 */
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;

示例:

int pin=10;
gpio_config_t config = {
        .pin_bit_mask = 1<<pin,
        .mode = GPIO_MODE_OUTPUT,//设置为输出
        .pull_up_en = GPIO_PULLUP_DISABLE,//不启用上拉
        .pull_down_en = GPIO_PULLDOWN_DISABLE,//不启用下拉
        .intr_type = GPIO_INTR_DISABLE//不启用中断
    };
gpio_config(&config);

输出 gpio_set_level()

官网API参考 esp_err_t gpio_set_level(gpio_num_t gpio_num, uint32_t level)

示例

    int pin=10; //定义引脚号
    gpio_num_t gpio_num = static_cast<gpio_num_t>(pin);//转化为gpio_num_t类型
    gpio_set_level(gpio_num, 1);//输出高电平