开发板购买链接
https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111deb2Ij1As&ft=t&id=626366733674
开发板简介
开发环境搭建 windows
源码示例:
0_Hello Bug (ESP_LOGX与printf) 工程模板/打印调试输出
1_LED LED亮灭控制
2_LED_Task 使用任务方式控制LED
3_LEDC_PWM 使用LEDC来控制LED实现呼吸灯效果
4_ADC_LightR 使用ADC读取光敏电阻实现光照传感
5_KEY_Short_Long 按钮长按短按实现
6_TouchPad_Interrupt 电容触摸中断实现
7_WS2812_RMT RGB_LED彩虹变色示例
8_DHT11_RMT 使用RMT实现读取DHT11温湿度传感器
9_SPI_SDCard 使用SPI总线实现TF卡文件系统示例
10_IIC_ADXL345 使用IIC总线实现读取ADXL345角度加速度传感器
11_IIC_AT24C02 使用IIC总线实现小容量数据储存测试
12_IR_Rev_RMT 使用RMT实现红外遥控接收扫码(NEC)
13_IR_Send_RMT 使用RMT实现红外数据发送(NEC)
14_WIFI_Scan 附近WIFI信号扫描示例
15_WIFI_AP 创建软AP示例
16_WIFI_AP_TCP_Server 在软AP模式下实现TCP服务端
17_WIFI_AP_TCP_Client 在软AP模式下实现TCP客户端
18_WIFI_AP_UDP 在软AP模式下实现UDP通讯
19_WIFI_STA 创建STA站模
20_WIFI_STA_TCP_Server 在站模式STA下实现TCP服务端
21_WIFI_STA_TCP_Client 在站模式STA下实现TCP客户端
22_WIFI_STA_UDP 在站模式STA下实现UDP通讯
23_LVGL_Test LVGL图形库简单示例
一、硬件设计/原理
查看开发板原理图,可以看到开发板上有两个指示灯,一个是电源指示灯,直接3.3V到地,不受程序控制,APP_LED接在ESP32-WROOM-32E集成模拟的GPIO4脚上,看原理图可得知IO4拉高LED即灭掉,到地则亮起
二、程序设计
先引用必要头文件
控制LED其实就是控制GPIO的电平高低,需要操作GPIO所以要引入esp_idf框架的gpio头文件
// LED_Task Example
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "sdkconfig.h"
#include <esp_log.h>
定义LED所连接的GPIO号
#define BLINK_GPIO 4 // LED 连接的 GPIO端口
编写main函数
void app_main(void)
{
ESP_LOGI(TAG, "APP Start......");
// 参数:任务函数,任务别名,任务堆栈的深度,参数的指针,任务优先级,回传句柄
xTaskCreate(&blink_task,"LED_Task",configMINIMAL_STACK_SIZE,NULL,5,NULL);
}
xTaskCreate函数原型
portBASE_TYPE xTaskCreate(
pdTASK_CODE pvTaskCode,
const portCHAR * const pcName,
unsigned portSHORT usStackDepth,
void *pvParameters,
unsigned portBASE_TYPE uxPriority,
xTaskHandle *pvCreatedTask);
pvTaskCode :指向任务函数。任务必须以永不返回的形式实现(比如一个死循环)
pcName : 任务函数的别名,仅仅是方便调试所用
usStackDepth :任务堆栈的深度,定义了堆栈可以包含的变量数——不是字节数。比如如果堆栈的宽度为16BIT,而 usStackDepth定义为100,则200 字节被分配给堆栈存储。堆栈深度乘以堆栈宽度的最大值,不能超过 size_t变量能包含的最大值
pvParameters :作为参数的指针,当任务创建时
uxPriority :任务的优先级。包括MPU支持的系统可以选择在特权模式(系统模式)创建任务,通过设置优先级参数的portPRIVILEGE_BIT位。比如,创建一个特权任务在优先级2,则uxPriority 应当设置为( 2 | portPRIVILEGE_BIT )
pvCreatedTask :回传一个句柄,以便创建的任务可以被关联。返回值:pdPASS,如果任务成功创建且添加到就绪列表,否则返回一个错误代码,见 projdefs.h
blink_task任务函数
void blink_task(void *pvParameter)
{
gpio_pad_select_gpio(BLINK_GPIO);// 选择要操作的GPIO
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);// 设置GPIO为推挽输出模式
while(1) {
ESP_LOGI(TAG, "Turning On the LED\n");
gpio_set_level(BLINK_GPIO, 0);// GPIO输出低
vTaskDelay(1000 / portTICK_PERIOD_MS);
ESP_LOGI(TAG, "Turning Off the LED\n");
gpio_set_level(BLINK_GPIO, 1);// GPIO输出高
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
此函数和
https://blog.csdn.net/cnicfhnui/article/details/108407571 控制LED函数一样
三、下载测试
打开ESP-IDF Command Prompt
cd命令进入此工程目录
cd F:\ESP32_DevBoard_File\2_LED_Task
查看电脑设备管理器中开发板的串口号
执行idf.py -p COM9 flash monitor从串口9下载并运行打开口显示设备调试信息 Ctrl+c退出运行
可以看到开发板的APP_LED一直闪烁。