2018年8月9日木曜日

ESP32でマルチタスクしたメモ

TaskHandle_t taskHandle[1];  /* typedef void * TaskHandle_t; */

void setup()
{
  /* configure led blink task. */
  unsigned long executeParameter = 1000UL;  /* delay time */
  xTaskCreatePinnedToCore(
    subTask,  /* task name */
    "subTask",   /* task name string */
    1024,           /* stack size */
    &executeParameter, /* execute parameter */
    2,             /* task priority : 0 to 24. 0 is lowest priority. */
    &taskHandle[0],   /* タスクハンドルポインタ */
    1              /* core ID */
  );

  Serial.begin( 115200 );
}


void loop()
{
  Serial.println(”hogehoge”);
  delay( 1000 );
}


void subTask( void *execParam )
{
  int buttonClick;
  ledcSetup(0, 50, 10);  // 0ch 50 Hz 10bit resolution
  ledcAttachPin(15, 0); // 15pin, 0ch
  while ( 1 )
  {
    buttonClick = digitalRead(0);
    if (buttonClick == 0) {
      ledcWrite(0, max);
    }
    else {
      ledcWrite(0, min);
    }
    delay(1000);
  }
}