Получение информации об отправляющей задаче из данных во freertos

#stm32 #freertos

#stm32 #freertos

Вопрос:

Я новичок в FreeRTOS и STM32. И я работаю над проектом, которому требуется отправка данных из одной задачи в другую. Но задача получения должна получать информацию о том, какая задача отправила данные, потому что в моей программе есть несколько задач. есть ли какой-либо способ получить информацию об отправляющей задаче из получаемых данных в другой задаче во freertos??

Заранее спасибо

Ответ №1:

Просто используйте очередь 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;
};
  

Открывая принимающее сообщение, принимающая задача может идентифицировать отправителя (задачу, отправившую сообщение) и использовать данные.