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沒機(jī)會(huì)執(zhí)行,而且觸發(fā)了死循環(huán)任務(wù)看門狗。
0x02 不同優(yōu)先級(jí)任務(wù)低優(yōu)先級(jí)任務(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)先級(jí)任務(wù)都不帶掛起操作測試
把兩個(gè)任務(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一直在運(yùn)行。
0x04 對(duì)于不同優(yōu)先級(jí)任務(wù)的結(jié)論:
有的任務(wù)有可能永遠(yuǎn)不被執(zhí)行
只有高優(yōu)先級(jí)任務(wù)掛起,低優(yōu)先級(jí)任務(wù)才能被執(zhí)行
結(jié)論
ESP freeRTOS運(yùn)行在搶占+時(shí)間片輪訓(xùn)模式,高優(yōu)先級(jí)任務(wù)掛起,低優(yōu)先級(jí)任務(wù)才有機(jī)會(huì)被執(zhí)行。同優(yōu)先級(jí)任務(wù)輪訓(xùn)執(zhí)行,執(zhí)行粒度為時(shí)間片,即一個(gè)時(shí)間片結(jié)束,另一個(gè)任務(wù)才開始執(zhí)行。搶占模式在使用時(shí)一定要畫任務(wù)時(shí)序圖,不然低優(yōu)先級(jí)任務(wù)可能執(zhí)行周期過長,或者根本不能執(zhí)行!
補(bǔ)充
為說明執(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)
下一篇:最后一頁
推薦閱讀最新更新時(shí)間:2025-06-09 10:57





設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- API調(diào)用小記(Touchdesigner和ESP32)
- 關(guān)于ESP32/8266使用async-mqtt-client庫的一些基本介紹
- LT1172HVCT、5V/1.25A 正降壓轉(zhuǎn)換器的典型應(yīng)用
- 【訓(xùn)練營】四條腿機(jī)器狗
- SG3525A 推挽式脈寬調(diào)制器控制電路的典型應(yīng)用
- LT1108CS8-12掌上電腦邏輯電源微功率DC/DC轉(zhuǎn)換器典型應(yīng)用電路
- AM2M-1515DH30-NZ ±15 Vout、2W 雙路輸出 DC-DC 轉(zhuǎn)換器的典型應(yīng)用
- LTC2945HMS 具有高達(dá) 200V 浪涌保護(hù)的堅(jiān)固型 4V 至 70V 高壓側(cè)功率監(jiān)視器的典型應(yīng)用
- 常用MCU全能燒錄器
- 【航順訓(xùn)練營】國產(chǎn)航順MCU開發(fā)學(xué)習(xí)板
- LTC3624EMSE-25 5V 輸出電壓、2A 同步降壓型穩(wěn)壓器的典型應(yīng)用,具有 1MHz、突發(fā)模式操作
- 具有備用電源監(jiān)控功能的 LTC4420IMSE 18V 雙輸入微電源路徑優(yōu)先器的典型應(yīng)用電路
- 芯原超低能耗NPU可為移動(dòng)端大語言模型推理提供超40 TOPS算力
- 芯原AI-ISP芯片定制方案助力客戶智能手機(jī)量產(chǎn)出貨
- AI加持,安森美一站式服務(wù)推動(dòng)助聽器市場持續(xù)進(jìn)步
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- 如何為您的應(yīng)用選擇光傳感器
- Samtec新型農(nóng)業(yè)漫談系列二 | 垂直農(nóng)業(yè)案列分享
- Samtec應(yīng)用科普 | C-V2X技術(shù)在汽車領(lǐng)域的應(yīng)用
- 尼得科運(yùn)動(dòng)&能源事業(yè)本部在印度卡納塔克邦胡布利舉行新工廠竣工儀式
- 貿(mào)澤開售Qorvo適用于5G和mMIMO應(yīng)用的新型QPA9822線性5G高增益/高驅(qū)動(dòng)放大器
- 邊緣計(jì)算網(wǎng)關(guān)工業(yè)物聯(lián)網(wǎng)應(yīng)用:空壓機(jī)遠(yuǎn)程運(yùn)維監(jiān)控管理
- 紫光國微對(duì)Linxens的180億收購案被拒
- 華為:芯片架構(gòu)和供應(yīng)鏈重新設(shè)計(jì)絕非易事,但一定會(huì)完成
- 不懼壓迫,華為汽車戰(zhàn)略實(shí)施有條不絮
- 九年新低,中國臺(tái)灣地區(qū)平板電腦、智能手機(jī)出貨量暴跌
- 谷歌頭戴式顯示器讓你感受身臨其境的體驗(yàn)
- 比亞迪電子長沙工廠首批華為手機(jī)下線了
- 魅族前高管李楠分析iPhone11系列優(yōu)勢
- LCD面板價(jià)格持續(xù)下跌,京東方、華星光電、惠科均減產(chǎn)
- 最懂小米的可能是幾個(gè)巨頭友商
- 柔派之中最貴的零組件Made in China!
- 嵌入Linux軟件開發(fā)問題
- nios2 software building tool for eclipse 在哪里?
- 急求一個(gè)2D的基于DSP的插補(bǔ)程序
- 誰調(diào)過cw6626的藍(lán)牙芯片???
- fpga圖像處理如何學(xué)習(xí)
- 曬WEBENCH設(shè)計(jì)的過程+高效鋰電池電源設(shè)計(jì)
- 下載程序到非Flash區(qū)時(shí)提示說memory校驗(yàn)錯(cuò)誤
- 看看我是怎么轟炸論壇的??!
- TMS320C6678 評(píng)估模塊內(nèi)核和器件基準(zhǔn)測試
- 高性能PHS射頻收發(fā)器芯片的設(shè)計(jì)