byte LED1_PIN = 4;
byte LED2_PIN = 5;
byte LED3_PIN = 6;
// 第一个任务,控制红灯,每1秒亮灭一次
void task1(void *param_t){
// 从参数中取出掺入的Pin端口指针
byte *pin_p = (uint8_t *)param_t;
// 从指针中提取出内容
byte pin = *pin_p;
pinMode(pin, OUTPUT);
while(1){
// 先读取引脚的高低电平,然后翻转,最后重新设置给这个引脚
digitalWrite(pin, !digitalRead(pin));
// 等待1秒钟
vTaskDelay(1000/portTICK_PERIOD_MS);
}
}
// 第二个任务,控制绿灯,每2秒亮灭一次
void task2(void *param_t){
// 直接提取内容
byte pin = *(uint8_t *)param_t;
pinMode(pin, OUTPUT);
while(1){
// 先读取引脚的高低电平,然后翻转,最后重新设置给这个引脚
digitalWrite(pin, !digitalRead(pin));
vTaskDelay(2000/portTICK_PERIOD_MS);
}
}
// 第三个任务,控制蓝灯,每3秒亮灭一次
void task3(void *param_t){
byte pin = *(uint8_t *)param_t;
pinMode(pin, OUTPUT);
while(1){
// 先读取引脚的高低电平,然后翻转,最后重新设置给这个引脚
digitalWrite(pin, !digitalRead(pin));
vTaskDelay(3000/portTICK_PERIOD_MS);
}
}
void setup() {
Serial.begin(115200);
xTaskCreate(task1, "Blink Red",1024,&LED1_PIN,1,NULL);
Serial.println("第一个任务被创建,将控制红灯每秒亮灭一次");
xTaskCreate(task2, "Blink Green",1024,&LED2_PIN,1,NULL);
Serial.println("第二个任务被创建,将控制红灯每2秒亮灭一次");
xTaskCreate(task3, "Blink Blue",1024,&LED3_PIN,1,NULL);
Serial.println("第三个任务被创建,将控制红灯每3秒亮灭一次");
}
void loop() {
}
esp:0
esp:1
esp:2
esp:3
esp:4
esp:5
esp:6
esp:7
esp:8
esp:9
esp:10
esp:11
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:20
esp:21
esp:35
esp:36
esp:37
esp:38
esp:39
esp:40
esp:41
esp:42
esp:45
esp:46
esp:47
esp:48
esp:3V3.1
esp:3V3.2
esp:RST
esp:5V
esp:GND.1
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:GND.4
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C