查询哪些是可以输出的引脚
乐鑫官网
查看模组/芯片的手册-管脚定义
类型带有‘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);//输出高电平