search
LoginSignup
15
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

M5Stackでマルチタスク処理を実行する

目的

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);
}


実行画面
Screenshot from 2018-06-16 13:08:13.png

参考:

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
15
Help us understand the problem. What are the problem?