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

Getting info about the sending task from the data in freertos

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

提前致谢

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

队列可以包含任何类型 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;
};

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