uCOS-II邮箱和消息队列

本文详细介绍了uCOS-II操作系统中邮箱和消息队列的原理及应用,包括它们在任务间通信的作用,数据结构,以及创建、发送和接收消息的方法。通过举例说明了如何在嵌入式系统中利用这两个机制实现错误监控和处理功能。
摘要由CSDN通过智能技术生成
 

1、 uCOS-II邮箱和消息队列
          邮箱和消息队列是uCOS-II中任务间的通讯机制,它可以使一个任务或者中断服务子程序向另一个任务发送以指针方式定义的变量。因具体的应用有所不同,每个指针指向的数据结构变量也有所不同。两者都基于事件控制块OS_EVENT。与邮箱相比,消息队列在OS_EVENT基础上加了个循环队列,可以存放多个消息,而邮箱只能存放一个消息。消息队列可以看成是多个邮箱的组合。因此,两者除了创建时有些差别外,其他的操作都很相似。

1.1、 uCOS-II邮箱
           在事件控制块OS_EVENT中有一个域OSEventPtr,这个域是一个用来存放消息的指针。由于邮箱是由操作系统维护的,因此使用指针可以避免消息的复制,提供操作系统效率。uCOS-II中对邮箱有五种操作:OSMboxCreate(),OSMboxPend() , OSMboxPost(),OSMboxAccept()和OSMboxQuery()。其中OSMboxAccept()是无等待的接受一个消息。在创建一个邮箱时,一般初始化为空邮箱,但是也可以让邮箱一开始就包含一条消息。如果该邮箱用于通知某个事件的发生,那么就应该初始化为空邮箱;如果用于共享某些资源,那么就应该让其包含一条消息。

1.2、 uCOS-II消息队列
           与邮箱不同,当事件控制块OS_EVENT被用于消息队列时,域OSEventPtr指向一个循环队列的队列控制块(OS_Q)而不是指向一个消息。循环队列由队列控制块(OS_Q)进行维护,该数据结构详细信息如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值