osMessageQueuePut() - загрузка сообщения в очередь в CMSIS-RTOS2

Put a Message into a Queue or timeout if Queue is full.

Помещает сообщение в очередь немедленно или по таймауту, если очередь заполнена.

osStatus_t  osMessageQueuePut(osMessageQueueId_t  mq_id,
                              const void          *msg_ptr,
                              uint8_t             msg_prio,
                              uint32_t            timeout);

Параметры

mq_id
message queue ID obtained by osMessageQueueNew
Идентификатор очереди сообщений, полученный с помощью функциии osMessageQueueNew().
*msg_ptr
pointer to buffer with message to put into a queue
Указатель на буфер с сообщением, помещаемый в очередь сообщений.
msg_prio
message priority
Приоритет сообщения.
timeout
Timeout Values or 0 in case of no time-out
Значение таймаута или 0 при немедленной загрузке сообщения в очередь.



Возвращаемое значение

osStatus_t
status code that indicates the execution status of the function
Код состояния как индикатор выполнения функции.

Возможные возвращаемые значения:

 osOK :  сообщение помещено в очередь;

 osErrorTimeout :  сообщение не удалось поместить в очередь за заданное время (wait-timed semantics);

 osErrorResource :  недостаточно места в очереди (try semantics);

 osErrorParameter :  идентификатор очереди сообщений mq_id равен нулю или недопустим, в ISR указан ненулевой таймаут;

 osErrorSafetyClass :  класс безопасности вызывающей задачи ниже, чем класс безопасности указанной очереди сообщений.




Описание

Функция osMessageQueuePut() может быть вызвана из процедуры обработки прерывания (ISR) только с нулевым значением таймаута