#define led1 15
#define led2 2
#define led3 4
void task1(void *pt)
{
pinMode(led1, OUTPUT);
while(1)
{
digitalWrite(led1, !digitalRead(led1));
// 用vTaskDelay替代delay,避免阻塞
// 参数方式:tick
// esp32中一个tick为1ms
vTaskDelay(1000);
}
}
void task2(void *pt)
{
pinMode(led2, OUTPUT);
while(1)
{
digitalWrite(led2, !digitalRead(led2));
// 用vTaskDelay替代delay,避免阻塞
// 参数方式:tick
vTaskDelay(pdMS_TO_TICKS(2000));
}
}
void task3(void *pt)
{
pinMode(led3, OUTPUT);
while(1)
{
digitalWrite(led3, !digitalRead(led3));
// 用vTaskDelay替代delay,避免阻塞
// 参数方式:tick
vTaskDelay(4000/portTICK_PERIOD_MS);
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
xTaskCreate(task1, //具体实现的函数
"Blink 1", //任务名称
1024, //堆栈大小
NULL, //输入参数
1, //任务优先级 0是最低优先级
NULL //任务句柄(可以为NULL)
);
xTaskCreate(task2, "Blink 2", 1024, NULL, 1, NULL);
xTaskCreate(task3, "Blink 3", 1024, NULL, 1, NULL);
vTaskDelete(NULL); // 删除自身任务
}
void loop() {
}