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
    +关注

    关注

    13

    文章

    495

    浏览量

    64745
  • Arduino
    +关注

    关注

    190

    文章

    6501

    浏览量

    193111
  • ESP32
    +关注

    关注

    21

    文章

    1029

    浏览量

    19546

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    【RA4L1-SENSOR】05 按键实现RTOS任务切换

    是只做了两个任务来回切换,之后再完善多任务切换的。 #include \"Key_Switch_Task.h\" /* KeySwitch entry function
    发表于 06-16 22:38

    【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

    两个不同频率晶振靠的近会怎样

    晶振的振荡本质上是一种机械振动(在压电晶体层面)。当两个晶振靠得很近时,它们的机械振动可能会相互影响。一晶振的振动可能会通过电路板或者外壳等介质传递给另一晶振,从而改变另一
    的头像 发表于 01-20 13:55 ?1723次阅读
    <b class='flag-5'>两个</b>不同频率晶振靠的近会怎样

    如何把两个数据返回调用函数

    已经知道函数会返回两个数据,提前申请两个元素的内存,并且把数组作为参数传递过去,把返回值放在数组中就行。 第三种,定义一全局的结构体变量,
    的头像 发表于 01-08 10:15 ?473次阅读

    【RA-Eco-RA4E2-64PIN-V1.0开发板试用】05、FreeRTOS

    LED1_thread_entry.c和LED2_thread_entry.c,这两个文件是留给我们写线程具体功能的。 在LED1_thread_entry.c中的死循环中添加代码 R_IOPORT_PinWrite(&
    发表于 12-17 11:53

    DS90UB941AS是否支持带两个屏? 两个屏是要求一样的参数才行吗?

    DS90UB941AS是否支持带两个屏? 两个屏是要求一样的参数才行么?
    发表于 12-12 06:07

    单相电机两个绕组都在定子上吗

    单相电机的两个绕组,即起动线圈(或称为辅助绕组、副绕组)和运行线圈(或称为主绕组),都位于定子上 。这两个绕组在电机中起着关键作用,共同协作以产生旋转磁场,从而使电机能够运转。 单相电机通常由一
    的头像 发表于 09-03 15:10 ?2404次阅读

    ad如何设置两个元器件的距离

    在Altium Designer(简称AD)中设置两个元器件之间的距离,主要是通过设置元器件间的安全间距(Clearance)规则来实现的。这个规则定义了元器件之间、元器件与走线之间以及其他设计元素
    的头像 发表于 09-02 15:31 ?1.8w次阅读

    freertos最多支持多少任务

    FreeRTOS是一轻量级的实时操作系统(RTOS),其设计初衷就是为了提供简单、可靠且高效的实时任务管理。关于FreeRTOS最多支持多少
    的头像 发表于 09-02 14:21 ?2402次阅读

    freertos和rtos区别是什么

    FreeRTOS 和 RTOS(实时操作系统)是两个不同的概念,但它们之间有紧密的联系。FreeRTOS 是一特定的开源实时操作系统,而 RTOS 是实时操作系统的一般概念。 概念定
    的头像 发表于 09-02 14:18 ?3284次阅读

    freertos和rtthread哪一更好

    在嵌入式系统开发中,选择合适的实时操作系统(RTOS)对于项目的成功至关重要。FreeRTOS和RT-Thread是两个非常流行的开源RTOS,它们各自具有独特的特点和优势。 1. 简介
    的头像 发表于 09-02 14:06 ?7803次阅读

    功放机AB两个声道输出怎么接

    功放机AB两个声道输出的接线方式,主要取决于您想要实现的音频效果以及音箱的配置。以下将详细介绍几种常见的接线方式,以及它们各自的特点和适用场景。 一、基础接线方式 在大多数情况下,功放机的AB两个
    的头像 发表于 08-23 10:40 ?1w次阅读