開發板購買鏈接
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一直閃爍,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/1595.html
標籤:其他
下一篇:記一次簡單域滲透實驗
