- 本文采用API函数设置的方式。
- 还有通过结构体的方式进行配置的方式可参考文末文献。
相关函数
gpio_pad_select_gpio(BLINK_GPIO);
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
gpio_set_level(gpio_pin[i], 0);
demo
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "sdkconfig.h"
#include <esp_log.h>
#include "driver/gpio.h"
#define GPIO12 12
#define GPIO13 13
#define GPIO14 14
#define GPIO15 15
#define GPIO02 02
#define GPIO25 25
#define GPIO32 32
#define GPIO33 33
#define GPIO34 34
#define GPIO35 35
#define GPIO36 36
#define GPIO37 37
#define GPIO38 38
#define GPIO39 39
uint8_t gpio_pin[] = {GPIO12, GPIO13, GPIO14, GPIO15, GPIO02, GPIO25, GPIO32, GPIO33, GPIO33, GPIO34, GPIO35, GPIO36, GPIO37, GPIO38, GPIO39};
void app_main(void)
{
ESP_LOGI(TAG, "APP Start......");
gpio_pad_select_gpio(BLINK_GPIO);
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
for(uint8_t i = 0; i < sizeof(gpio_pin)/sizeof(*gpio_pin); i++) {
gpio_pad_select_gpio(gpio_pin[i]);
gpio_set_direction(gpio_pin[i], GPIO_MODE_OUTPUT);
printf("set gpio pin %d \r\n", gpio_pin[i]);
}
while(1) {
ESP_LOGI(TAG, "Turning On the LED\n");
gpio_set_level(BLINK_GPIO, 0);
for(uint8_t i = 0; i < sizeof(gpio_pin)/sizeof(*gpio_pin); i++) {
gpio_set_level(gpio_pin[i], 0);
}
vTaskDelay(1000 / portTICK_PERIOD_MS);
ESP_LOGI(TAG, "Turning Off the LED\n");
gpio_set_level(BLINK_GPIO, 1);
for(uint8_t i = 0; i < sizeof(gpio_pin)/sizeof(*gpio_pin); i++) {
gpio_set_level(gpio_pin[i], 1);
}
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
运行结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/da1420d022f0aa91b8b73e44a66dd8cd.png)
参考
参考官方案例
参考