[ESP32]GPIO口控制

[ESP32]GPIO口控制

需要的头文件


#include "driver/gpio.h"
寄存器版本



#define GPIO_BLUE_LED 2

void Led_Task(void *pvParameter)
{
    while(1)
    {
    	gpio_set_level(GPIO_BLUE_LED, 0);
    	vTaskDelay(1000 / portTICK_RATE_MS);
    	gpio_set_level(GPIO_BLUE_LED, 1);
    	vTaskDelay(1000 / portTICK_RATE_MS);
    }
    vTaskDelete(NULL);
}

//采用寄存器方式
void hw_gpio_init(void)
{
    gpio_config_t io_conf;
    //禁用中断
    io_conf.intr_type = GPIO_PIN_INTR_DISABLE;
    //设置为输出模式
    io_conf.mode = GPIO_MODE_OUTPUT;
    //移位到gpio的寄存器bit
    io_conf.pin_bit_mask = (1<<GPIO_BLUE_LED);
    //下拉禁用
    io_conf.pull_down_en = 0;
    //上拉使能
    io_conf.pull_up_en = 1;
    //配置GPIO
    gpio_config(&io_conf);
}
void app_main()
{
	nvs_flash_init();
	hw_gpio_init();
    xTaskCreate(&Led_Task, "LedBink", 2048, NULL, 5, NULL);
}



函数版


gpio_pad_select_gpio(GPIO_NUM_2);//选择一个GPIO
gpio_set_direction(GPIO_NUM_2, GPIO_MODE_OUTPUT);//把这个GPIO作为输出

gpio_set_level(GPIO_NUM_2, 0);//把这个GPIO输出低电平
gpio_set_level(GPIO_NUM_2, 1);//把这个GPIO输出高电平