FreeRTOS - 消息队列
一.消息队列的概念及应用
消息队列(queue):可以在任务与任务间、中断和任务间传递消息,实现任务接收来自其他任务或中断的不固定的消息

1.1任务需求
1、使用消息队列检测串口输入
2、通过串口发送字符串openled1,openled2,openled3,分别打开板载led1,led2,led3
3、通过串口发送字符串closeled1,closeled2,closeled3,分别关闭板载led1,led2,led3
1.2API
函数原型 | #include “FreeRTOS.h” #include “queue.h” QueueHandle_t xQueueCreate( ①UBaseType_t uxQueueLength, ②UBaseType_t uxItemSize ); |
功能概述 | 创建一个消息队列,并返回消息队列句柄 |
参数 | ①:队列一次可容纳消息的最大长度 ②:队列中每个消息体大小 |
返回值 | NULL:创建失败 Any other value :创建成功,返回消息队列句柄 |
注意事项 | 队列可以用于任务与任务通信,也是用于中断与任务通信 可在调度器开启之前,创建消息队列 |
函数原型 | #include “FreeRTOS.h” #include “queue.h” BaseType_t xQueueSend/xQueueSendToFront/xQueueSendToBack( ① QueueHandle_t xQueue, ②const void * pvItemToQueue, ③ TickType_t xTicksToWait ); |
功能概述 | 在任务中往队列中传入消息 xQueueSend 等价于xQueueSendToBack 入到队尾 xQueueSendToFront 入到队头 |
参数 | ①:消息队列句柄 ②:要发送的消息的地址 ③:阻塞等待时间 |
返回值 | pdPASS:发送成功 errQUEUE_FULL:队列已经满,发送失败 |
注意事项 | None |
函数原型 | #include “FreeRTOS.h” #include “queue.h” BaseType_t xQueueSendFromISR/xQueueSendToFrontFromISR/xQueueSendToBackFromISR ( ① QueueHandle_t xQueue, ②const void * pvItemToQueue, ③ BaseType_t *pxHigherPriorityTaskWoken); |
功能概述 | 在中断中往队列中传入消息 xQueueSendFromISR 等价于xQueueSendToBackFromISR 入到队尾 xQueueSendToFrontFromISR 入到队头 |
参数 | ①:消息队列句柄 ②:要发送的消息的地址 ③:NULL |
返回值 | pdTRUE:发送成功 errQUEUE_FULL:队列已经满,发送失败 |
注意事项 | 调用此函数,会触发上下文切换(当前被中断的任务优先级低于解除阻塞的任务) 在启动调度器之前不能调用此函数 |
函数原型 | #include “FreeRTOS.h” #include “queue.h” BaseType_t xQueueReceive( ①QueueHandle_t xQueue, ②void *pvBuffer, ③TickType_t xTicksToWait ); |
功能概述 | 在任务中读取消息队列消息 |
参数 | ①:消息队列句柄 ②:接收消息的缓冲区 ③:阻塞等待时间 |
返回值 | pdPASS:创建失败 errQUEUE_EMPTY:消息队列为空 |
注意事项 | None |
函数原型 | #include “FreeRTOS.h” #include “queue.h” BaseType_t xQueueReceiveFromISR( ① QueueHandle_t xQueue, ② void *pvBuffer, ③BaseType_t *pxHigherPriorityTaskWoken ); |
功能概述 | 在中断中读取消息队列消息 |
参数 | ①:消息队列句柄 ②:接收消息的缓冲区 ③:NULL |
返回值 | pdPASS:创建失败 pdFAIL:消息队列为空 |
注意事项 | 调用此函数,会触发上下文切换(当前被中断的任务优先级低于解除阻塞的任务) 在启动调度器之前不能调用此函数 |
二.函数应用
相关文章:
FreeRTOS - 消息队列
一.消息队列的概念及应用消息队列(queue):可以在任务与任务间、中断和任务间传递消息,实现任务接收来自其他任务或中断的不固定的消息1.1任务需求1、使用消息队列检测串口输入2、通过串口发送字符串openled1,openled2&…...
怎样正确做 Web 应用的压力测试?
环境 首先环境是非常重要的,需要尽可能跟生产环境靠近。 比方说,使用同样的nginx版本,php的话需要启用fpm,zend-optimizer等等,参数配置也最好跟生产环境保持一致。 当然,php的版本更加需要保持一致&#x…...
php mysql大学生求职招聘资源信息网zkfdzkf67a8
1.系统登录:系统登录是用户访问系统的路口,设计了系统登录界面,包括用户名、密码和验证码,然后对登录进来的用户判断身份信息,判断是管理员用户还是普通用户。 2.系统用户管理:不管是…...
2023上海市“星光计划”职业院校技能大赛 网络安全竞赛试题任务书
2023上海市“星光计划”职业院校技能大赛 网络安全竞赛试题任务书 A模块基础设施设置/安全加固(200分) 一、项目和任务描述: 假定你是某企业的网络安全工程师,对于企业的服务器系统,根据任务要求确保各服务正常运行&…...
Spring事务源码:创建代理类
参考文章: 《Spring事务源码解析之tx:annotation-driven标签解析》 《Spring 源码解析—事务执行》 参考资料: 《Spring AOP源码:开启注解读取》 《Spring AOP源码2:查找增强器》 《Spring AOP源码3:实现代理》 …...
java14 使用增强的模式匹配切换表达式
野旷天低树,江清月近人。——唐代杜甫《月夜忆舍弟》 使用增强的模式匹配切换表达式(Switch Expressions with Enhanced Pattern Matching) Java 14中引入的“Switch Expressions with Enhanced Pattern Matching”这个功能。 这个功能可以让我们在使用switch cas…...
python【正则表达式】
正则表达式 1.正则的作用 正则表达式式一种可以让复杂的字符串变得简单的工具。 写正则表达式的时候就是用正则符号来描述字符串规则。 2.正则语法 需要导入模块 from re import fullmatch, findall, search2.1.第一类:匹配类符号 1)普通字符—在…...
Ubuntu常见系统问题解决方式
Ubuntu常见系统问题解决方式Ubuntu每次开机后提示检测到系统程序出现问题的解决方法Ubuntu循环登陆问题问题描述原因解决方法文件夹打开缓慢Ubuntu启动后GUI界面卡住不动Ubuntu18.04使用过程中常遇到的问题Ubuntu每次开机后提示检测到系统程序出现问题的解决方法 首先…...
C/C++中的虚拟内存
文章目录一、虚拟内存二、C中的虚拟内存分配模型三、C中的虚拟内存分配模型四、堆区和栈区的区别一、虚拟内存 虚拟内存是一种实现在计算机软硬件之间的内存管理技术,它将程序使用到的内存地址(虚拟地址)映射到计算机内存中的物理地址&#…...
Qt C++与Python混合编程:补充错误
在提示中,需要引用Python.h,出现错误。 1、找不到Python.h 如果是pro工程,需要在里面配置; INCLUDEPATH /Users/xinnianwang/opt/anaconda3/include LIBS /Users/xinnianwang/opt/anaconda3/lib 如果是CMakeLists.txt需要配…...
2023-04-01:当Go语言遇见FFmpeg视频解码器,使用Go语言改写decode_video.c文件,提升视频解码效率与开发体验。
2023-04-01:当Go语言遇见FFmpeg视频解码器,使用Go语言改写decode_video.c文件,提升视频解码效率与开发体验。 答案2023-04-01: 步骤如下: 1.导入必要的依赖库,包括 fmt、os、unsafe 和其它 FFmpeg 库相关…...
Solidity 学习笔记
主要参考网上资料学习,个人学习笔记有删改,参考出处在文末列出。 0 基础 IDE: remixType Bool: bool public _bool true; 默认false;整型:int、uint、uint256,默认0;地址类型:address,分为 payable 和普…...
ThreadLocal原理
关键点总结: ThreadLocal更像是对其他类型变量的一层包装,通过ThreadLocal的包装使得该变量可以在线程之间隔离和当前线程全局共享。在Thread中有一个threadLocals变量,类型为ThreadLocal.ThreadLocalMap,ThreadLocalMap中key是Th…...
串操作指令详解 MOVS,LODS,STOS,CMPS,SCAS,REP
指令包括:MOVS,LODS,STOS,CMPS,SCAS,REP 串的概念:串是连续存放再内存中的字节块或字块。每个串有一个起始地址和长度, 待操作的数据串称为源串,目的地址称为目标串 目录…...
Java实现判断素数
1 问题 判断101-200之间有多少个素数,并输出所有素数。 2 方法 package homework04; public class Test05 { public static void main(String[] args) { for (int i 101; i < 201; i) { boolean flag true; for (int j 2; j…...
PHP初级教程------------------(2)
目录 运算符 赋值运算符 算术运算符 比较运算符 逻辑运算符 连接运算符 错误抑制符 三目运算符 自操作运算符 编辑 计算机码 位运算符 运算符优先级 流程控制 控制分类 顺序结构 分支结构 If分支 Switch分支 循环结构 For循环 while循环 do-while循环 循环控制 …...
【SQL开发实战技巧】系列(三十五):数仓报表场景☞根据条件返回不同列的数据以及Left /Full Join注意事项
系列文章目录 【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧…...
springBoot自动配置过程介绍
什么是自动配置 以前整合spring mybatis框架时候,需要加很多的bean, 比如说sqlSessionFactory等等 现在springboot帮我们干了,我们只需要引入对应的starter就可以了。 springBoot可以帮我们配置好了一些bean. 如mysql, mogondb相关操作等等ÿ…...
PostgreSQL最后的救命稻草 — pg_resetwal
pg_resetwal— 重置 PostgreSQL 数据库集群的预写日志和其他控制信息 适用版本:PostgreSQL 12/13/14/15语法 pg_resetwal [ -f | --force ] [ -n | --dry-run ] [option...] [ -D | --pgdata ]datadir描述pg_resetwal清除预写日志 WAL,并可选地重置pg_c…...
彻底关闭Windows更新
一、关闭Windows Update服务 1、按“Windows R”键,打开运行对话框,并输入“services.msc”,然后再单击“确定”。 2、在弹出的服务窗口中,找到“Windows Update”选项并双击打开它。 3、在弹出的“Windows Update的属性”对话框…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
