加载中…
个人资料
硬汉嵌入式
硬汉嵌入式
  • 博客等级:
  • 博客积分:0
  • 博客访问:9,393
  • 关注人气:355
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

第七篇:uCOS-II 消息邮箱

(2012-02-19 00:28:17)
标签:

ucos-ii

ucgui

分类: uCGUI/UCOS-II

1.消息邮箱

  说明:消息邮箱主要用于两个任务间消息传递,传递的不是数据,是数据的地址

  下面分多种情况进行讨论

(1)OSMboxPost先执行的话,会将数据的地址送到

    pevent->OSEventPtr = pmsg; 然后通过OSMboxPend会及时的得到消息,并将

    其清零。

(2)OSMboxPend(XX, 0,XX)任务将被永久的挂起直到收到OSMboxPost发送的数据

(3)OSMboxPend(XX, >0,XX)任务将被延迟相应的时间

     a)如果在规定的时间里面收到消息的话,任务将通过OSTCBCur->OSTCBMsg;

        传递消息并继续的执行。特别注意,这里使用 OSTCBCur->OSTCBMsg

        而不是pevent->OSEventPtr,主要是因为在多任务消息传递的时候,

        可以将消息直接的赋值给各个任务的OSTCBCur->OSTCBMsg;

    b)如果任务超时的话,将通过滴答中断里面的函数将任务重新加入到就绪列表

       使得任务得以继续的执行,并通过OSMboxPend函数将任务从事件等待列表里

      删除

(3)OSMboxPost主要用于两个任务的消息传递,如果Post多个任务的话,会Post多

    具体问题还得具体分析。

http://s14/middle/98ee3a934b93f8c2870fd&690

2.消息邮箱的创建,申请,释放

//创建一个邮箱(MBOX), 用于Kbd任务和UserIF任务之间的通信

AppUserIFMbox = OSMboxCreate((void *)0);

http://s11/middle/98ee3a934b93f8c4a63ca&690 

http://s2/middle/98ee3a934b93f8c5343a1&690

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有