typedef struct{
int delaytime;
byte pin;
}LED_ARG;
void LED_Task1(void* ptr)
{
LED_ARG* Arg = (LED_ARG*)ptr;
int delaytime = Arg->delaytime;
byte pin = Arg->pin;
pinMode(pin, OUTPUT);
while(1)
{
digitalWrite(pin, !digitalRead(pin));
vTaskDelay(delaytime/portTICK_PERIOD_MS);
}
}
void LED_Task2(void* ptr)
{
LED_ARG* Arg = (LED_ARG*)ptr;
int delaytime = Arg->delaytime;
byte pin = Arg->pin;
pinMode(pin, OUTPUT);
while(1)
{
digitalWrite(pin, !digitalRead(pin));
vTaskDelay(delaytime/portTICK_PERIOD_MS);
}
}
void setup() {
// put your setup code here, to run once:
LED_ARG LED1,LED2;
LED1={
.delaytime=1000,
.pin=1
};
LED2={
.delaytime=3000,
.pin=2
};
if( xTaskCreate(LED_Task1,
"Blink1",
1024,
(void *)&LED1,
1,
NULL)==pdPASS ) Serial.println("LED_Task1 has been created!");
if(xTaskCreate(LED_Task2,
"Blink2",
1024,
(void *)&LED2,
1,
NULL)==pdPASS) Serial.println("LED_Task2 has been created!");
}
void loop() {
// put your main code here, to run repeatedly:
}