FreeRTOS消息队列结构体

描述

  有一个结构体用于描述队列,叫做 Queue_t,这个结构体在文件 queue.c 中定义。

  3、队列创建

  在使用队列之前必须先创建队列,有两种创建队列的方法,一种是静态的,使用函数xQueueCreateStatic();另一个是动态的,使用函数

xQueueCreate()。这两个函数本质上都是宏,真正完成队列创建的函数是 xQueueGenericCreate()和

xQueueGenericCreateStatic(),这两个函数在文件 queue.c 中定义。

  函数 prvInitialiseNewQueue() 用于队列的初始化,此函数在文件 queue.c 中定义。

  函数 prvInitialiseNewQueue()中调用了函数 xQueueGenericReset()来复位队列。

  比如我们创建一个有 4 个队列项,每个队列项长度为 32 个字节的队列 TestQueue,创建成功的队列如图所示:

  结构体

  在创建的时候需要指定此队列的用途,也就是队列类型,一共有六种类型:

  queueQUEUE_TYPE_BASE 普通的消息队列

  queueQUEUE_TYPE_SET 队列集

  queueQUEUE_TYPE_MUTEX 互斥信号量

  queueQUEUE_TYPE_COUNTING_SEMAPHORE 计数型信号量

  queueQUEUE_TYPE_BINARY_SEMAPHORE 二值信号量

  queueQUEUE_TYPE_RECURSIVE_MUTEX 递归互斥信号量

  4、向队列发送消息

  FreeRTOS 提供了 8 个向队列发送消息的 API 函数:

  结构体

  5、队列上锁和解锁

  队列的上锁和解锁是两个 API 函数:prvLockQueue()和 prvUnlockQueue()。

  6、从队列读取消息

  有入队就有出队,出队就是从队列中获取队列项(消息),FreeRTOS 中出队函数如表示:

  具体的函数用法大家可以在用到的时候百度,这里就不详细介绍了,大家知道有这些东西就行。其中最重要的是任务级和中断级不一样,在中断处理函数中是由一套自己的

API 用的。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分