//任务管理及状态:taskA闪灯,taskB一个按钮,按钮按了后暂停taskA(LED灯闪烁停止)
//提高任务:在任务3的基础上,再设置一个按钮,当按了这个按钮后taskA恢复(LED灯继续闪烁)
static TaskHandle_t myTaskA = NULL;
void TaskA(void *pt) {
//任务A的初始化什么的写这里
pinMode(4, OUTPUT);
while (1) {
digitalWrite(4, !digitalRead(4));
vTaskDelay(200);
//任务A需要执行的写这里
}
}
void TaskB(void *pt) {
//任务B的初始化什么的写这里
pinMode(23, INPUT_PULLUP);
while (1) {
//任务B需要执行的写这里
if (digitalRead(23) == LOW)
{
vTaskSuspend(myTaskA);
}
vTaskDelay(100);
}
}
void setup() {
//来就创建任务
xTaskCreate(TaskA, "TaskA", 1024, NULL, 2, &myTaskA);
xTaskCreate(TaskB, "TaskB", 1024, NULL, 2, NULL);
}
void loop() {
//loop也是一个任务,一般空着
}