ESP32C3的GPIO操作
下面是驱动ESP32C3的GPIO操作方法汇总
开发环境:VSCode、ESP-IDF简单操作方法
#include <stdio.h> #include <driver/gpio.h> #include <sys/unistd.h> //usleep()函数在这里,单位是微妙 #include <esp_rom_gpio.h> //esp_rom_gpio_pad_select_gpio()函数的头文件 //gpio_pad_select_gpio()函数,个人使用时找不到。 void Delay_ms(unsigned int ums) { usleep(ums * 1000); } void GPIO_Init(void) { esp_rom_gpio_pad_select_gpio(GPIO_NUM_12); //选择具体的引脚 gpio_set_direction(GPIO_NUM_12,GPIO_MODE_OUTPUT); //设置引脚的输出方向 gpio_set_level(GPIO_NUM_12,0); } void app_main(void) { GPIO_Init(); while(1) { Delay_ms(800); gpio_set_level(GPIO_NUM_12,1); Delay_ms(800); gpio_set_level(GPIO_NUM_12,0); } }
使用结构体操作方法
使用结构体的方式更像STM32的编程风格。注意:使用结构体方式,需要提前为pin_bit_mask参数设定使用的数值。
格式:#define GPIO_OUTPUT_PIN_SEL (1ULL << GPIO_NUM_12)。GPIO_NUM_12是引脚的编号。
//在简单方式的代码中添加宏定义和替换GPIO_Init()的内容即可。 #define GPIO_OUTPUT_PIN_SEL (1ULL << GPIO_NUM_12) void GPIO_Init(void) { gpio_config_t io_config; io_config.intr_type = GPIO_INTR_DISABLE; //不使用中断 io_config.mode = GPIO_MODE_DEF_OUTPUT; //输出模式 io_config.pin_bit_mask = GPIO_OUTPUT_PIN_SEL; //选择引脚 io_config.pull_down_en = GPIO_PULLDOWN_DISABLE; //不下拉 io_config.pull_up_en = GPIO_PULLUP_DISABLE; //不上拉 gpio_config(&io_config); gpio_set_level(GPIO_NUM_12,0); }