arduino-sketches/others/MultiTaskTests.h

83 lines
2.0 KiB
C

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