0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FreeRTOS给任务传递两个参数LEDpin和vTaskDelay

工程师邓生 来源:硬件会 作者:硬件会 2022-09-14 15:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

补充:上节漏掉一个知识点:任务中的延时要用vTaskDelay,这是当前线程延时函数,不要用delay。delay是整个系统延时函数。

继续上节的延伸,从上篇文章的例子中可以看出两个任务是让两个LED闪烁,创建的两个任务task1和task2极其相似,除了传递的参数LED_PIN引脚不一样,还有就是LED灯闪烁的时间不一样vTaskDelay(1000)。

于是可以想到给任务传递两个参数,LEDpin和vTaskDelay。 先理解以下知识:

结构体:是存放不同类型数据的容器。例如:

1053c99e-3051-11ed-ba43-dac502259ad0.png

1082872a-3051-11ed-ba43-dac502259ad0.png

10bd3636-3051-11ed-ba43-dac502259ad0.png

初始化结构体成员变量的方法有好几种可以参考此连接:(58条消息) C语言结构体初始化的四种方法_ericbars的博客-CSDN博客_结构体初始化 typedef:给类型起别名。例如

1130c68c-3051-11ed-ba43-dac502259ad0.png

结构体“.”和“->”的区别: .

左边是一个结构体变量;->左边是一个指向结构体的指针。例如

1157c476-3051-11ed-ba43-dac502259ad0.jpg

理解了以上知识点后,传递多个参数是将参数定义为结构体成员变量,示例如下:

118e741c-3051-11ed-ba43-dac502259ad0.png

11c38ee0-3051-11ed-ba43-dac502259ad0.png

注意:

1)Arduino变量初始化要放在setup里,放到外边,有可能会出错。

2)全局变量内存的值不会删除。局部变量的内存值在setup运行完后,会自动删除,所以如果将声明结构体变量LEDFLASH led1, led2;放到setup里,传递的参数每次都是随机的,参数值会出错。

3)freertos 语法规定的创建任务的函数参数必须是输入void空指针 ,然后无返回的void类型。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FreeRTOS
    +关注

    关注

    14

    文章

    499

    浏览量

    67245
  • Arduino
    +关注

    关注

    190

    文章

    6527

    浏览量

    197466
  • ESP32
    +关注

    关注

    27

    文章

    1223

    浏览量

    22352

原文标题:FreeRTOS给任务传递多个参数(ESP32)

文章出处:【微信号:硬件会,微信公众号:硬件会】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【RA-Eco-RA4M2开发板评测】+ FreeRTOS任务初探

    论坛 - 广受欢迎的专业电子论坛! 2 FreeRTOS相关配置 2.1 添加任务 2.2 添加堆栈策略 2.3 任务0详细配置 2.4 任务1详细配置 3 生成代码 3.1
    发表于 04-19 12:30

    如何在 i.MX8QM 上将 FlexCAN 与 FreeRTOS 任务(信号量或任务通知)一起使用?

    (),但程序总是挂起/卡在这一点上。 我已经尝试更改中断优先级并检查了 FreeRTOS 配置,但结果仍然是相同的。 有没有人有一简单的示例,如何在 i.MX8QM 上将 FlexCAN
    发表于 04-16 06:31

    FreeRTOS_SMP_Example_S32K358_2xCores示例配置并实现了一SMP项目,两个核心的中断频率比较高时报故障,怎么解决?

    我参考FreeRTOS_SMP_Example_S32K358_2xCores示例配置并实现了一 SMP 项目。RTD6.0.0但是,当我的两个核心的中断频率比较高时,会出现种故障
    发表于 03-30 08:23

    传递无符号的 long 型指针函数

    C语言允许传递指针函数,只需要简单地声明函数参数为指针类型即可。 下面的实例中,我们传递无符号的 long 型指针
    发表于 01-27 11:51

    FreeRTOS入门资料

    , 将分配给标签值的任务传递 NULL 将分配标签调用的任务。 pdTASK_HOOK_CODE pxTagValue 分配给任务的标
    发表于 01-23 06:38

    传递、指针传递、引用传递介绍

    中有开辟了内存空间来存放主调函数放进来实参的值,从而成为一副本。因为指针传递的是外部参数的地址,当调用函数的形参发生改变时,自然外部实参也发生改变。   3、引用传递:被调函数的形参
    发表于 01-21 06:48

    FreeRTOS 空闲任务

    FreeRTOS 中很多人会注意到为什么有一叫IDLE task的任务占用了CPU百分之九十多的使用权,但是这个任务并没有自己手动创建。原因就是这个空闲
    发表于 12-04 07:35

    freertos关闭任务调度的方法

    */ xTaskResumeAll(); } /* 示例任务 */ void example_task(void *pvParameter) { for(;;) { vTaskDelay(1000);// 延时1000
    发表于 11-17 06:47

    FreeRtos 能否同时使用两个 CPU?

    的情况下,CM0 更愿意专门用于管理外设。 - 是否有在 CM0 和 CM4 中同时运行代码的简单示例或教程? - FreeRtos 能否同时使用两个 CPU?
    发表于 11-11 08:28

    FreeRTOS任务调度及优先级问题

    大家好,最近本人在学习FreeRTOS ,之前有过一些裸机开发的经验,目前知道了FreeRTOS任务是基于时间片轮转来调度,也就是知道了任务会基于各个时间片来运行。 于是联想了如果有
    发表于 11-06 02:18

    硬件SPI两个CS操作两个norflash,怎么互斥操作两个norflash?

    硬件SPI两个CS操作两个norflash,怎么互斥操作两个norflash,有一norflash被模拟成U盘,会在中断中操作spi。
    发表于 09-26 06:18

    【RA4L1-SENSOR】电压检测器第一程序增加 FreeRTOS显示量程0-3300 mV和量程0-15000mV]

    地方修改; 多个模块同时访问时容易出现竞态条件; 不适用于多任务并发的系统。 在FreeRTOS中,队列是一线程安全的、先进先出(FIFO)缓冲结构,用于任务之间或者
    发表于 07-11 10:53

    【RA4L1-SENSOR】04 用FreeRTOS重构工程

    东西,我就混着使用了。任务(Task)是FreeRTOS官方的叫法,而线程(Thread)是在E2Studio中的写法。 在我们之前的裸机程序中,有两个功能需要放在while死循环中:电容按键扫描以及
    发表于 06-16 22:28

    FreeRTOS读取ADS1299数据有误

    vTaskDelay(1) 在发送任务中:读取队列中的数据——发送到上位机 但是数据会出错,正常数据的范围是-1到1,用freertos就会出现超出正常范围的数据, 而在main函数的主循环中采集数据、滤波、发送到上位机就
    发表于 05-05 22:48

    stm32f103用freertos对一采样率为1kHz的传感器,进行采样,数据出差

    您好,请问,用FreeRTOS的队列对采样率1khz的传感器读取数据, 在采集任务中:通过spi读取数据——滤波(ARM-DSP库)——将数据写入队列——延时vTaskDelay(1) 在发送
    发表于 05-05 22:44