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