RTX5 | 消息队列01 - 创建消息队列
文章目录
- 一、前言
- 二、实验的目的
- 三、API
- 3.1、osMessageQueueId_t
- 3.2、osMessageQueueAttr_t
- 3.3、osMessageQueueNew
- 四、代码
- 4.1、main.h
- 4.2、main.c
- 五、RTX RTOS调试程序
一、前言
在RTOS里,消息队列与线程一样都是非常重要的功能。在实际项目上,线程与消息队列肯定会使用。最常用的案例是串口中断回调函数将收到的字符放入消息队列,待串口中断回调函数结束后,线程立即从该消息队列里获取字符,接着按照通讯协议解释字符。
中断回调函数必须遵循快进快出的原则。所谓快进快出就是中断回调函数里的代码量需尽可能少,所以最好不要在中断回调函数里运行解释通讯协议的代码。此时,消息队列很好地解决了快进快出的问题。因为中断回调函数里只需运行将消息放入消息队列的代码,解析通讯协议的代码放在读取消息队列的线程里。
STM32工程:
链接:https://pan.baidu.com/s/1F7AXUObbZzQ7Dq0pJjM9oA
提取码:5dzr
二、实验的目的
创建一个消息队列。
三、API
3.1、osMessageQueueId_t
osMessageQueueId_t msgQueue_ID_CAN1; //用于CAN1的消息队列ID
3.2、osMessageQueueAttr_t
/* 动态堆栈方式 */
/* CAN1消息队列属性 */
const osMessageQueueAttr_t msgQueue_CAN1_Attr =
{.name = "Message_Queue_CAN1", /* 消息队列名字 *//* 其他都用默认 */
};
3.3、osMessageQueueNew
msgQueue_ID_CAN1 = osMessageQueueNew(MQ_SIZE, /* 消息队列里存放消息的总数 */sizeof(put_Uart), /* 消息的大小(单位: Byte)*/&msgQueue_CAN1_Attr /* 消息队列的属性 */);
四、代码
4.1、main.h
4.2、main.c
使用动态堆栈的方式创建消息队列,只需从属性里配置消息队列的名字,其他均为默认值即可。
五、RTX RTOS调试程序
Keil提供的RTX RTOS功能,非常方便地调试RTX5程序。从下图看到,成功创建第一个消息队列。
RTX5 | 消息队列01 - 创建消息队列相关推荐
- 运用String.format格式化方法和消息枚举类型创建消息模板
package com.han.StringFormat;import java.util.Date;/*** 运用String.format格式化方法和消息枚举类型创建消息模板* * @author ...
- RTX5 | 软件定时器01 - 创建一个软件定时器(单次运行)
文章目录 一.前言 二.实验目的 三.API 3.1.osTimerNew 3.2.osTimerStart 四.代码 4.1.main.h 4.2.main.c 五.Event Recorder调试 ...
- RTX5 | 线程管理01 - 创建线程(静态堆栈方式)
文章目录 一.前言 二.代码 2.1.main.h 2.1.main.c 三.DEBUG 四.细节补充 4.1.使用静态堆栈方式创建的线程只占用一点点RTX5上的内存 4.2.通过RTX RTOS窗口 ...
- java 消息队列服务_ActiveMQ 消息队列服务
1 ActiveMQ简介 1.1 ActiveMQ是什么 ActiveMQ是一个消息队列应用服务器(推送服务器).支持JMS规范. 1.1.1 JMS概述 全称:Java Message Servic ...
- ABAP MESSAGE消息类的创建以及调用方法。
消息类的类型一共分为六种,分别如下表所示 TYPE 描述 使用效果 是否终止事务 A(Abortion) 终止 在PUPUP画面显示 是 I(Information) 信息 在PUPUP画面显示 否 ...
- java栈和队列_栈和队列的面试题Java
栈和队列: 面试的时候,栈和队列经常会成对出现来考察.本文包含栈和队列的如下考试内容: (1)栈的创建 (2)队列的创建 (3)两个栈实现一个队列 (4)两个队列实现一个栈 (5)设计含最小函数min ...
- RocketMQ3.2.2生产者发送消息自动创建Topic队列数无法超过4个
问题现象 RocketMQ3.2.2版本,测试时尝试发送消息时自动创建Topic,设置了队列数量为8: producer.setDefaultTopicQueueNums(8); 同时设置broker ...
- 消息队列控制灯代码_代码实现RabbitMQ死信队列的创建
前言: 之前有写过死信队列的使用场景以及通过管控台创建死信.这次就通过代码实现死信队列的创建,同时也分享一下RabbitMQ封装的类. 准备: 1. 先准备一个死信队列(最后用来消费)的参 ...
- 【重难点】【RabbitMQ 01】消息队列的作用、主流的消息队列、RabbitMQ 基于什么传输消息、RabbitMQ 模型架构、死信队列和延迟队列
[重难点][RabbitMQ 01]消息队列的作用.主流的消息队列.RabbitMQ 基于什么传输消息.RabbitMQ 模型架构.死信队列和延迟队列 文章目录 [重难点][RabbitMQ 01]消 ...
最新文章
- 杭州网络推广带大家了解404页面的作用以及对网站优化的优势
- Android开发第二次课 布局方式
- Spring期末试题
- sqlserver 2014 删除主键约束
- [react] 说说你对reader的context的理解
- STM32学习及应用笔记一:SysTick定时器学习及应用
- Djang(在前端仿DjangoAdmin同样效果)
- bzoj 1078 [SCOI2008]斜堆 —— 斜堆
- Go基础:函数与方法的区别
- 使用httpclient下载 页面、图片
- NTC热敏电阻应用-测温
- pert计算公式期望值_计划评审技术(PERT)求工期、标准差、方差以及概率
- 阿里云思维导图系列(一)开篇
- VUE + 微信分享
- 获取和设置默认打印机
- 【重点】心田花开:三年级教材知识点汇总
- 数仓、数据湖、湖仓一体、数据网格的探索与研究
- oracle计算sql运行时间,如何计算正在运行的SQL已经执行的时间?
- 约瑟夫·寇德卡:成为一个吉普赛人
- 关于NI PXI机箱及板卡的路由说明
热门文章
- Bounding-box_regression详解
- windows7+tomcat7+nginx1.11.3 +memcached
- SVN 服务器端的搭建-及多仓库管理-OK
- 原创-linux下编译器vi、vim的使用技巧
- Oracle审计功能
- 地产遇冷之际,行业竞争加剧,房企如何走出营销低谷,先声夺人?
- [视频]Google Chrome背后的故事
- 对USB驱动程序的理解(1)
- BATJ一线大公司需要什么样的前端
- 沈阳建筑大学c语言真题,沈阳建筑大学C语言复习资料.doc