主页 > 开源代码  > 

ESP32GPIO使用

ESP32GPIO使用
ESP32 GPIO使用 #define GPIO_OUT_PIN 2 //定义引脚号 #define GPIO_OUTPUT_PIN_SEL (1<<GPIO_OUT_PIN) //定义输出引脚的宏,用来将输出引脚号转换为位掩码 void bsp_gpio_init(){ gpio_config_t io_conf; io_conf.pin_bit_mask = GPIO_OUTPUT_PIN_SEL; // 配置GPIO引脚 io_conf.mode = GPIO_MODE_OUTPUT; // 配置GPIO模式 io_conf.pull_up_en = 0; // 配置上拉电阻 io_conf.pull_down_en = 0; // 配置下拉电阻 io_conf.intr_type = GPIO_INTR_ANYEDGE; //配置GPIO口的中断类型 gpio_config(&io_conf); }

其他可以选择的参数: intr_type:中断类型 GPIO_PIN_INTR_DISABLE(禁止中断) GPIO_PIN_INTR_POSEDGE(上升沿触发) GPIO_PIN_INTR_NEGEDGE(下降沿触发) GPIO_PIN_INTR_ANYEDGE(边沿触发) GPIO_PIN_INTR_LOW_LEVEL(低电平触发) GPIO_PIN_INTR_HIGH_LEVEL(高电平触发)。

mode:GPIO口的工作模式, GPIO_MODE_INPUT(输入模式) GPIO_MODE_OUTPUT(输出模式) GPIO_MODE_INPUT_OUTPUT(输入/输出模式)。

pin_bit_mask:GPIO口的引脚编号 GPIO_INPUT_PIN_SEL(输入引脚) GPIO_OUTPUT_PIN_SEL(输出引脚)。

pull_down_en:是否启用GPIO口的下拉电阻,可以选择0(禁止)或1(启用)。 pull_up_en:是否启用GPIO口的上拉电阻,可以选择0(禁止)或1(启用)。

示例:

#include <stdio.h> #include "esp_log.h" #include"freertos/FreeRTOS.h" #include"freertos/task.h" #include"driver/gpio.h" #include "driver/uart.h" #include <esp_timer.h> #define GPIO_OUT_PIN 2 #define GPIO_OUTPUT_PIN_SEL (1<<GPIO_OUT_PIN) #define GPIO_ON gpio_set_level(GPIO_OUT_PIN, 1) //高电平 #define GPIO_OFF gpio_set_level(GPIO_OUT_PIN, 0) //低电平 static const char* TAG = "MyModule"; //#define BUF_SIZE (1024) void bsp_gpio_init(){ gpio_config_t io_conf; io_conf.pin_bit_mask = GPIO_OUTPUT_PIN_SEL; // 配置GPIO引脚 io_conf.mode = GPIO_MODE_OUTPUT; // 配置GPIO模式 io_conf.pull_up_en = 0; // 配置上拉电阻 io_conf.pull_down_en = 0; // 配置下拉电阻 io_conf.intr_type = GPIO_INTR_ANYEDGE; //配置GPIO口的中断类型 gpio_config(&io_conf); // uart_config_t uart_config = { // .baud_rate = 115200, // .data_bits = UART_DATA_8_BITS, // .parity = UART_PARITY_DISABLE, // .stop_bits = UART_STOP_BITS_1, // .flow_ctrl = UART_HW_FLOWCTRL_DISABLE // }; // uart_param_config(UART_NUM_1, &uart_config); // uart_set_pin(UART_NUM_1, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE); // uart_driver_install(UART_NUM_1, BUF_SIZE * 2, 0, 0, NULL, 0); printf("init\n"); ESP_LOGI(TAG, "GPIO Init ready!"); } void app_main(void) { uint16_t count = 0; bsp_gpio_init(); while(1){ if(0 == count){ count = 1; GPIO_ON; } else{ count = 0; GPIO_OFF; } printf("\ncount: %d\n",count); vTaskDelay(1000 / portTICK_PERIOD_MS); /* 1000 / portTICK_PERIOD_MS,表示延时1000ms, portTICK_PERIOD_MS表示每ms有多少个ticks, ticks是一个时间片,一般1ms有1000ticks, 如果延时1000ms,则需要1000*1000=1000000ticks。 */ } }

有关ESP_LOGI(TAG, “GPIO Init ready!”);可以看之前文章 blog.csdn.net/hongyun1221/article/details/129391697

标签:

ESP32GPIO使用由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“ESP32GPIO使用