GPIO 输出输出配置
![[Pasted image 20250519103522.png]]
![[Pasted image 20250519103658.png]]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include <stdio.h> #include "driver/gpio.h" #include "freertos/FreeRTOS.h"
void app_main(void) {
gpio_reset_pin(GPIO_NUM_9); gpio_set_direction(GPIO_NUM_9, GPIO_MODE_OUTPUT); while (1) { gpio_set_level(GPIO_NUM_9, 0); vTaskDelay(pdMS_TO_TICKS(1000)); gpio_set_level(GPIO_NUM_9, 1); vTaskDelay(pdMS_TO_TICKS(1000)); } }
|
主要区别对比
特性 |
gpio_config |
gpio_reset_pin + gpio_set_direction |
配置方式 |
批量配置(可配置多个GPIO) |
单个GPIO逐个配置 |
功能支持 |
支持模式、上拉/下拉、中断等 |
仅支持方向(输入/输出) |
灵活性 |
更高(可配置更多参数) |
较低(仅方向) |
适用场景 |
复杂GPIO配置(多引脚、特殊功能) |
简单GPIO方向设置 |
GPIO 驱动能力
![[Pasted image 20250519110820.png]]
![[Pasted image 20250519110925.png]]
GPIO输入示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <stdio.h> #include "driver/gpio.h" #include "freertos/FreeRTOS.h" #include "esp_log.h"
void app_main(void) { gpio_config_t gpio_cfg = { .pin_bit_mask = 1ULL << 1, .mode = GPIO_MODE_INPUT, .pull_up_en = GPIO_PULLUP_ENABLE, }; ESP_ERROR_CHECK(gpio_config(&gpio_cfg)); gpio_dump_io_configuration(stdout, 1ULL<<1);
while (1) { int level = gpio_get_level(GPIO_NUM_1); ESP_LOGE("TAG", "GPIO1 input level:%d", level); ESP_LOGW("TAG", "GPIO1 input level:%d", level); ESP_LOGI("TAG", "GPIO1 input level:%d", level); ESP_LOGD("TAG", "GPIO1 input level:%d", level); ESP_LOGV("TAG", "GPIO1 input level:%d", level);
vTaskDelay(pdMS_TO_TICKS(1000)); } }
|
![[Pasted image 20250519111241.png]]