代码
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "driver/gpio.h"
#include "esp_log.h"
static const char *TAG = "led example";
void app_main(void)
{
ESP_LOGI(TAG, "led test");
ESP_ERROR_CHECK(gpio_set_direction(13, GPIO_MODE_OUTPUT));
ESP_ERROR_CHECK(gpio_set_direction(12, GPIO_MODE_OUTPUT));
gpio_set_level(13, 1);
gpio_set_level(12, 0);
while (1)
{
ESP_LOGI(TAG, "led high");
gpio_set_level(13, 1);
gpio_set_level(12, 0);
vTaskDelay(1000 / portTICK_PERIOD_MS);
ESP_LOGI(TAG, "led low");
gpio_set_level(13, 0);
gpio_set_level(12, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
分部解释
引用部分
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "driver/gpio.h"
#include "esp_log.h"
这个#include <stdio.h>
就是默认要加的,不用太关注。
#include "sdkconfig.h"
是sdk的配置文件,也是默认引用的,但是这里没有用到。sdk配置文件简单理解就是用来设置烧录时候的各种参数的,比如DIO,flash是2M还是4M。然后会自动生成一个sdkconfig.h的文件,方便用户引用。
#include "freertos/FreeRTOS.h" #include "freertos/task.h"
在这里只是为了用freeRTOS的延时函数。dis一下,官方也不提供点好用的延时。
#include "esp_system.h"
延时和一些基本系统操作,这里没用到,官方延时不好用。
#include "driver/gpio.h"
gpio相关的库。
#include "esp_log.h"
log的库,用来输出log的,和printf比 ,log输出是对printf的改版和标准化。log输出有颜色,有信息,有来源,有内容,有等级。看起来更舒服,用起来也舒服。
内容部分
//log的标识,用来指示来源的,写什么都行,只要自己知道是啥意思就好
static const char *TAG = "led example";
void app_main(void)
{
ESP_LOGI(TAG, "led test");//log info 输出
//初始化 gpio,这里只初始化了一个,多个io初始化可以看官方的例程
//ESP_ERROR_CHECK是错误处理,点个灯,加不加无所谓
ESP_ERROR_CHECK(gpio_set_direction(13, GPIO_MODE_OUTPUT));
ESP_ERROR_CHECK(gpio_set_direction(12, GPIO_MODE_OUTPUT));
//设置gpio高低电平
gpio_set_level(13, 1);
gpio_set_level(12, 0);
while (1)
{
ESP_LOGI(TAG, "led high");
gpio_set_level(13, 1);
gpio_set_level(12, 0);
//延时1s
vTaskDelay(1000 / portTICK_PERIOD_MS);
ESP_LOGI(TAG, "led low");
gpio_set_level(13, 0);
gpio_set_level(12, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}