////////////////////////////////////////////////////////////////////////////
/*
功能:顯示執行核心編號(預設Core 1)
*/
// void setup(){
// Serial.begin(115200);
// }
// void loop(){
// Serial.print("使用核心編號: ");
// Serial.println(xPortGetCoreID()); // 顯示執行核心編號
// delay(3000);
// }
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/*
功能:雙核心執行(語法筆記)
*/
/* -------------------- 4個步驟介紹 -------------------- */
// // 1. 宣告任務變數
// TaskHandle_t Task;
// // 2. 設定並執行任務
// xTaskCreatePinnedToCore(
// Taskcode, // 副程式名稱
// "TaskName", // 任務名稱(工程師除錯用)
// StackDepth, // 所需的記憶體堆疊空間(byte)
// Parameters, // 任務的指向器
// Priority, // 任務的優先序
// &Task, // 任務變數位址
// CoreID // 指定執行的核心編號(0或1)
// );
// // 3. 設定任務內容
// // 名稱同 xTaskCreatPinnedToCore 的第一個參數
// // 需使用無窮迴圈且無return並至少有一個delay()
// void Taskcode(void *pvParameters){
// for(::){
// // 任務程式碼
// }
// }
// // 4. 刪除任務
// vTaskDelete(Task);
/* -------------------- ---------- -------------------- */
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/*
功能:
Task1code 在核心 0 上運行,每 2 秒輸出一次消息
Task2code 在核心 1 上運行,每 3 秒輸出一次消息
*/
// 宣告任務變數
TaskHandle_t Task1;
TaskHandle_t Task2;
void setup(){
Serial.begin(115200);
// 設定並執行任務
xTaskCreatePinnedToCore(
Task1code, // 副程式名稱
"TaskName1", // 任務名稱(工程師除錯用)
10000, // 所需的記憶體堆疊空間(byte)
NULL, // 任務的指向器
1, // 任務的優先序
&Task1, // 對應任務的變數位址
0 // 指定執行的核心編號 0
);
xTaskCreatePinnedToCore(
Task2code, // 副程式名稱
"TaskName2", // 任務名稱(工程師除錯用)
10000, // 所需的記憶體堆疊空間(byte)
NULL, // 任務的指向器
1, // 任務的優先序
&Task2, // 對應任務的變數位址
1 // 指定執行的核心編號 1
);
}
void loop()
{
// 主循環中可以做一些其他的事情,但不要在這裡啟動任務
Serial.printf("第 %d 秒\n", millis()/1000);
Serial.println("--------------------------------------------");
delay(1000);
}
// 設定任務內容
void Task1code(void *parameter){
for (;;){
Serial.print("Task 1 running on core : ");
Serial.println(xPortGetCoreID());
delay(2000);
}
}
void Task2code(void *parameter){
for (;;){
Serial.print("Task 2 running on core : ");
Serial.println(xPortGetCoreID());
delay(3000);
}
}
////////////////////////////////////////////////////////////////////////////