目录
一、搭建硬件环境
同 Arduino-ESP32使用FREERTOS实现多任务电灯
二、撰写代码
实现功能同Arduino-ESP32使用FREERTOS实现多任务电灯。
首先,进行结构体指针的定义。
typedef struct{
byte pin;
int delayTime;
}LEDFLASH;
构造LED闪烁函数
void ledFlash(void * pt) {
LEDFLASH * ptLEDFlash =(LEDFLASH *)pt; //将传入的void类型pt指针强制转化为LEDFLASH类型,并将地址传递给ptLEDFlash
byte pin = ptLEDFlash->pin; //pin读取结构体指针变量ptLEDFlash中的pin变量
int delayTime = ptLEDFlash->delayTime; //delayTime读取结构体指针变量ptLEDFlash中的delayTime变量
pinMode(pin, OUTPUT);
while(1) {
digitalWrite(pin,!digitalRead(pin));
vTaskDelay(delayTime);
}
}
创建两个任务实现,两个LED灯的闪烁
void setup() {
//Serial.begin(115200);
LEDFLASH LED1,LED2; //创建LEDFLASH类型变量
LED1.pin=23;
LED1.delayTime=1000;
LED2.pin=21;
LED2.delayTime=3000;
xTaskCreate(ledFlash,"Blink 23",1024,(void *)&LED1,1,NULL);
xTaskCreate(ledFlash,"Blink 21",1024,(void *)&LED2,1,NULL);
}
void loop() {
}
三、【加强版】实现三LED灯同时闪烁,并使用串口打印数据
在上面的基础上实现三个LED同时闪烁,并使用串口打印信息。