[FreeRTOS] Message Queue (메시지 큐)

 메시지 큐는 RTOS 에서 가장 많이 사용되는 IPC 라고 봐도 무방 함.

TASK나 ISR에서 또 다른 TASK로 포인터 변수나 데이터를 전달 함.




xQueueSend 와 xQueueSendToBack 은 동일한 동작으로 FIFO를 수행 함.



API


xQueueCreate : 큐 생성

#include "queue.h"

QueueHandle_t xQueueCreate( UBaseType_t uxQueueLength, UBaseType_t uxItemSize );

// # Parameters
//  uxQueueLength : 큐 길이
//  uxItemSize : 큐 아이템 사이즈

// # Return : 큐 핸들


xQueueReceive : 메시지 큐 대기

#include “queue.h”
BaseType_t xQueueReceive(QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait);

// # Parameters
//  xQueue : 큐 핸들
//  pvBuffer : 수신 된 데이터가 복사 될 메모리 포인터
//  xTicksToWait : 대기 시간


xQueueSend : 메시지 전송

#include "queue.h"

BaseType_t xQueueSend(QueueHandle_t xQueue, const void * pvItemToQueue, TickType_t xTicksToWait);

// # Parameters
//  xQueue : 큐 핸들
//  pvItemToQueue : 큐에 복사할 데이터에 대한 포인터
//  xTicksToWait : 대기열이 이미 가득 찬 경우, 대기열에서 큐를 사용할 수 있을 때 까지
//                   Task가 blocked 상태를 유지해야 하는 최대 시간
                   
// # Return Values
//  pdPASS : 데이터가 큐에 성공적으로 전송된 경우
//  errQUEUE_FULL : 큐가 이미 가득 차서 데이터를 큐에 쓸 수 없는 경우


uxQueueMessagesWaiting : 큐에 존재 하는 현재 아이템 갯수를 알려 줌

#include “queue.h”

UBaseType_t uxQueueMessagesWaiting(const QueueHandle_t xQueue);

// # Parameters
//  xQueue : 큐 핸들

// # Returned Value
//  쿼리 중인 대기열에 보관된 아이템 항목 수


xQueueReset : 큐 리셋

#include “queue.h”
BaseType_t xQueueReset(QueueHandle_t xQueue);

// # Parameters
//  xQueue : 큐 핸들

// # Return Values
//  항상 pdPASS를 반환 함


이 블로그의 인기 게시물

Crusader Kings 3 - Converting DNA code using Portrait Editor