日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

esp32FreeRTOS教程——内核分配

發布時間:2023/12/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 esp32FreeRTOS教程——内核分配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Esp32 模塊中已經提供了 FreeRTOS(實時操作系統)固件。FreeRTOS有助于提高系統性能和管理模塊的資源。FreeRTOS允許用戶處理多項任務,如測量傳感器讀數,發出網絡請求,控制電機速度等,所有這些任務都可以同時獨立運行。

FreeRTOS為不同的應用程序提供了多個API。這些 API 可用于創建任務并使其在不同內核上運行。您需要創建任務以將代碼的特定部分分配給特定內核。您還可以確定代碼將在哪個內核上運行的優先級。優先級值以 level_0 開頭。
每當我們在Arduino IDE上運行代碼時,默認情況下,它會在core_1上運行。
您可以使用一個函數來檢查代碼在哪個內核上運行。xPortGetCoreID()

void setup(){Serial.begin(115200);Serial.print(setup() is running on: Core_” );Serial.println( xPortGetCoreID() );delay(1000);}void loop(){Serial.print(loop() is running on: Core_” );Serial.println( xPortGetCoreID() );delay(1000);}

這段代碼中,我們將使用兩個led由不同的核心處理。

TaskHandle_t task1; TaskHandle_t task2; //將gpio引腳分配給led const int led1 = LED_BUILTIN; const int led2 = 25; void setup() { Serial.begin(115200 ); pinMode( led1, OUTPUT ); pinMode( led2, OUTPUT ); //創建一個在Task1code()函數中執行的任務,優先級為1,在核心1上執行 xTaskCreatePinnedToCore(task_1code, // Task function. “Task1”,//任務名稱 10000, //任務的堆棧大小 NULL,//任務的參數 1, //任務的優先級 &task1,//跟蹤創建任務的任務句柄 1); //指定核心1的任務 delay(1000); 創建一個在Task2code()函數中執行的任務,優先級為1,并在核心1上執行 xTaskCreatePinnedToCore(task_2code, //Task function. “task2”,//任務名稱 10000, //任務的堆棧大小 NULL, //任務的參數 1,//任務的優先級 &task2,//跟蹤創建任務的任務句柄 0); //指定核心1的任務 delay(1000); } //task_1code: LED每1000毫秒閃爍一次 void task_1code( void * pvParameters ){ Serial.print( “task1 running on: core ” ); Serial.println( xPortGetCoreID() ); for(;;) { digitalWrite( led1, HIGH); delay(1000); digitalWrite(led1, LOW); delay(1000); } } //task_2code: LED每500毫秒閃爍一次 void task_2code( void * pvParameters ) { Serial.print( “task2 running on: core ” ); Serial.println(xPortGetCoreID() ); for(;;){ digitalWrite(led2, HIGH ); delay(500); digitalWrite(led2, LOW ); delay(500); } } void loop() { Serial.print(loop() is running on: Core ” ); Serial.println( xPortGetCoreID() ); delay(1000); }

總結

以上是生活随笔為你收集整理的esp32FreeRTOS教程——内核分配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。