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

    关注

    12

    文章

    484

    浏览量

    62181
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    187089
  • ESP32
    +关注

    关注

    18

    文章

    971

    浏览量

    17276

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

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

收藏 人收藏

    评论

    相关推荐

    freertos最多支持多少任务

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

    freertos和rtos区别是什么

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

    如何使用freeRTOS两个任务之间传输任务数据?

    /温度。 我想创建一 CSV 文件来记录一段时间内的数据。 我创建 I2C 任务的方法与示例中的 emFIlesystem 任务相同。 者都在运行,做着它们应该做的事情,但我觉得它
    发表于 07-03 07:55

    vTaskDelete()删除正在打印日志的任务导致esp32卡死无法恢复要怎么处理?

    实际的应用场景是录音的时候创建了一任务去读i2s数据,放到一ringbuf里,然后主任务从ringbuf里取数据进行降噪编码处理。 长跑测试发现设备在执行录音时偶然会发生死机现象,
    发表于 06-17 07:48

    为什么在交流电桥中至少需要两个可调参数

    在交流电桥的测量中,至少需要两个可调参数的原因与电桥的工作原理、测量的准确性以及校准过程有关。
    的头像 发表于 05-15 17:49 1871次阅读

    请问一下FREERTOS只能创建4任务,修改哪个宏定义可以增加创建任务的数量?

    请问一下FREERTOS只能创建4任务,修改哪个宏定义可以增加创建任务的数量?解决方法:增加FREERTOS的堆。
    发表于 05-13 06:44

    浅析FreeRTOS任务调度器的三种调度算法和应用

    FreeRTOS在MCU领域应用非常广泛,今天就大家讲解一下FreeRTOS调度器中的三种调度算法,以及在瑞萨RZ/T2L MPU中的应用。
    的头像 发表于 05-10 14:02 7436次阅读
    浅析<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任务</b>调度器的三种调度算法和应用

    基于STM32Cubemx创建FreeRTOS,创建UART任务遇到的两个问题求解

    基于STM32Cubemx创建FreeRTOS,创建UART任务,经过测试发现有以下两个问题: 1、串口波特率问题: 在STM32Cubemx中串口设置如下: /* USART3 init
    发表于 05-10 07:33

    freertos系统如何划分任务

    正在看freertos方面的教程,想请教下如何划分任务? 比如之前做的一数据采集板,用到了单片机以下功能: 1,单片机通过SPI1和ADC芯片通讯,同时还要通过SPI控制ADC威廉希尔官方网站 部分的其他外围
    发表于 05-08 07:16

    FREERTOS建了两个任务,成功运行了,但每次运行2小时左右就死机的原因?

    FREERTOS建了两个任务,成功运行了,但是,每次运行2小时左右就死机,这是什么情况,是堆栈小的原因吗?
    发表于 05-06 08:22

    freertos任务创建,每一任务分配的内存是多大才好,怎么计算呢?

    小白刚刚接触freertos,想问一下就创建任务而言,每一任务分配的内存是多大才好,怎么计算呢? 另外,每个任务的执行周期怎么确定?在
    发表于 04-23 06:39

    为什么CubeMX设计的FreeRTOS工程只能正常运行3任务

    用CubeMX4.20设计的FreeRTOS工程有六任务,出一任务优先级较低外,另外几个都是较高优先级。发现只有3
    发表于 04-19 08:23

    STM32F103 FreeRTOS任务调度异常的原因?

    系统设置2任务,系统运行时出现一些异常现象,请问有没有遇到过?是什么原因引起的? 方式1:系统运行正常 void Task1_Task(void * pvParameters) { while(1
    发表于 04-16 06:24

    FreeRTOS任务无故进入挂起状态的原因?

    请教大家一问题,我子啊使用FreeRTOS的时候创建了一以太网的任务任务在使用的过程中被无故挂起,请问一下出现这种现象有哪几种原因呢?
    发表于 04-09 07:20

    两个电位器地控制一变频器,如何接线?

    两个电位器地控制一变频器,如何接线? 接线方式如下: 1. 首先,明确需要使用的电器设备。在这个场景中,我们需要两个电位器(即可变电阻器)和一
    的头像 发表于 02-05 10:13 5279次阅读