• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

freertos里面的任务之间是怎么传递消息的

天山来客 2019-03-25 浏览量:4146
用的什么机制
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • FreeRTOS里的任务之间通讯可以通过队列、二进制信号量、计数信号量、互斥等几种手段,其中队列是最为常用的手段。

    0002.png 

    使用方法如下:

    static QueueHandle_t xQueueADC = NULL;  //声明一个消息队列

    xQueueADC = xQueueCreate( QUEUE_LENGTH sizeof( unsigned long ) );//创建消息队列,用于任务间通讯

    xQueueSendFromISR(xQueueADC &ulValueToSendADC &xHigherPriorityTaskWoken);     //中断一次后发行消息队列
    xResult = xQueueReceive(xQueueADC          /* 消息队列句柄 */
          (void *)&lpit0_ch0_flag_counter  /* 存储接收到的数据到变量ucQueueMsgValue中 */
          (TickType_t)xMaxBlockTime);       /* 设置阻塞时间 */

    • 发布于 2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:7
  • 通过消息队列和消息邮箱在不同任务直接传递的,其实也不可以不用系统的这套东西,自己定义一个变量,然后加一把锁,保证任务之间不会同时写
    • 发布于2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 消息队列和邮箱

    去官网看内核例程就可以,说明的很详细

    • 发布于2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 是可以通用通过队列、信号量、邮箱这些通讯方式是可以的。
    • 发布于2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 队列是内部通信的主要形式。它可以用于在任务和任务之间以及任务和中断之间发送消息
    • 发布于2019-03-26
    • 举报
    • 评论 0
    • 0
    • 0

  • freertos跟大多数操作系统一样,任务之间通信的主要方式就是消息队列,一般是一个线程将消息放入队列,别的线程去取

    此外,任务之间还可以进行同步互斥,方式包括信号量,互斥量

    • 发布于2019-03-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 大多的RTOS都是使用信号量,消息队列,邮箱的方式,但是在单片机上,也可以简单的使用全局变量
    • 发布于2019-03-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用的是消息队列、信号量、邮箱这些机制,还有使用全局变量的,不过不安全
    • 发布于2019-03-30
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

freertos里面的任务之间是怎么传递消息的