Просто используйте Очередь FreeRTOS .Это позволит вам отправлять данные из одной задачи в другую.Одна или несколько задач могут отправлять данные в очередь, где другая задача может блокироваться, пока некоторые данные не поступят в очередь.
Очередь может содержать данные любого типа 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;
};
Byоткрывая получающее сообщение, получающая задача может идентифицировать отправителя (задачу, отправившую сообщение) и использовать данные.