0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FreeRTOS消息队列结构体

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-06 17:03 次阅读

有一个结构体用于描述队列,叫做 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 用的。

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

    关注

    5085

    文章

    19138

    浏览量

    305731
  • FreeRTOS
    +关注

    关注

    12

    文章

    484

    浏览量

    62216
  • 结构体
    +关注

    关注

    1

    文章

    130

    浏览量

    10851
收藏 人收藏

    评论

    相关推荐

    基于FreeRTOS的STM32F103系统—队列

    FreeRTOS中,队列是实现任务之间同步、互斥和通信的一种重要方法(其他的实现方法有:任务通知、事件组、信号量、互斥量)。
    的头像 发表于 11-10 11:37 1153次阅读
    基于<b class='flag-5'>FreeRTOS</b>的STM32F103系统—<b class='flag-5'>队列</b>

    FreeRTOS使用队列怎么发送一个结构呢?

    怎么使用队列,发送一个12个字节的结构呢? osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec
    发表于 04-17 07:35

    转:第20章 FreeRTOS消息队列

    第20章FreeRTOS消息队列 本章节为大家讲解FreeRTOS的一个重要的通信机制----消息队列,初学者要熟练掌握,因为消息队列在实际
    发表于 09-04 14:41

    请问如何用队列结构实体,而非指针传递?

    我这个小型应用来说,可以接收。但是发现队列取出的数据不对,是什么原因?如何用消息队列传传结构实体,而不是指针?
    发表于 06-17 09:01

    FreeRTOS创建消息队列问题如何解决

    刚开始学习FreeRTOS,用的是STM32F103RCT6,目前创建了三个任务,运行指示灯、按键、显示。其中显示任务里是暂时还没有具体的代码,按键任务准备使用队列传递按键值。现在的问题是这样
    发表于 07-19 08:03

    FreeRTOS中的队列如何使用?

    FreeRTOS中的队列如何使用?
    发表于 12-09 06:24

    FreeRTOS消息队列有何作用

    FreeRTOS消息队列 & ESP32实战FreeRTOS消息队列FreeRTOS的消息队列
    发表于 01-27 06:53

    消息队列传递结构指针和结构异同

    FreeRTOS消息队列 传递结构指针和结构异同1 消息
    发表于 02-11 07:02

    FreeRTOS消息队列 & ESP32使用

    FreeRTOS消息队列 & ESP32实战FreeRTOS消息队列FreeRTOS的消息队列
    发表于 12-03 17:51 1次下载
    <b class='flag-5'>FreeRTOS</b>消息<b class='flag-5'>队列</b> & ESP32使用

    FreeRTOS消息队列 传递结构指针和结构异同

    FreeRTOS消息队列 传递结构指针和结构异同
    发表于 12-08 12:06 6次下载
    <b class='flag-5'>FreeRTOS</b>消息<b class='flag-5'>队列</b> 传递<b class='flag-5'>结构</b><b class='flag-5'>体</b>指针和<b class='flag-5'>结构</b><b class='flag-5'>体</b>异同

    FreeRTOS 队列 信号量 互斥量

    文章目录前言Queue 队列semaphore 信号量Mutex 互斥量微信公众号前言FreeRTOS STM32CubeMX配置 内存管理 任务管理上节介绍了用STM32CubeMX生成带
    发表于 12-09 09:51 0次下载
    <b class='flag-5'>FreeRTOS</b> <b class='flag-5'>队列</b> 信号量 互斥量

    FreeRTOS高级篇5---FreeRTOS队列分析

    FreeRTOS提供了多种任务间通讯方式,包括:任务通知(版本V8.2以及以上版本)队列二进制信号量计数信号量互斥量递归互斥量其中,二进制...
    发表于 01-26 17:40 9次下载
    <b class='flag-5'>FreeRTOS</b>高级篇5---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>队列</b>分析

    FreeRTOS系列第18篇---FreeRTOS队列API函数

    FreeRTOS为操作队列提供了非常丰富的API函数,包括队列的创建、删除,灵活的入队和出队方式、带中断保护的入队和出队等等。下面就来详细...
    发表于 01-26 17:44 11次下载
    <b class='flag-5'>FreeRTOS</b>系列第18篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>队列</b>API函数

    FreeRTOS的消息队列

    基于 FreeRTOS 的应用程序由一组独立的任务构成——每个任务都是具有独立权限的程序。这些独立的任务之间的通讯与同步一般都是基于操作系统提供的IPC通讯机制,而FreeRTOS 中所有的通信与同步机制都是基于队列实现的。
    的头像 发表于 02-14 09:56 901次阅读
    <b class='flag-5'>FreeRTOS</b>的消息<b class='flag-5'>队列</b>

    FreeRTOS消息队列介绍

    队列是为了任务与任务、任务与中断之间的通信而准备的,可以在任务与任务、任务与中断之间传递消息,队列中可以存储有限的、大小固定的数据项目。任务与任务、任务与中断之间要交流的数据保存在队列中,叫做
    的头像 发表于 07-06 16:58 817次阅读
    <b class='flag-5'>FreeRTOS</b>消息<b class='flag-5'>队列</b>介绍