TaskHandle_t Task1; TaskHandle_t Task2; const int led1 = 2; const int led2 = 4; void stp() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); xTaskCreatePinnedToCore( Task1code, /* Task function. */ "Task1", /* name of task. */ 10000, /* Stack size of task */ NULL, /* parameter of the task */ 1, /* priority of the task */ &Task1, /* Task handle to keep track of created task */ 0); /* pin task to core 0 */ // xTaskCreate(Task1code, "task1", 1000, NULL, 1, NULL); delay(500); xTaskCreatePinnedToCore( Task2code, /* Task function. */ "Task2", /* name of task. */ 10000, /* Stack size of task */ NULL, /* parameter of the task */ 1, /* priority of the task */ &Task2, /* Task handle to keep track of created task */ 1); /* pin task to core 1 */ // xTaskCreate(Task2code, "task2", 1000, NULL, 1, NULL); delay(500); } // Task1code: blinks an LED every 1000 ms void Task1code(void *pvParameters) { Serial.print("Task1 running on core "); Serial.println(xPortGetCoreID()); for (;;) { digitalWrite(led1, HIGH); delay(1000); digitalWrite(led1, LOW); delay(1000); } } // Task2code: blinks an LED every 700 ms void Task2code(void *pvParameters) { Serial.print("Task2 running on core "); Serial.println(xPortGetCoreID()); for (;;) { digitalWrite(led2, HIGH); delay(700); if (!s.isFired) { digitalWrite(led2, LOW); delay(700); } } } void killOne() { // Kill task1 if it's running if (Task1 != NULL) { eTaskState taskState = eTaskGetState(Task1); if (taskState == eDeleted) { Serial.println("Task deleted"); } else { Serial.println("No more green"); vTaskDelete(Task1); } } }