此次測試是在menuconfig里面僅修改freeRTOS TICK的頻率由100改為1000,其余設(shè)置均為默認(rèn)。
同優(yōu)先級任務(wù)的測試
0x00 同優(yōu)先級任務(wù)都帶掛起操作測試
在app_main啟動時創(chuàng)建兩個任務(wù),代碼如下:
void app_main(void){
PRINT_TITLE();
ESP_LOGI(TAG, ' STARTING TEST FREERTOS ');
xTaskCreate(task1, 'task1', 2048, NULL, 1, NULL);
xTaskCreate(task2, 'task2', 2048, NULL, 1, NULL);}
任務(wù)函數(shù)代碼如下:
void task1(void *pvParameters){
for(;;)
{
vTaskDelay(100);
ESP_LOGI(TAG, 'task1 running');
}}void task2(void *pvParameters){
for(;;)
{
vTaskDelay(200);
ESP_LOGI(TAG, 'task2 running');
}}
log顯示:
I (305) cpu_start: Starting scheduler on PRO CPU.
======================================================================
______ _____ _____ __ _____ _______ ____ _____
| ____|/ ____| __ / _| | __ __ __/ __ / ____|
| |__ | (___ | |__) | | |_ _ __ ___ ___| |__) | | | | | | | (___
| __| ___ | ___/ | _| '__/ _ / _ _ / | | | | | |___
| |____ ____) | | | | | | | __/ __/ | | | | |__| |____) |
|______|_____/|_| |_| |_| ___|___|_| _ |_| ____/|_____/
======================================================================
I (411) ESP_FREERTOS_TEST: STARTING TEST FREERTOS
I (417) ESP_FREERTOS_TEST: create task1
I (521) ESP_FREERTOS_TEST: task1 running
I (621) ESP_FREERTOS_TEST: task2 running
I (621) ESP_FREERTOS_TEST: task1 running
I (721) ESP_FREERTOS_TEST: task1 running
I (821) ESP_FREERTOS_TEST: task2 running
I (821) ESP_FREERTOS_TEST: task1 running
I (921) ESP_FREERTOS_TEST: task1 running
I (1021) ESP_FREERTOS_TEST: task2 running
I (1021) ESP_FREERTOS_TEST: task1 running
可以看出task1執(zhí)行的頻率是task2的二倍。
0x01 同優(yōu)先級任務(wù)其中一個不帶掛起操作測試
和上面測試代碼一樣,去掉task1中vTaskDelay(100),log如下:
======================================================================
______ _____ _____ __ _____ _______ ____ _____
| ____|/ ____| __ / _| | __ __ __/ __ / ____|
| |__ | (___ | |__) | | |_ _ __ ___ ___| |__) | | | | | | | (___
| __| ___ | ___/ | _| '__/ _ / _ _ / | | | | | |___
| |____ ____) | | | | | | | __/ __/ | | | | |__| |____) |
|______|_____/|_| |_| |_| ___|___|_| _ |_| ____/|_____/
======================================================================
I (411) ESP_FREERTOS_TEST: STARTING TEST FREERTOS
I (417) ESP_FREERTOS_TEST: create task1
I (421) ESP_FREERTOS_TEST: task1 running
I (426) ESP_FREERTOS_TEST: task1 running
I (430) ESP_FREERTOS_TEST: task1 running
I (435) ESP_FREERTOS_TEST: task1 running
I (440) ESP_FREERTOS_TEST: task1 running
I (444) ESP_FREERTOS_TEST: task1 running
I (449) ESP_FREERTOS_TEST: task1 running
I (453) ESP_FREERTOS_TEST: task1 running
I (458) ESP_FREERTOS_TEST: task1 running
I (463) ESP_FREERTOS_TEST: task1 running
I (467) ESP_FREERTOS_TEST: task1 running
I (472) ESP_FREERTOS_TEST: task1 running
I (476) ESP_FREERTOS_TEST: task1 running
I (481) ESP_FREERTOS_TEST: task1 running
I (486) ESP_FREERTOS_TEST: task1 running
I (490) ESP_FREERTOS_TEST: task1 running
I (495) ESP_FREERTOS_TEST: task1 running
I (499) ESP_FREERTOS_TEST: task1 running
I (504) ESP_FREERTOS_TEST: task1 running
I (509) ESP_FREERTOS_TEST: task1 running
I (513) ESP_FREERTOS_TEST: task1 running
I (518) ESP_FREERTOS_TEST: task1 running
I (522) ESP_FREERTOS_TEST: task1 running
I (527) ESP_FREERTOS_TEST: task1 running
I (532) ESP_FREERTOS_TEST: task1 running
I (536) ESP_FREERTOS_TEST: task1 running
I (541) ESP_FREERTOS_TEST: task1 running
I (545) ESP_FREERTOS_TEST: task1 running
I (550) ESP_FREERTOS_TEST: task1 running
I (555) ESP_FREERTOS_TEST: task1 running
I (559) ESP_FREERTOS_TEST: task1 running
I (564) ESP_FREERTOS_TEST: task1 running
I (568) ESP_FREERTOS_TEST: task1 running
I (573) ESP_FREERTOS_TEST: task1 running
I (578) ESP_FREERTOS_TEST: task1 running
I (582) ESP_FREERTOS_TEST: task1 running
I (587) ESP_FREERTOS_TEST: task1 running
I (591) ESP_FREERTOS_TEST: task1 running
I (596) ESP_FREERTOS_TEST: task1 running
I (601) ESP_FREERTOS_TEST: task1 running
I (605) ESP_FREERTOS_TEST: task1 running
I (610) ESP_FREERTOS_TEST: task1 running
I (614) ESP_FREERTOS_TEST: task1 running
I (619) ESP_FREERTOS_TEST: task1 running
I (622) ESP_FREERTOS_TEST: task2 running
I (625) ESP_FREERTOS_TEST: task1 running
從log可以看出task2兩百毫秒左右被執(zhí)行一次,其間task1一直在運(yùn)行。
0x02 同優(yōu)先級任務(wù)都不帶掛起操作測試
這次我將兩個任務(wù)的vTaskDelay()都去掉,log如下:
I (305) cpu_start: Starting scheduler on PRO CPU.
======================================================================
______ _____ _____ __ _____ _______ ____ _____
| ____|/ ____| __ / _| | __ __ __/ __ / ____|
| |__ | (___ | |__) | | |_ _ __ ___ ___| |__) | | | | | | | (___
| __| ___ | ___/ | _| '__/ _ / _ _ / | | | | | |___
| |____ ____) | | | | | | | __/ __/ | | | | |__| |____) |
|______|_____/|_| |_| |_| ___|___|_| _ |_| ____/|_____/
======================================================================
I (411) ESP_FREERTOS_TEST: STARTING TEST FREERTOS
I (417) ESP_FREERTOS_TEST: create task1
I (421) ESP_FREERTOS_TEST: task1 running
I (422) ESP_FREERTOS_TEST: task2 running
I (427) ESP_FREERTOS_TEST: task1 running
I (431) ESP_FREERTOS_TEST: task2 running
I (436) ESP_FREERTOS_TEST: task1 running
I (441) ESP_FREERTOS_TEST: task2 running
I (445) ESP_FREERTOS_TEST: task1 running
I (450) ESP_FREERTOS_TEST: task2 running
可以看出來,這次兩個任務(wù)已經(jīng)開始真正的交替執(zhí)行了。
0x03 對于同優(yōu)先級任務(wù)的結(jié)論:
所有任務(wù)都會被執(zhí)行
任務(wù)在被掛起時,其他任務(wù)立即被執(zhí)行
掛起結(jié)束后可在當(dāng)前運(yùn)行任務(wù)運(yùn)行結(jié)束后開始執(zhí)行
不同優(yōu)先級任務(wù)的測試
0x00 不同優(yōu)先級任務(wù)都帶掛起操作測試
在app_main啟動時創(chuàng)建兩個任務(wù),代碼如下:
void app_main(void){
PRINT_TITLE();
ESP_LOGI(TAG, ' STARTING TEST FREERTOS ');
ESP_LOGI(TAG, 'create task1');
xTaskCreate(task1, 'task1', 2048, NULL, 2, NULL);
xTaskCreate(task2, 'task2', 2048, NULL, 1, NULL);}
任務(wù)函數(shù)代碼如下:
void task1(void *pvParameters){
for(;;)
{
vTaskDelay(100);
ESP_LOGI(TAG, 'task1 running');
}}void task2(void *pvParameters){
for(;;)
{
vTaskDelay(200);
ESP_LOGI(TAG, 'task2 running');
}}
log顯示:
I (305) cpu_start: Starting scheduler on PRO CPU.
======================================================================
______ _____ _____ __ _____ _______ ____ _____
| ____|/ ____| __ / _| | __ __ __/ __ / ____|
| |__ | (___ | |__) | | |_ _ __ ___ ___| |__) | | | | | | | (___
| __| ___ | ___/ | _| '__/ _ / _ _ / | | | | | |___
| |____ ____) | | | | | | | __/ __/ | | | | |__| |____) |
|______|_____/|_| |_| |_| ___|___|_| _ |_| ____/|_____/
======================================================================
I (411) ESP_FREERTOS_TEST: STARTING TEST FREERTOS
I (417) ESP_FREERTOS_TEST: create task1
I (521) ESP_FREERTOS_TEST: task1 running
I (621) ESP_FREERTOS_TEST: task1 running
I (621) ESP_FREERTOS_TEST: task2 running
I (721) ESP_FREERTOS_TEST: task1 running
I (821) ESP_FREERTOS_TEST: task1 running
I (821) ESP_FREERTOS_TEST: task2 running
I (921) ESP_FREERTOS_TEST: task1 running
從log可以看出,task1執(zhí)行頻率是task2頻率的二倍,這與同優(yōu)先級的測試結(jié)果一致。
0x01 不同優(yōu)先級任務(wù)高優(yōu)先級任務(wù)不帶掛起操作測試
在task1里去掉vTaskDelay(100);,log如下:
I (305) cpu_start: Starting scheduler on PRO CPU.
======================================================================
______ _____ _____ __ _____ _______ ____ _____
| ____|/ ____| __ / _| | __ __ __/ __ / ____|
| |__ | (___ | |__) | | |_ _ __ ___ ___| |__) | | | | | | | (___
| __| ___ | ___/ | _| '__/ _ / _ _ / | | | | | |___
| |____ ____) | | | | | | | __/ __/ | | | | |__| |____) |
|______|_____/|_| |_| |_| ___|___|_| _ |_| ____/|_____/
======================================================================
I (411) ESP_FREERTOS_TEST: STARTING TEST FREERTOS
I (417) ESP_FREERTOS_TEST: create task1
I (421) ESP_FREERTOS_TEST: task1 running
I (426) ESP_FREERTOS_TEST: task1 running
I (430) ESP_FREERTOS_TEST: task1 running
I (435) ESP_FREERTOS_TEST: task1 running
I (440) ESP_FREERTOS_TEST: task1 running
上一篇:API調(diào)用小記(Touchdesigner和ESP32)
下一篇:ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
推薦閱讀最新更新時間:2025-06-30 12:50






