从freertos中的数据获取有关发送任务的信息

时间:2019-04-05 04:25:46

标签: stm32 freertos

我是FreeRTOS和STM32的新手。我正在做一个需要将数据从一个任务发送到另一个任务的项目。但是接收任务需要获取有关哪个任务发送了数据的信息,因为我的程序中有多个任务。有没有办法从freertos的另一个任务中的接收数据中获取有关发送任务的信息?

预先感谢

1 个答案:

答案 0 :(得分:3)

只需使用FreeRTOS Queue。这将允许您将数据从一个任务发送到另一任务。一个或多个任务可以将数据发布到队列中,另一个任务可以阻止该队列,直到一些数据到达队列中为止。

队列可以包含任何T类型的数据,并且FreeRTOS要求您提供希望存储在队列中的项目数以及单个元素的大小,即sizeof(T)。

为方便起见,您可以简单地使用以下结构在任务之间传递数据。

typedef struct Data {
  // Basically can be any plain-old-data.
  // Instead you can make a Data a tagged-union of structures as well.
};

typedef struct InterTaskPayload {
  int id; // task identifier
  Data data;
};

通过打开接收消息,接收任务可以识别发件人(发布消息的任务)并使用数据。