微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于μC/OS-Ⅲ的多任务间邮箱机制分析与应用

基于μC/OS-Ⅲ的多任务间邮箱机制分析与应用

时间:06-14 来源:互联网 点击:



从代码可以看出,使用内核提供的邮箱服务实现任务问通信方便、简单,这也是邮箱作为任务问通信最常用手段的原因。此外,在实际应用中,通过分析邮箱的功能特点,还可以将其应用到其他场合以实现一些灵活的功能。

3 邮箱的灵活应用
3
1 用邮箱作为二值信号量
邮箱可以当作二值信号量用,邮箱中有消息表示资源可以使用,而空邮箱表示资源已经被其他资源占用。首先,在初始化时将邮箱设置为一个非空指针(eg.void*1),这样,一个任务可以调用OSMboxPend()函数请求信号量,然后通过调用OSMboxPost()函数释放信号量。若只需要二值信号量和邮箱,采用这种方法可以节省代码空间。此时,需将OS_MBOX_EN置1,而将OS_SEM_EN清0,即只用邮箱,而不是同时使用邮箱和信号量。同样,给出了一个邮箱传递二值信号量的简单示例。

3.2 邮箱实现延时,而不使用OSTimeDly()
邮箱的超时等待功能可以用作延时,模仿OS-TimeDly()函数功能。示例代码如下:


在程序执行过程中,若在指定的时间TIMEOUT内没有消息到来,则TaskC继续执行,这显然与OSTimeDly(TIMEOUT)功能类似;但是,如果TaskD在指定的时间结束之前,向邮箱发送一个dummy消息,则可以中止任务1中的延时,使TaskC提前继续执行,这与调用函数OSTimeDly Res ume()的功能一致。

4 结语
本文基于嵌入式操作系统μC/OS-Ⅲ探讨了邮箱在任务间通信中的应用方法及注意事项,分析了各邮箱函数的关系及使能/屏蔽方法,并给出示例实现2个任务的全双工通信;在此基础上,还研究了邮箱在二值信号量和延时功能中的灵活应用,并给出实例代码验证,这在嵌入式系统开发过程中有一定的参考价值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top