FreeRTOS-queue.h

FreeRTOS-queue.h文件分析

#define xQueueCreate( uxQueueLength, uxItemSize )    xQueueGenericCreate( ( uxQueueLength ), ( uxItemSize ), ( queueQUEUE_TYPE_BASE ) )

功能:创建队列

参数:

  1. uxQueueLength 队列长度,队列包含的条目数量
  2. uxItemSize  队列条目大小

返回值:队列指针

 

#define xQueueSendToFront( xQueue, pvItemToQueue, xTicksToWait ) \

    xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_FRONT )

功能: 把pvItemToQueue中的值放到xQueue队列的前面,数据后进先出。

参数:

  1. xQueue 队列指针
  2. pvItemToQueue 待发送条目
  3. xTicksToWait 等待超时时间

 

#define xQueueSendToBack( xQueue, pvItemToQueue, xTicksToWait ) \

    xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK )

功能:把pvItemToQueue中指向的值发送到队列的后面,数据先进先出

参数:

  1. xQueue 队列指针
  2. pvItemToQueue 条目指针
  3. 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;

功能:一般队列发送函数。

参数:

  1. xQueue 队列指针
  2. pvItemToQueue 待发送条目
  3. xTicksToWait等待超时时间
  4. xCopyPosition  发送位置

返回值:发送成功返回1,否则返回0

 

BaseType_t xQueuePeek( QueueHandle_t xQueue,

                       void * const pvBuffer,

                       TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;

功能:从队列中读一个条目,但是不改变队列的读指针

参数:

  1. xQueue 队列指针
  2. pvBuffer 数据缓存
  3. xTicksToWait 等待超时时间

返回值:成功时返回1,否则返回0

 

BaseType_t xQueuePeekFromISR( QueueHandle_t xQueue,

                              void * const pvBuffer ) PRIVILEGED_FUNCTION;

功能:中断上下文从队列中读一个条目,但不改变队列读指针

参数:

  1. xQueue 队列指针
  2. pvBuffer 数据缓存

返回值:成功时返回1,否则返回0

 

BaseType_t xQueueReceive( QueueHandle_t xQueue,

                          void * const pvBuffer,

                          TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;

功能:从队列中读取一个条目

参数:

  1. xQueue 队列指针
  2. pvBuffer 数据缓存
  3. xTicksToWait 等待超时时间

返回值:成功时返回1,否则返回0

 

UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;

功能:获取队列中可读的条目数

参数:

  1. xQueue  队列指针

返回值:队列中可读的条目数

 

UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;

功能:获取队列可写的条目数

参数:

  1. xQueue 队列指针

返回值:队列可写的条目数

 

void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;

功能:删除队列

参数:

  1. xQueue 队列指针

 

#define xQueueSendToFrontFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) \

    xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_FRONT )

功能:中断上下文发送条目到队列前面。

参数:

  1. xQueue 队列指针
  2. pvItemToQueue 待发送条目
  3. pxHigherPriorityTaskWoken  输出型指针,指示是否有更高优先级的就绪任务。

返回值:成功时返回1,否则返回0

 

 

#define xQueueSendToBackFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) \

    xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK )

功能:中断上下文发送条目到队列后面。

参数:

  1. xQueue 队列指针
  2. pvItemToQueue 待发送条目
  3. pxHigherPriorityTaskWoken  输出型指针,指示是否有更高优先级的就绪任务。

返回值:成功时返回1,否则返回0

 

#define xQueueOverwriteFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) \

    xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueOVERWRITE )

功能:中断上下文发送条目到队列,覆盖式发送

参数:

  1. xQueue 队列指针
  2. pvItemToQueue 待发送条目
  3. 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;

功能:中断上下文,把条目发送到队列

参数:

  1. xQueue 队列指针
  2. pvItemToQueue 待发送条目
  3. pxHigherPriorityTaskWoken  输出型指针,指示是否有更高优先级的就绪任务。
  4. xCopyPosition 发送位置

