FreeRTOS-queue.h
FreeRTOS-queue.h文件分析
#define xQueueCreate( uxQueueLength, uxItemSize ) xQueueGenericCreate( ( uxQueueLength ), ( uxItemSize ), ( queueQUEUE_TYPE_BASE ) )
功能:创建队列
参数:
- uxQueueLength 队列长度,队列包含的条目数量
- uxItemSize 队列条目大小
返回值:队列指针
#define xQueueSendToFront( xQueue, pvItemToQueue, xTicksToWait ) \
xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_FRONT )
功能: 把pvItemToQueue中的值放到xQueue队列的前面,数据后进先出。
参数:
- xQueue 队列指针
- pvItemToQueue 待发送条目
- xTicksToWait 等待超时时间
#define xQueueSendToBack( xQueue, pvItemToQueue, xTicksToWait ) \
xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK )
功能:把pvItemToQueue中指向的值发送到队列的后面,数据先进先出
参数:
- xQueue 队列指针
- pvItemToQueue 条目指针
- xTicksToWait 超时等待时间
#define xQueueSend( xQueue, pvItemToQueue, xTicksToWait ) \
xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK )
功能:同xQueueSendToBack
#define xQueueOverwrite( xQueue, pvItemToQueue ) \
xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), 0, queueOVERWRITE )
功能:把pvItemToQueue 中指向的数据发送到队列,覆盖式发送,当队列是空时,发送后有效数据长度加1,否则数据长度不变。
参数
BaseType_t xQueueGenericSend( QueueHandle_t xQueue,
const void * const pvItemToQueue,
TickType_t xTicksToWait,
const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
功能:一般队列发送函数。
参数:
- xQueue 队列指针
- pvItemToQueue 待发送条目
- xTicksToWait等待超时时间
- xCopyPosition 发送位置
返回值:发送成功返回1,否则返回0
BaseType_t xQueuePeek( QueueHandle_t xQueue,
void * const pvBuffer,
TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
功能:从队列中读一个条目,但是不改变队列的读指针
参数:
- xQueue 队列指针
- pvBuffer 数据缓存
- xTicksToWait 等待超时时间
返回值:成功时返回1,否则返回0
BaseType_t xQueuePeekFromISR( QueueHandle_t xQueue,
void * const pvBuffer ) PRIVILEGED_FUNCTION;
功能:中断上下文从队列中读一个条目,但不改变队列读指针
参数:
- xQueue 队列指针
- pvBuffer 数据缓存
返回值:成功时返回1,否则返回0
BaseType_t xQueueReceive( QueueHandle_t xQueue,
void * const pvBuffer,
TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
功能:从队列中读取一个条目
参数:
- xQueue 队列指针
- pvBuffer 数据缓存
- xTicksToWait 等待超时时间
返回值:成功时返回1,否则返回0
UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
功能:获取队列中可读的条目数
参数:
- xQueue 队列指针
返回值:队列中可读的条目数
UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
功能:获取队列可写的条目数
参数:
- xQueue 队列指针
返回值:队列可写的条目数
void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
功能:删除队列
参数:
- xQueue 队列指针
#define xQueueSendToFrontFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) \
xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_FRONT )
功能:中断上下文发送条目到队列前面。
参数:
- xQueue 队列指针
- pvItemToQueue 待发送条目
- pxHigherPriorityTaskWoken 输出型指针,指示是否有更高优先级的就绪任务。
返回值:成功时返回1,否则返回0
#define xQueueSendToBackFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) \
xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK )
功能:中断上下文发送条目到队列后面。
参数:
- xQueue 队列指针
- pvItemToQueue 待发送条目
- pxHigherPriorityTaskWoken 输出型指针,指示是否有更高优先级的就绪任务。
返回值:成功时返回1,否则返回0
#define xQueueOverwriteFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) \
xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueOVERWRITE )
功能:中断上下文发送条目到队列,覆盖式发送
参数:
- xQueue 队列指针
- pvItemToQueue 待发送条目
- pxHigherPriorityTaskWoken 输出型指针,指示是否有更高优先级的就绪任务。
返回值:成功时返回1,否则返回0
#define xQueueSendFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) \
xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK )
功能:同xQueueSendToBackFromISR
BaseType_t xQueueGenericSendFromISR( QueueHandle_t xQueue,
const void * const pvItemToQueue,
BaseType_t * const pxHigherPriorityTaskWoken,
const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
功能:中断上下文,把条目发送到队列
参数:
- xQueue 队列指针
- pvItemToQueue 待发送条目
- pxHigherPriorityTaskWoken 输出型指针,指示是否有更高优先级的就绪任务。
- xCopyPosition 发送位置
返回值:成功时返回1,否则返回0
BaseType_t xQueueGiveFromISR( QueueHandle_t xQueue,
BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
功能:中断上下文释放信号量或互斥量
参数:
- xQueue 队列指针
- pxHigherPriorityTaskWoken 输出型指针,指示是否有更高优先级的就绪任务。
返回值:成功时返回1,否则返回0
BaseType_t xQueueReceiveFromISR( QueueHandle_t xQueue,
void * const pvBuffer,
BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
功能:中断上下文从队列读数据
参数:
- xQueue 队列指针
- pvBuffer 数据缓存
- pxHigherPriorityTaskWoken 输出型指针,指示是否有更高优先级的就绪任务。
返回值:成功时返回1,否则返回0
BaseType_t xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
功能:中断上下文判断队列是否为空
参数:
- xQueue 队列指针
返回值:如果队列为空返回1,否则返回0
BaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
功能:中断上下文判断队列是否满
参数:
- xQueue 队列指针
返回值:如果队列满返回1,否则返回0
UBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
功能:中断上下文获取队列中可读条目数
参数:
- xQueue 队列指针
返回值:取队列中可读条目数
QueueHandle_t xQueueCreateMutex( const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
功能:创建互斥量
参数:
- ucQueueType 互斥量类型
返回值:队列指针
QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount,
const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION;
功能:创建计数信号量
参数:
- uxMaxCount 能计的最大数
- uxInitialCount 初始值
返回值:队列指针
BaseType_t xQueueSemaphoreTake( QueueHandle_t xQueue,
TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
功能:获取信号量或者互斥量
参数:
- xQueue 队列指针
- xTicksToWait 超时时间
返回值:成功时返回1,否则返回0
TaskHandle_t xQueueGetMutexHolder( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION;
功能:获取互斥量的持有者
参数:
- xSemaphore 队列指针
返回值:持有互斥量的任务
TaskHandle_t xQueueGetMutexHolderFromISR( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION;
功能:中断上下文获取互斥量的持有者
参数:
- xSemaphore 队列指针
返回值:持有互斥量的任务
BaseType_t xQueueTakeMutexRecursive( QueueHandle_t xMutex,
TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
功能:递归的获取互斥量
参数:
- xMutex 队列指针
- xTicksToWait 超时等待时间
返回值:成功时返回1,否则返回0
BaseType_t xQueueGiveMutexRecursive( QueueHandle_t xMutex ) PRIVILEGED_FUNCTION;
功能:递归的释放互斥量
参数:
- xMutex 队列指针
返回值:成功时返回1,否则返回0
#define xQueueReset( xQueue ) xQueueGenericReset( xQueue, pdFALSE )
功能:重置队列
参数:
- xQueue 队列指针
返回值:返回1
void vQueueWaitForMessageRestricted( QueueHandle_t xQueue,
TickType_t xTicksToWait,
const BaseType_t xWaitIndefinitely ) PRIVILEGED_FUNCTION;
功能:等待队列中的消息不等于0,用于定时器timer.c文件中
参数:
- xQueue 队列指针
- xTicksToWait 超时等待时间
- xWaitIndefinitely 是否允许无限期等待
BaseType_t xQueueGenericReset( QueueHandle_t xQueue,
BaseType_t xNewQueue ) PRIVILEGED_FUNCTION;
功能:重置队列
参数:
- xQueue 队列指针
- xNewQueue 是否是一个新的队列(需要初始化的队列)
返回值:返回1
浙公网安备 33010602011771号