(一)目的:进程间的通信

(二)队列创建

1. 动态创建队列,函数 xQueueCreate()

QueueHandle_t xQueueCreate( UBaseType_t uxQueueLength,
               UBaseType_t uxItemSize) 参数:
uxQueueLength: 要创建的队列的队列长度,这里是队列的项目数。
uxItemSize: 队列中每个项目(消息)的长度,单位为字节
返回值:
其他值: 队列创捷成功以后返回的队列句柄!
NULL: 队列创建失败

2. 静态创建队列, 函数 xQueueCreateStatic()

QueueHandle_t xQueueCreateStatic( UBaseType_t uxQueueLength,
                     UBaseType_t uxItemSize,
                     uint8_t * pucQueueStorageBuffer,
                     StaticQueue_t * pxQueueBuffer) 参数:

uxQueueLength: 要创建的队列的队列长度,这里是队列的项目数。
uxItemSize: 队列中每个项目(消息)的长度,单位为字节
pucQueueStorage: 指向队列项目的存储区,也就是消息的存储区,这个存储区需要用户自
行分配。此参数必须指向一个 uint8_t 类型的数组。这个存储区要大于等
于(uxQueueLength * uxItemsSize)字节。
pxQueueBuffer: 此参数指向一个 StaticQueue_t 类型的变量,用来保存队列结构体。
返回值:
其他值: 队列创捷成功以后的队列句柄!
NULL: 队列创建失败。

3. 队列类型

队列类型,由于 FreeRTOS 中的信号量等也是通过队列来实现的,创建信号
量的函数最终也是使用此函数的,因此在创建的时候需要指定此队列的用途,
也就是队列类型,一共有六种类型:
queueQUEUE_TYPE_BASE 普通的消息队列
queueQUEUE_TYPE_SET 队列集
queueQUEUE_TYPE_MUTEX 互斥信号量
queueQUEUE_TYPE_COUNTING_SEMAPHORE 计数型信号量
queueQUEUE_TYPE_BINARY_SEMAPHORE 二值信号量
queueQUEUE_TYPE_RECURSIVE_MUTEX 递归互斥信号量
函 数 xQueueCreate() 创 建 队 列 的 时 候 此 参 数 默 认 选 择 的 就 是
queueQUEUE_TYPE_BASE。 动态创建函数:xQueueCreate()本质是 xQueueGenericCreate()函数
静态创建函数:xQueueCreateStatic()本质是 xQueueGenericCreateStatic()函数

(三)队列初始化,函数prvInitialiseNewQueue()

static void prvInitialiseNewQueue(   const UBaseType_t uxQueueLength, //队列长度
                      const UBaseType_t uxItemSize, //队列项目长度
                      uint8_t * pucQueueStorage, //队列项目存储区
                      const uint8_t ucQueueType, //队列类型
                      Queue_t * pxNewQueue ) //队列结构体

(3.3)后面的具体查看freertos手册看参数

(四)向队列发送消息

(五)从队列 读取

(六)使用示例

、1. 定义

#define MESSAGE_Q_NUM 4 //发送数据的消息队列的数量 (2)
QueueHandle_t Message_Queue; //信息队列句柄

2. 创建消息 Message_Queue,队列项长度是串口接收缓冲区长度

Message_Queue=xQueueCreate(MESSAGE_Q_NUM,USART_REC_LEN);  

3. 终端中向队列中发送数据

xQueueSendFromISR(Message_Queue,USART_RX_BUF,&xHigherPriorityTaskWoken);

4. 请求消息 Message_Queue

err=xQueueReceiveFromISR(Message_Queue,buffer,&xTaskWokenByReceive)

007_FreeROTS队列的更多相关文章

  1. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  2. 消息队列 Kafka 的基本知识及 .NET Core 客户端

    前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka 是因为要配合其他 java 项目中,所以就对 Kafka 了解了一下,也算是做个笔记吧. 本篇不谈论 Kafka 和其他的一些消息 ...

  3. Beanstalkd一个高性能分布式内存队列系统

    高性能离不开异步,异步离不开队列,内部是Producer-Consumer模型的原理. 设计中的核心概念: job:一个需要异步处理的任务,是beanstalkd中得基本单元,需要放在一个tube中: ...

  4. .net 分布式架构之业务消息队列

    开源QQ群: .net 开源基础服务  238543768 开源地址: http://git.oschina.net/chejiangyi/Dyd.BusinessMQ ## 业务消息队列 ##业务消 ...

  5. 【原创经验分享】WCF之消息队列

    最近都在鼓捣这个WCF,因为看到说WCF比WebService功能要强大许多,另外也看了一些公司的招聘信息,貌似一些中.高级的程序员招聘,都有提及到WCF这一块,所以,自己也关心关心一下,虽然目前工作 ...

  6. 缓存、队列(Memcached、redis、RabbitMQ)

    本章内容: Memcached 简介.安装.使用 Python 操作 Memcached 天生支持集群 redis 简介.安装.使用.实例 Python 操作 Redis String.Hash.Li ...

  7. Java消息队列--ActiveMq 实战

    1.下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Un ...

  8. Java消息队列--JMS概述

    1.什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...

  9. 消息队列性能对比——ActiveMQ、RabbitMQ与ZeroMQ(译文)

    Dissecting Message Queues 概述: 我花了一些时间解剖各种库执行分布式消息.在这个分析中,我看了几个不同的方面,包括API特性,易于部署和维护,以及性能质量..消息队列已经被分 ...

随机推荐

  1. LC 33. Search in Rotated Sorted Array

    问题描述 Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. ...

  2. python Django基础操作

    Django常用命令 创建Django项目 Django-admin startprotect  mysite 创建项目以后,以下生成的文件 最外层的file:mysite/ 根目录只是你的项目的容器 ...

  3. 列表初始化(list initialization)

    列表初始化啊就是大括号来初始化: 列表初始化的好处:

  4. msyql 去重

    delete from userinfo where busi_id in (select busi_id from (select busi_id from userinfo group by bu ...

  5. (十)mybatis之缓存

    一.缓存的意义 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)去查询,从缓存中进行查询,从而提高查询效率,解决了高并发系统的性能问题. 二.mybatis ...

  6. Html5+Mui前端框架,开发记录(二):提交不了数据?

    1.Mui 请求Webapi接口,返回所需要的数据(get,post) mui.ajax({ url: getAddress() + '/api/Qiliu/get?jsoncallback=?', ...

  7. SQL logic error no such module: fts5 解决方案

    因项目原因,需要使用SQLite的全文索引,用到了最新的fts5模块 但在咱们.net framwork中却会提示“SQL logic error no such module: fts5”:找不到f ...

  8. 括号配对检测 A

    括号配对检测 A ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮ ...

  9. 把一个质量为M0 的物体加速到 时间慢100倍 需要多大能量

    洛伦兹系数  γ = 100: 运动时候的质量  M = γM0 速度   v = c*sqrt(1-1/γ2) E = 1/2 * m0c2  *γ* (1-1/γ2) 如果一个60kg 的人想要加 ...

  10. springboot启动流程(九)ioc依赖注入

    所有文章 https://www.cnblogs.com/lay2017/p/11478237.html 正文 在前面的几篇文章中,我们多次提到这么一个转化过程: Bean配置 --> Bean ...