設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- 使用 MaxLinear, Inc 的 SPX385AN-1.2/TR 的參考設(shè)計
- LTC4089,通用鋰離子電池充電器可在僅 2cm2 的面積內(nèi)從 USB 和 6V 至 36V 輸入供電
- LTC3425 的典型應(yīng)用 - 5A、8MHz、4 相同步升壓型 DC/DC 轉(zhuǎn)換器
- LT1934ES6 3.3V降壓轉(zhuǎn)換器典型應(yīng)用電路
- 使用 Analog Devices 的 LT1764AEFE-1.5 的參考設(shè)計
- EVAL-ADUC7039QSPZ,用于汽車系統(tǒng)的 ADUC7039 集成精密電池傳感器的評估板
- ADP1612-BL1-EVZ,用于 ADP1612 升壓轉(zhuǎn)換器的空白評估板
- DI-132 - 1.75W高效率線性充電器替代品
- 使用 MaxLinear, Inc 的 XRP7618IGB-F 的參考設(shè)計
- 基于STM32的貪吃蛇游戲設(shè)計(程序、PCB)
- 南芯科技推出高集成度多口移動電源解決方案,助力充電寶市場穩(wěn)健發(fā)展
- 英飛凌推出具有超低導(dǎo)通電阻的CoolSiC? MOSFET 750 V G2,適用于汽車和工業(yè)功率電子應(yīng)用
- DigiKey 慶祝 B 站賬號粉絲突破 10 萬,贈送驚喜禮包
- 碳化硅企業(yè) Wolfspeed 啟動破產(chǎn)重組,預(yù)計 2025 年三季度末完成司法重整
- 蘋果被曝考慮放棄自研模型 轉(zhuǎn)而與Anthropic或OpenAI合作
- ?百度文心4.5來襲!英特爾Day0即支持端側(cè)部署
- 【廣瀨電機(jī)】關(guān)于中國發(fā)明專利侵權(quán)訴訟達(dá)成和解的公告
- 英飛凌BMS解決方案推動電動汽車創(chuàng)新
- 地平線的L3判斷與實踐路徑
- 汽車網(wǎng)絡(luò)升級攻略:CAN-CAN FD-車載以太網(wǎng)