主要参考b站宸芯IOT老师的视频,记录自己的笔记,老师讲的主要是linux环境,但配置过程实在太多问题,就直接用windows环境了,老师也有讲一些windows的操作,只要代码会写,操作都还好,开发板用ESP-WROOM-32,其实坑还挺多的,慢慢来吧。
通过控制GPIO高低电平来控制LED灯的亮灭,对于ESP32的供电系统,3.3v是高电平,0v是低电平
以下代码创建了一个任务,并每500ms反转一次GPIO电平,其中,初始化时,使用了gpio_config_t结构体,在ESP32工程中,常通过这种方式配置外设。
c
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "driver/gpio.h"
#define LED_GPIO GPIO_NUM_27
//500ms翻转1次任务
void led_run_task(void* param)
{
int gpio_level = 0;
while (1)
{
gpio_level = gpio_level?0:1;//翻转电平
gpio_set_level(LED_GPIO , gpio_level);//设置电平
vTaskDelay(pdMS_TO_TICKS(500));
}
}
void app_main(void)
{
gpio_config_t led_cfg ={
.pin_bit_mask = (1<<LED_GPIO),//选择GPIO引脚,可以同时配置多个
.pull_up_en = GPIO_PULLUP_DISABLE,//因为是输出,不需要配置上拉
.pull_down_en = GPIO_PULLDOWN_DISABLE,//也不需要下拉
.mode = GPIO_MODE_OUTPUT,//设为输出模式
.intr_type = GPIO_INTR_DISABLE,//不需要中断
};
gpio_config(&led_cfg);//初始化
xTaskCreatePinnedToCore(led_run_task , "led" , 2048 , NULL , 3 , NULL , 1);
}