网站大量收购闲置独家精品文档,联系QQ:2885784924
  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UCOSII实验3

第十章第十章 UCOSII 实验实验 3-消息队列消息队列信号量集和件定时器信号量集和件定时器 第十章第十章 实验实验 消息队列消息队列信号量集和件定时器信号量集和件定时器 一章,们学了 UCOSII 的信号量和邮箱的使用,本章,们将学消息队列信号量集和件 定时器的使用本章如几个部 60.1 UCOSII 消息队列信号量集和件定时器简介 60.2 硬件设计 60.3 件设计 60.4 载验证 60.1 UCOSII 消息队列信号量集和件定时器简介 一章,们介绍了信号量和邮箱的使用,本章们介绍比较复杂消息队列信号量集以件定时 器的使用 消息队列消息队列 消息队列消息队列 使用消息队列可以在任之间传递多条消息消息队列由个部组件块消息队列和消 息当把件块员 OSEventType 的值置 OS_EVENT_TYPE_Q 时,件块述的就 是一个消息队列 消息队列的数据结构如图 60.1.1 所示从图中可以看到,消息队列相当于一个共用一个任等待列 表的消息邮箱数组,件块员 OSEventPtr 指向了一个做队列块OS_Q 的结构, 结构管理了一个数组 MsgTbl[],数组中的元素都是一些指向消息的指针 图 60.1.1 消息队列的数据结构 队列块OS_Q 的结构定如 typedef struct os_q { struct os_q *OSQPtr; void **OSQStart; void **OSQEnd; void **OSQIn; void **OSQOut; INT16U OSQSize; INT16U OSQEntries; } OS_Q; 结构体中各参数的如表 60.1.1 所示 参数 说明 O止习也tr 指向一个空的队列块 O止习止iz兴 数组的长度 O止习Entr兴s 放消息指针的元素数目 O止习止tart 指向消息指针数组的起始地址 指向消息指针数组结束单元的一个单元它使得数 O止习En关 组构 了一个循的缓区 指向插入一条消息的置当它移动到O止习En关相 O止习存n 等时, 被调整到指向数组的起始单元 指向被出消息的置当它移动到O止习En关相等 O止习Out 时,被 调整到指向数组的起始单元 表 60.1.1 队列块各参数 中,可以移动的指针 OSQIn 和 OSQOut,而指针 OSQStart 和 OSQEnd 是一个志常 指针当可移动的指针 OSQIn 或 OSQOut 移动到数组尾,就是 OSQEnd 相等时,可移动 的指针将会被调整到数组的起始置OSQStart 就是说,从效果来看,指针OSQEnd OSQStart 等值于是,个由消息指针构的数组就头尾衔接起来形了一个如图 60.1.2 所示的循的队列 图 60.1.2 消息指针数组构的形数据缓区 在 UCOSII 初始化时,系统将按文件 os_cfg.h 中的配置常数OS_MAX_QS 定 OS_MAX_QS 个队列块,并用队列块中的指针 OSQPtr 将所有队列块链接链表由于时没有使 用它们,故个链表做空队列块链表 接来们看看在 UCOSII 中,消息队列相的几个函数全部列出, 1 创建消息队列函数 创建一个消息队列首先需要定一指针数组,然把各个消息数据缓区的首地址入个数组中, 然再调用函数 OSQCreate 来创建消息队列创建消息队列函数 OSQCreate 的原型OS_EVENT *OSQCreate(void**start,INT16U size) 中,start 放消息缓区指针数组的地

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档