FreeRTOS队列集(11)

队列集简介

  • 一个队列只允许任务间传递的消息为同一种数据类型,如果需要在任务间传递不同数据类型的消息时,那么就可以使用队列集 !
  • 作用:用于对多个队列或信号量进行“监听”,其中不管哪一个消息到来,都可让任务退出阻塞状态

函数

/**
  * @brief  此函数用于创建队列集
  * @param  uxEventQueueLength:队列集可容纳的队列数量
  * @retval 返回创建成功的队列集句柄,如果返回NULL则表示内存不足无法创建
  */
QueueSetHandle_t xQueueCreateSet(const UBaseType_t uxEventQueueLength)
/**
  * @brief  此函数用于往队列集中添加队列,要注意的时,队列在被添加到队列集之前,队列中不能有有效的消息
  * @param  xQueueOrSemaphore:待添加的队列句柄
  * @param  xQueueSet:队列集
  * @retval pdPASS 队列集添加队列成功,pdFAIL 队列集添加队列失败
  */
BaseType_t xQueueAddToSet(QueueSetMemberHandle_t xQueueOrSemaphore,
                          QueueSetHandle_t xQueueSet)
/**
  * @brief  此函数用于从队列集中移除队列, 要注意的是,队列在从队列集移除之前,必须没有有效的消息
  * @param  xQueueOrSemaphore:待移除的队列句柄
  * @param  xQueueSet:队列集
  * @retval pdPASS 队列集移除队列成功,pdFAIL 队列集移除队列失败
  */
BaseType_t xQueueRemoveFromSet(QueueSetMemberHandle_t xQueueOrSemaphore,
                               QueueSetHandle_t xQueueSet)
/**
  * @brief  此函数用于在任务中获取队列集中有有效消息的队列
  * @param  xQueueSet:队列集
  * @param  xTicksToWait:阻塞超时时间
  * @retval 返回消息的队列句柄,如果返回NULL则表示获取消息失败
  */
QueueSetMemberHandle_t xQueueSelectFromSet(QueueSetHandle_t xQueueSet,
                                           TickType_t const xTicksToWait)

队列集使用流程

  1. 启用队列集功能需要将宏configUSE_QUEUE_SETS 配置为 1

  2. 创建队列集

  3. 创建队列或信号量

  4. 往队列集中添加队列或信号量

  5. 往队列发送信息或释放信号量

  6. 获取队列集的消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值