Arduino-ESP32使用FREERTOS实现任务通过结构体指针传递多参数

目录

一、搭建硬件环境

二、撰写代码

三、【加强版】实现三LED灯同时闪烁,并使用串口打印数据


一、搭建硬件环境

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同时闪烁,并使用串口打印信息。

LEDFLASH - Wokwi ESP32, STM32, Arduino Simulator

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值