Получение информации о задании на отправку из данных в фрирет - PullRequest
0 голосов
/ 05 апреля 2019

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

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

1 Ответ

3 голосов
/ 05 апреля 2019

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

...