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 (624) ESP_FREERTOS_TEST: task1 running
I (628) ESP_FREERTOS_TEST: task1 running
I (633) ESP_FREERTOS_TEST: task1 running
I (637) ESP_FREERTOS_TEST: task1 running
I (642) ESP_FREERTOS_TEST: task1 running
I (647) ESP_FREERTOS_TEST: task1 running
I (651) ESP_FREERTOS_TEST: task1 running
I (656) ESP_FREERTOS_TEST: task1 running
I (660) ESP_FREERTOS_TEST: task1 running
I (665) ESP_FREERTOS_TEST: task1 running
I (670) ESP_FREERTOS_TEST: task1 running
I (674) ESP_FREERTOS_TEST: task1 running
I (679) ESP_FREERTOS_TEST: task1 running
I (683) ESP_FREERTOS_TEST: task1 running
I (688) ESP_FREERTOS_TEST: task1 running
I (693) ESP_FREERTOS_TEST: task1 running
...
?[0;3E (5361) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (5361) task_wdt: - IDLE (CPU 0)
E (5361) task_wdt: Tasks currently running:
E (5361) task_wdt: CPU 0: task1
E (5361) task_wdt: Print CPU 0 (current core) backtrace
...
從log中我們可以看到task1一直在執(zhí)行,task2沒機會執(zhí)行,而且觸發(fā)了死循環(huán)任務(wù)看門狗。
0x02 不同優(yōu)先級任務(wù)低優(yōu)先級任務(wù)不帶掛起操作測試
這次我們恢復(fù)task1的vTaskDelay(100);,去掉task2的vTaskDelay(200);,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: task2 running
I (426) ESP_FREERTOS_TEST: task2 running
I (430) ESP_FREERTOS_TEST: task2 running
I (435) ESP_FREERTOS_TEST: task2 running
I (440) ESP_FREERTOS_TEST: task2 running
I (444) ESP_FREERTOS_TEST: task2 running
I (449) ESP_FREERTOS_TEST: task2 running
I (453) ESP_FREERTOS_TEST: task2 running
I (458) ESP_FREERTOS_TEST: task2 running
I (463) ESP_FREERTOS_TEST: task2 running
I (467) ESP_FREERTOS_TEST: task2 running
I (472) ESP_FREERTOS_TEST: task2 running
I (476) ESP_FREERTOS_TEST: task2 running
I (481) ESP_FREERTOS_TEST: task2 running
I (486) ESP_FREERTOS_TEST: task2 running
I (490) ESP_FREERTOS_TEST: task2 running
I (495) ESP_FREERTOS_TEST: task2 running
I (499) ESP_FREERTOS_TEST: task2 running
I (504) ESP_FREERTOS_TEST: task2 running
I (509) ESP_FREERTOS_TEST: task2 running
I (513) ESP_FREERTOS_TEST: task2 running
I (518) ESP_FREERTOS_TEST: task2 running
I (521) ESP_FREERTOS_TEST: task1 running
I (527) ESP_FREERTOS_TEST: task2 running
I (532) ESP_FREERTOS_TEST: task2 running
I (536) ESP_FREERTOS_TEST: task2 running
I (541) ESP_FREERTOS_TEST: task2 running
I (545) ESP_FREERTOS_TEST: task2 running
I (550) ESP_FREERTOS_TEST: task2 running
I (555) ESP_FREERTOS_TEST: task2 running
I (559) ESP_FREERTOS_TEST: task2 running
I (564) ESP_FREERTOS_TEST: task2 running
I (568) ESP_FREERTOS_TEST: task2 running
I (573) ESP_FREERTOS_TEST: task2 running
I (578) ESP_FREERTOS_TEST: task2 running
I (582) ESP_FREERTOS_TEST: task2 running
I (587) ESP_FREERTOS_TEST: task2 running
I (591) ESP_FREERTOS_TEST: task2 running
I (596) ESP_FREERTOS_TEST: task2 running
I (601) ESP_FREERTOS_TEST: task2 running
I (605) ESP_FREERTOS_TEST: task2 running
I (610) ESP_FREERTOS_TEST: task2 running
I (614) ESP_FREERTOS_TEST: task2 running
I (619) ESP_FREERTOS_TEST: task2 running
I (624) ESP_FREERTOS_TEST: task2 running
I (627) ESP_FREERTOS_TEST: task1 running
I (633) ESP_FREERTOS_TEST: task2 running
I (637) ESP_FREERTOS_TEST: task2 running
I (642) ESP_FREERTOS_TEST: task2 running
從log可以看出,task1掛起之后task2開始執(zhí)行,一直到task1掛起結(jié)束。
0x03 不同優(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 (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 (624) ESP_FREERTOS_TEST: task1 running
I (628) ESP_FREERTOS_TEST: task1 running
I (633) ESP_FREERTOS_TEST: task1 running
I (637) ESP_FREERTOS_TEST: task1 running
I (642) ESP_FREERTOS_TEST: task1 running
I (647) ESP_FREERTOS_TEST: task1 running
I (651) ESP_FREERTOS_TEST: task1 running
I (656) ESP_FREERTOS_TEST: task1 running
看log結(jié)果task1一直在運行。
0x04 對于不同優(yōu)先級任務(wù)的結(jié)論:
有的任務(wù)有可能永遠不被執(zhí)行
只有高優(yōu)先級任務(wù)掛起,低優(yōu)先級任務(wù)才能被執(zhí)行
結(jié)論
ESP freeRTOS運行在搶占+時間片輪訓(xùn)模式,高優(yōu)先級任務(wù)掛起,低優(yōu)先級任務(wù)才有機會被執(zhí)行。同優(yōu)先級任務(wù)輪訓(xùn)執(zhí)行,執(zhí)行粒度為時間片,即一個時間片結(jié)束,另一個任務(wù)才開始執(zhí)行。搶占模式在使用時一定要畫任務(wù)時序圖,不然低優(yōu)先級任務(wù)可能執(zhí)行周期過長,或者根本不能執(zhí)行!
補充
為說明執(zhí)行粒度,程序做一下修改:
void task1(void *pvParameters){
for(;;)
{
for (int i = 0; i < 1000; i++)
{
ESP_LOGI(TAG, 'task1 running');
}
}}void task2(void *pvParameters){
for(;;)
{
for (int i = 0; i < 1000; i++)
{
ESP_LOGI(TAG, 'task2 running');
}
}}void app_main(void){
PRINT_TITLE();
ESP_LOGI(TAG, ' STARTING TEST FREERTOS ');
ESP_LOGI(TAG, 'create task1');
xTaskCreate(task1, 'task1', 2048, NULL, 1, NULL);
xTaskCreate(task2, 'task2', 2048, NULL, 1, NULL);}
log如下:
I (305) cpu_start: Starting scheduler on PRO CPU.
上一篇:API調(diào)用小記(Touchdesigner和ESP32)
下一篇:ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
推薦閱讀最新更新時間:2025-06-25 03:33





設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- L6565 過載或短路鎖定關(guān)斷的典型應(yīng)用
- 使用 ON Semiconductor 的 KA7805E 的參考設(shè)計
- 具有開路檢測功能的 LT4256-3 正高壓熱插拔控制器的典型應(yīng)用
- ADR420 超精密、低噪聲、5.00 Vout XFET 電壓基準作為可編程 DAC 基準的典型應(yīng)用
- AM3GW-4815SZ 15V 3 瓦 DC/DC 轉(zhuǎn)換器的典型應(yīng)用
- LTM8073EY 5Vout 從 7Vin 到 60Vin 降壓轉(zhuǎn)換器的典型應(yīng)用電路
- NCP716MTTBGEVB,LDO 穩(wěn)壓器,WDFN-6 封裝,超低靜態(tài)電流評估板
- LT1764AET-1.5 SCR 預(yù)穩(wěn)壓器的典型應(yīng)用可提供跨線路變化的效率
- 用于儀表的 12 位、32 通道 DAC
- 使用 IXYS 的 LTC3454EDD 的參考設(shè)計
- 南芯科技推出高集成度多口移動電源解決方案,助力充電寶市場穩(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è)部署
- 【廣瀨電機】關(guān)于中國發(fā)明專利侵權(quán)訴訟達成和解的公告
- 英飛凌BMS解決方案推動電動汽車創(chuàng)新
- 地平線的L3判斷與實踐路徑
- 汽車網(wǎng)絡(luò)升級攻略:CAN-CAN FD-車載以太網(wǎng)
- LG電子和韓國機器人產(chǎn)業(yè)振興院簽署協(xié)議
- iPhone12等拉升存儲器前景,SK海力士Q2營利預(yù)估增1倍多
- 國產(chǎn)450mm半導(dǎo)體級單晶硅棒研制成功了
- 王匯聯(lián):半導(dǎo)體產(chǎn)業(yè)培育需長遠計劃 科研領(lǐng)域更需要資金
- 中科四合:Fanout技術(shù)是半導(dǎo)體封裝未來主要技術(shù)發(fā)展方向
- 小鵬汽車劉明輝:電芯技術(shù)是整車廠取得競爭力的關(guān)鍵
- 首部移動電源國家標準正式發(fā)布:2018年7月1日實施
- vivo 冠名羅振宇跨年演講20年,第二年演講昨晚開講
- 聞泰張學政:公司進入二次創(chuàng)業(yè),迎接未來黃金十年
- 高功率光纖激光市場前景可能遠超你的想象