返回值:成功时返回1,否则返回0

 

 

BaseType_t xQueueGiveFromISR( QueueHandle_t xQueue,

                              BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;

功能:中断上下文释放信号量或互斥量

参数:

  1. xQueue 队列指针
  2. pxHigherPriorityTaskWoken  输出型指针,指示是否有更高优先级的就绪任务。

返回值:成功时返回1,否则返回0

 

 

BaseType_t xQueueReceiveFromISR( QueueHandle_t xQueue,

                                 void * const pvBuffer,

                                 BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;

功能:中断上下文从队列读数据

参数:

  1. xQueue 队列指针
  2. pvBuffer 数据缓存
  3. pxHigherPriorityTaskWoken  输出型指针,指示是否有更高优先级的就绪任务。

返回值:成功时返回1,否则返回0

 

 

BaseType_t xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;

功能:中断上下文判断队列是否为空

参数:

  1. xQueue 队列指针

返回值:如果队列为空返回1,否则返回0

 

BaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;

功能:中断上下文判断队列是否满

参数:

  1. xQueue 队列指针

返回值:如果队列满返回1,否则返回0

 

UBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;

功能:中断上下文获取队列中可读条目数

参数:

  1. xQueue 队列指针

返回值:取队列中可读条目数

 

QueueHandle_t xQueueCreateMutex( const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;

功能:创建互斥量

参数:

  1. ucQueueType 互斥量类型

返回值:队列指针

 

QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount,

                                             const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION;

功能:创建计数信号量

参数:

  1. uxMaxCount 能计的最大数
  2. uxInitialCount  初始值

返回值:队列指针

 

BaseType_t xQueueSemaphoreTake( QueueHandle_t xQueue,

                                TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;

功能:获取信号量或者互斥量

参数:

  1. xQueue 队列指针
  2. xTicksToWait  超时时间

返回值:成功时返回1,否则返回0

 

TaskHandle_t xQueueGetMutexHolder( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION;

功能:获取互斥量的持有者

参数:

  1. xSemaphore 队列指针

返回值:持有互斥量的任务

 

TaskHandle_t xQueueGetMutexHolderFromISR( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION;

功能:中断上下文获取互斥量的持有者

参数:

  1. xSemaphore 队列指针

返回值:持有互斥量的任务

 

BaseType_t xQueueTakeMutexRecursive( QueueHandle_t xMutex,

                                     TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;

功能:递归的获取互斥量

参数:

  1. xMutex 队列指针
  2. xTicksToWait 超时等待时间

返回值:成功时返回1,否则返回0

 

BaseType_t xQueueGiveMutexRecursive( QueueHandle_t xMutex ) PRIVILEGED_FUNCTION;

功能:递归的释放互斥量

参数:

  1. xMutex  队列指针

返回值:成功时返回1,否则返回0

 

#define xQueueReset( xQueue )    xQueueGenericReset( xQueue, pdFALSE )

功能:重置队列

参数:

  1. xQueue 队列指针

返回值:返回1

 

 

void vQueueWaitForMessageRestricted( QueueHandle_t xQueue,

                                     TickType_t xTicksToWait,

                                     const BaseType_t xWaitIndefinitely ) PRIVILEGED_FUNCTION;

功能:等待队列中的消息不等于0,用于定时器timer.c文件中

参数:

  1. xQueue 队列指针
  2. xTicksToWait 超时等待时间
  3. xWaitIndefinitely 是否允许无限期等待

 

 

BaseType_t xQueueGenericReset( QueueHandle_t xQueue,

                               BaseType_t xNewQueue ) PRIVILEGED_FUNCTION;

功能:重置队列

参数:

  1. xQueue 队列指针
  2. xNewQueue 是否是一个新的队列(需要初始化的队列)

返回值:返回1

posted @ 2022-08-08 20:44  明er  阅读(35)  评论(0)    收藏  举报