队列背景队列简介队列结构体队列创建向队列发送消息队列上锁和解锁从队列读取消息 背景实际的应用中,常常会遇到一个任务或者中断服务需要和另外一个任务进行“沟通交流”,这个“沟通交流”的过程其实就是消息传递的过程。为此,FreeRTOS 提供了一个叫做“队列”的机制来完成任务与任务、任务与中断之间的消息传递。本文主要结合队列源码分析了创建、发送到接收的过程。队列简介列队入队和出队的过程可以用下面图演示
转载
2024-03-25 13:48:01
155阅读
队列简介:注意,队列长度并不是每个队列的字节数,而是能存多少条数据。如我们创建一个队列,每条消息最大10字节,队列可以保存4条消息,那么队列的长度为4。队列的功能:1 数据拷贝为什么一定要使用数据拷贝?考虑以下情况,我们在任务中创建了一个局部变量,而局部变量可能随时会被删掉,此时如果使用引用传递(指针),数据可能就会出现问题;另外,如果采用指针,则在这个变量被队列引用之前,变量值是不能改变的,这就
转载
2024-05-17 09:22:15
540阅读
FreeRTOS 消息队列本章节为大家讲解 FreeRTOS 的一个重要的通信机制----消息队列,初学者要熟练掌握,因为消息队 列在实际项目中应用较多。 消息队列的概念及其作用 消息队列就是通过 RTOS 内核提供的服务,任务或中断服务子程序可以将一个消息(注意,FreeRTOS 消息队列传递的是实际数据,并不是数据地址,RTX,uCOS-II 和 uCOS-III 是传递的地址)放入到队列。
FreeRTOS-队列0+ 在FreeRTOS中,队列是为了任务与任务或任务与中断之间通信而专门准备的,它是任务与任务、任务与中断间传递消息的重要手段,所以我们也称之为消息队列。并且队列也是后面章节中信号量实现的基础,所以有必要深入了解队列及其源码。我们在前面讲述过FreeRTOS中的列表和列表项,我们发现FreeRTOS中的列表更像是我们所说的数据结构中的链表,FreeRTOS中所使用的的链表为
转载
2024-05-16 06:04:00
599阅读
目录前言一、队列简介1.1数据存储1.2多任务访问1.3出队阻塞1.4入队阻塞1.5队列操作过程图示1.5.1创建队列1.5.2向队列发送第一个消息1.5.3向队列发送第二个消息1.5.4从队列中读取消息二、队列结构体三、队列创建3.1创建函数3.2函数xQueueCreateStatic()3.3函数xQueueCreate()3.4函数xQueueGenericCreateStatic()3
背景我们假定现在创建了3个工作线程,这3个线程都需要通过串口输出日志或内容。很简单的认为,我们可以做到各个任务连续输出自己线程的内容,实际上不是的,这涉及到了多线程原理,有时间跟大家说说,或者大家可以去了解了解。 在这篇文章只涉及题目提出的问题解决方法。准备工作STM32 Cube系列软件开发工具一块可以使用的STM32单片机一个ST LINK 下载器 和 一个 USB 转 TTL一个可以正常工作
转载
2024-04-23 20:01:25
295阅读
在没有使用队列之前,任务之间的通信是通过共享全局变量或者传递指针参数来进行消息传递,但是全局变量一旦使用多了就会占用很大的资源,在操作系统中,这就会涉及到资源管理的问题。操作系统需要管理有限的资源,进而产生了队列,解决了任务与任务、中断与中断、任务与中断的通信问题,任务与任务、任务与中断之间要交流的数据保存在队列中,这就叫做
转载
2024-04-02 14:50:53
374阅读
FREERTOS学习笔记三-消息队列1.实验内容 实验二内容:创建两个动态任务,任务一控制LED的闪烁,任务二用于检测按键。当按键KEY0按下时,任务一被挂起;当按键KEY1被按下时,任务一被取消挂起。 实验三是在实验二的基础上进行修改,增加一个消息队列和两个任务进程;任务二按键检测,当按键被按下时,会发生消息;任务三和任务四负责接收消息。2.CubeMX的配置1.1添加两个优先级相同的任务1.2
转载
2024-02-16 11:19:55
256阅读
FreeRTOS消息队列 传递结构体指针和结构体异同1 消息队列传递结构体指针和结构体异同2 使用队列传递复合数据类型3 利用队列传递数据的指针(处理速度更快)3.1 指针指向的内存空间所有权必须明确3.2 指针指向的内存空间必须有效传递结构体的指针传递结构体本身4 传递结构体指针和结构体本身的异同5 验证5.1 结构体传值模式5.2 传递结构体指针模式5.3 memcpy 函数5.4 mems
转载
2024-04-30 19:11:07
283阅读
功能及区别列表消息队列(需要传递消息时使用) 在任务与任务间、 中断和任务间传递信息,可以数据传输事件标志组(多个事件同步,不需要传递消息时使用) 实现任务与任务间、 中断和任务间的同步,无数据传输。可实现一对多、多对多的同步, 可选择是 “ 逻辑或 ” 触发还 是 “ 逻辑与 ”触发。即 一 个任务可以等待多个事件的发生。信号量(单个事件同步,不需要传递消息时使用)#二值信号量类似一个标志位。仅
转载
2024-07-03 08:20:07
151阅读
目录队列简介队列结构体队列操作队列实验 在实际的应用中,常常会遇到一个任务或者中断服务需要和另一个任务进行“沟通交流”,这个“沟通交流”的过程其实就是消息传递的过程。队列是为了任务与任务,任务与中断之间的通信而准备的。可以在任务与任务,任务与中断之间传递消息,队列中可以在存储有限的,大小固定的数据项目。 队列简介FreeRTOS的通信介质是队列,队列是一个先进先
转载
2024-03-19 11:34:39
177阅读
由于看到的FREERTOS的例程中关于消息队列的代码,大多数都是传递的一个字节的数值;而在实际应用中,需要传递的数据类型可以是浮点数,也可以是数组,也可以是uint16数据,所以上述链接的传递结构体指针的思路很符合我的需求。同时,使用RTOS+消息队列的处理方式,至少有以下两个优点:1、便于开发,因为各个模块之间是通过消息队列进行数据交互,没有直接耦合,无需像裸机编程一样进行全局变量的
转载
2024-04-30 19:16:45
72阅读
FreeRTOS消息队列简介队列是为了任务与任务、任务与中断之间的通信而准备的。队列可以在任务与任务、任务与中断之间传递消息。队列中可以存储有限的、大小固定的数据项目。任务与任务、任务与中断之间要交流的数据保存在队列中,叫做队列项目。队列所能保存的最大数据项目的数量叫做队列的长度。创建队列时会指定数据项目的大小和队列的长度。由于队列是用来传递消息的所以队列也叫做 消息队列。FreeRTOS中的信号
转载
2024-04-18 13:15:21
431阅读
文章目录前言一、消息队列是什么?二、消息队列的作用三、FreeRtos中消息队列API的调用函数 xQueueCreate函数 xQueueSend函数 xQueueReceive函数 xQueueSendFromISR函数 uxQueueMessagesWaiting函数 uxQueueSpacesAvailable函数 xQueuePeek函数 xQueueOverwrite四、基于e
转载
2024-09-25 16:24:17
329阅读
队列中传输大数据(一个包)或大小可变的数据传输大数据传输不同类型和长度的数据从多个队列中获取数据队列集合xQueueCreateSet()xQueueAddToSet()xQueueSelectFromSet()示例使用队列创建邮箱xQueueOverwrite()xQueuePeek() 队列中传输大数据(一个包)或大小可变的数据传输大数据如果存储在队列中的数据项很大,则最好将指向数据的指针存放
转载
2024-04-06 10:45:43
239阅读
FreeRTOS消息队列基于 FreeRTOS 的应用程序由一组独立的任务构成——每个任务都是具有独立权限的程序。这些独立的任务之间的通讯与同步一般都是基于操作系统提供的IPC通讯机制,而FreeRTOS 中所有的通信与同步机制都是基于队列实现的。消息队列是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传送信息,实现了任务接收来自其他任务或中断的不固定长度的消息。任务能够从队
转载
2024-08-21 09:58:19
575阅读
---
title: rtos-freertos-07-队列
EntryName : rtos-freertos-07
date: 2020-06-23 09:43:28
categories:
tags:
- ipc
- queue
- freertos
---章节概述:介绍 FreeRTOS中的任务间通讯机制:队列的使用(尽管FreeRTOS中没有进程的概念,但为了统一,我们还是以进
转载
2024-04-25 15:12:06
33阅读
文章目录前言一、什么是消息队列,有什么用1. 概念2. 作用3. 特点二、消息队列的深入原理1. 消息队列的存储结构2. 出入队列的相关操作① 入队操作:② 发送紧急消息:③ 读取队列操作:3. 关于队列的阻塞机制① 读操作的阻塞机制:② 发操作的阻塞机制:③ 注意事项:三、消息队列函数解析1. 消息队列控制块结构体① 代码② 结构体参数解释2. 消息队列创建函数 xQueueCreate()①
文章目录01 - 通信介质02 - 通信方式03 - 通信操作04 - 总结 在第一篇概念的思维导图中,任务的下一个概念就是队列,一个实际的FreeRTOS系统肯定会有多个任务,这些任务经常需要协同运作,因此必然需要通信,不止任务和任务之间,任务和中断之间也需要通信。对于通信,需要了解通信介质、通信方式和通信操作。01 - 通信介质 FreeRTOS的通信介质是队列,队列是一个先进先出的数
转载
2024-05-09 12:02:42
131阅读
什么是消息队列?假设你是一个快递员,你需要将货物从一个仓库运到另一个仓库。但是你发现自己的时间不够用,需要另外请一个人来帮忙。那么,你们之间如何进行协作呢?一种方式是直接将货物全部交给对方,但这样存在风险:对方可能会出现问题,导致货物丢失或损坏。而另一种更安全的方式是,你将货物分批发送给对方,对方再按照你的要求逐批接收货物。这种方式类似于消息队列的通信方式。在 Linux 系统中,消息队列是一种