###目的
M5stackはCPU:ESP32を内臓しており、マルチタスク処理に対応している。
M5stackでマルチタスク処理を行う。
###方法
xTaskCreatePinnedToCore()関数を使うことで実装できる。
xTaskCreatePinnedToCore(タスクの関数名,"タスク名",スタックメモリサイズ,NULL,タスク優先順位,
タスクハンドルポインタ,Core ID);
###サンプルソース
#include <M5Stack.h>
void task0(void* arg) {
int cnt = 0;
while (1) {
printf("task2 thread_cnt=%ld\n", cnt++);
delay(1000);
}
}
void task1(void* arg) {
int cnt = 0;
while (1) {
printf("task1 thread_cnt=%ld\n", cnt++);
delay(1500);
}
}
void setup() {
Serial.begin(115200);
xTaskCreatePinnedToCore(task0, "Task0", 4096, NULL, 1, NULL, 0);
xTaskCreatePinnedToCore(task1, "Task1", 4096, NULL, 1, NULL, 1);
}
void loop() {
static int cnt = 0;
printf("Maintask thread_cnt=%ld\n", cnt++);
delay(1200);
}
###参考:
Docs » API Reference » System API » FreeRTOS
http://esp-idf.readthedocs.io/en/latest/api-reference/system/freertos.html
-ESP32でデュアルコアを使おう!
https://kerikeri.top/posts/2017-06-24-esp32-dual-core/
-マルチタスク・デュアルコアの実験(ESP-WROOM-32)
https://garretlab.web.fc2.com/arduino/lab/esp32_task/index.html