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);
}