UCOSII消息队列
消息队列介绍
消息队列是µC/OS-II中另一种通讯机制,它可以使一个任务或者中断服务子程序向另一个任务发送以指针方式定义的变量。因具体的应用有所不同,每个指针指向的数据结构变量也有所不同。为了使用µC/OS-II的消息队列功能,需要在OS_CFG.H 文件中,将OS_Q_EN常数设置为1,并且通过常数OS_MAX_QS来决定µC/OS-II支持的最多消息队列数。
OSQCreate()建立消息队列函数
1、主要作用:该函数用于建立一个消息队列。任务或中断可以通过消息队列向一个或多个任务发送消息。消息的含义是和具体的应用密切相关的。
2、函数原型:OS_EVENT *OSQCreate (void **start, INT8U size);
3、参数说明:start 是消息内存区的首地址,消息内存区是一个指针数组
size 是消息内存区的大小。
4、返回值说明:OSQCreate() 函数返回一个指向消息队列控制块的指针。如果没有空闲的控制块,OSQCreate() 函数返回空指针
5、函数主体在os_q.c中
OSQPend()任务等待消息函数
1、主要作用: 该函数用于任务等待消息。消息通过中断或任务发送给需要的任务。消息是一个指针变量,在不同的应用中消息的具体含义不同。如果调用 OSQPend() 函数时队列中已经存在消息,那么该消息被返回给 OSQPend() 函数的调用者,该消息同时从队列中清除。如果调用 OSQPend() 函数时队列中没有消息,OSQPend() 函数挂起调用任务直到得到消息或超出定义的超时时间。如果同时有多个任务等待同一个消息,μC/OS-Ⅱ默认最高优先级的任务取得消息。一个由 OSTaskSuspend() 函数挂起的任务也可以接受消息,但这个任务将一直保持挂起状态直到通过调用 OSTaskResume() 函数恢复任务的运行。
2、函数原型:void *OSQPend (OS_EVENT *pevent, INT16U timeout, INT8U *err);
3、参数说明:pevent 是指向消息队列的指针,该指针的值在建立该队列时可以得到。(参考 OSQCreate() 函数)。 timeout 允许一个任务以指定数目的时钟节拍等待消息。超时后如果还没有得到消息则恢复成就绪状态。如果该值设置成零则表示任务将持续地等待消息,最大的等待时间为65535个时钟节拍。这个时间长度并不是非常严格的,可能存在一个时钟节拍的误差。
err 是指向包含错误码的变量的指针。OSQPend() 函数返回的错误码可能为下述几种:
- OS_NO_ERR :消息被正确地接受。
- OS_TIMEOUT :消息没有在指定的时钟周期数内接收到消息。
- OS_ERR_PEND_ISR :从中断调用该函数。虽然规定了不允许从中断中调用该函数,但μC/OS-Ⅱ仍然包含了检测这种情况的功能。
- OS_ERR_EVENT_TYPE :pevent 不是指向消息队列的指针。
4、返回值说明:OSQPend() 函数返回取得的消息并将 *err 置为 OS_NO_ERR。如果没有在指定数目的时钟节拍内接受到消息,OSQPend() 函数返回空指针并将 *err 设置为 OS_TIMEOUT。
5、函数主体在os_q.c中
显示CNT1234.。。。。
UCOSII消息队列相关推荐
- stm32 ucosii消息队列 串口_正点原子STM32F407探索者开发板资料连载第六十三章 UCOSII 实验...
1)实验平台:alientek 阿波罗 STM32F767 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 http://weix ...
- ucosii消息队列使用
ucosii消息队列简介 ucosii的消息队列源码定义在os_q.c文件:接口全部声明在ucos_ii.h,总共有如下接口: void *OSQAccept(OS_EVENT *pevent,INT ...
- ucosII 消息队列 应用总结
概念 消息队列实际上就是邮箱阵列. 任务和中断都可以将一则消息放入队列中,任务可以从消息队列中获取消息. 先进入队列的消息先传给任务(FIFO). 每个消息队列有一张等待消息任务的等待 ...
- stm32 ucosii消息队列 串口_STM32F1的UART4串口配置
注意是UART4,不是USART4 在stm32中UART和USART是不相同的 USART是通用同步/异步串行接收/发送器 UART是通用异步收发传输器 简单区分同步和异步就是看通信时需不需要对外提 ...
- ucosii事件控制块------消息邮箱与消息队列
UCOSII 使用叫做事件控制块(ECB)的数据结构来描述诸如信号量.邮箱(消息邮箱)和消息队列这些事件 #define OS_EVENT_EN (((OS_Q_EN > 0u) &&a ...
- ucosii中消息队列、消息邮箱、信号量的区别
1.用信号量进行行为同步时,只能提供同步的时刻信息,不能提供内容信息.若被控制方要求得到控制方的内容信息时,可以使用消息邮箱或消息队列. 2.但由于消息邮箱里只能存放一条消息,所以使用消息邮箱进行任务 ...
- FreeRTOS — 消息队列
以下内容转载自安富莱电子:http://forum.armfly.com/forum.php FreeRTOS 的一个重要的通信机制----消息队列,消息队列在实际项目中应用较多. 1.消息队列 1. ...
- uCos中的邮箱和消息队列
文章目录 1. 背景 2. 直接通信与间接通信 3. 消息机制 4. 消息队列 5. ucos-ii中实现 5.1. 任务创建 5.2. 发送消息 5.3. 等待消息 1. 背景 前段时间老师上课讲到 ...
- 51 rtos系统 : MCUsystem 介绍 -- 基于消息队列
一个基于消息循环的51操作系统,这个有点象VC的风格,大家看McuSystem.rar 看,这个不错的. ReadMe.txt 默认路径: D:\MCU51\ Version:MS1.01-2003. ...
最新文章
- 基数排序(c/c++)
- Java8新特性之函数式接口
- jquery easyui combobox设置默认选中第一项
- 一篇文章搞定面试中的二叉树
- SpringBoot 如何测试打包部署
- 引领架构创新之路第八届系统架构师大会撼世来袭
- c++中的堆(优先级队列 priority_queue)
- 假如在1996年,微软、IBM、苹果你会投资谁?
- springboot整合富文本编辑器
- 阿里矢量图iconfont的两种使用方法
- iOS经典讲解之Socket使用教程
- 小米怎么和计算机连接网络连接网络,小米网络音响怎么连接电脑
- 煮酒探西游 吴闲云全面解读西游记
- HTTP Basic 认证
- 7个实用有效的shopify运营策略,跨境电商卖家必知
- HCIP第十六天(VLAN IF接口,STP生成树协议,BPDU的配置)
- excel切片器_如何快速做出酷炫的Excel动态图表?
- Google Earth Engine(GEE)农作物种植结构提取
- 多档电位器换挡不准确问题
- gitlab 企业级私有仓库搭建