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);
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
傳感器
+關注
關注
2553文章
51407瀏覽量
756648 -
FreeRTOS
+關注
關注
12文章
484瀏覽量
62399 -
實時操作系統
+關注
關注
1文章
199瀏覽量
30826 -
ESP32
+關注
關注
18文章
978瀏覽量
17531
發布評論請先 登錄
相關推薦
ESP32模組的主要特性
WT-ESP32-DevKitC V4是一款基于ESP32的小型開發板,集WIFI+藍牙方案于一體,板上模組絕大部分管腳均已引出,開發人員可根據實際需求,輕松通過跳線連接多種外圍器件,或將開發板直接
發表于 11-04 14:54
?4140次閱讀
ESP32 SDIO 使用教程
ESP32 SDIO 使用教程本文旨在說明如何使用標準的 ESP32-WROOM-32D 開發板進行 SDIO 的通信。本文檔適用于所有需要與 ESP32 SDIO slave 通信的方案
發表于 11-23 17:51
?233次下載
HC05 藍牙模塊 連接 ESP32 經典藍牙
概述HC05是一款常用的經典藍牙模塊,某寶有大量銷售,主從機一體,而ESP32的藍牙兼容經典藍牙和低功耗藍牙,本文介紹如何使用HC05作為主機連接ESP32的經典藍牙ESP32從機配置
發表于 11-24 12:36
?65次下載
FreeRTOS消息隊列 & ESP32使用
FreeRTOS消息隊列 & ESP32實戰FreeRTOS消息隊列FreeRTOS的消息隊列和操作系統課中講的消息隊列大差不差,都是為了有序的、安全的在多任務間在發送信息。下
發表于 12-03 17:51
?1次下載
esp32 例程 藍牙_wifi&藍牙MCU 該不該選ESP32
ESP32 將天線開關、RF balun、功率放大器、接收低噪聲放大器、濾波器、電源管理模塊等功能集于一體。ESP32 只需極少的外圍器件,即可實現強大的處理性能、可靠的安全性能,和 Wi-Fi &am...
發表于 12-06 20:06
?31次下載
nodemcu與matlab,關于ESP8266 NodeMcu和ESP32 DEV模塊兩者的區別
什么是ESP32?ESP8266 Wi-Fi模塊是過去幾年中最受歡迎和最實用的模塊之一。市場上有這種模塊的各種版本。
發表于 12-17 18:03
?2次下載
基于ESP32的智能LPG探測器
本方案是基于 ESP32 的智能 LPG 探測器,使用 ESP RainMaker 生成電話警報通知的智能 LPG 檢漏儀設備。需求硬件樂鑫 ESP32-DevKit-DMQ6 - LPG 丙烷氣
發表于 12-22 11:41
?0次下載
LoRa模塊SX1278與ESP32結合使用的方法-上
在本篇文章中,我們將學習如何將LoRa模塊SX1278與ESP32結合使用。在這里,我們將使用兩個LoRa模塊-一個連接到ESP32,另一個連接到Arduino開發板。
樂鑫ESP32-SenseKit參考設計
樂鑫ESP32-SenseKit參考設計ESP32將天線開關、RFbalun、功率放大器、接收低噪聲放大器、濾波器、電源管理模塊等功能集于一體。ESP32只需極少的外圍器件,即可實現強
發表于 10-19 16:13
?2次下載
評論