uC/OS-II事件控制块2

事件标志组管理

事件标志组由2部分组成:  (1)  用来保存当前事件组中各事件状态的一些标志位;(2)等待这些标志位置位或清除的任务列表。  

与前面的信号量、互斥型信号量一样,也需要通过OS_CFG.H中的事件标志组控制开关量的选择如OS_FLAG_EN 来使用或禁止事件标志组。

900 深入事件标志组

当一个任务开始等待某些事件标志位时,就建立一个OS_FLAG_NODE数据结构。当这些等待的事件标志位发生以后,这个数据结构就会被删除。换句话说:当调用OSFlagPend()时,建立OS_FLAG_NODE.

901 建立一个事件标志组 OSFlagCreate()

902 删除一个事件标志组 OSFlagDel()

903 等待事件标志组的事件标志位  OSFlagPend()

904 置位或清0事件标志组中的事件标志  OSFlagPost()

905 无等待地获得事件标志组中的事件标志 OSFlagAccept()

这个函数和OSFlagPend()非常相似,不同仅在于:如果等待的事件标志没有发生,那么该函数并不停止任务的运行以等待事件标志 ,而是简单的返回一个出错代码。 这个函数可以在中断服务子程序中调用。

906 查询事件标志组的状态 OSFlagQuery()

 

                                       消息邮箱管理

消息邮箱是UCOSII的另一种通信机制,可以使一个任务或中断服务程序向另一个任务发送一个指针型变量。该指针指向一个包含了“消息”的特定数据结构。

与前面的信号量、互斥型信号量、事件标志组一样,也需要通过OS_CFG.H文件中配置的常数值来确定是否编译该函数。

应用程序可以使用任意多个邮箱,其最大数目由OS_CFG.H文件中配置常数OS_MAX_ENVENTS设定。

1000 建立一个邮箱  OSMboxCreate()

通过调用用上边的函数建立一个邮箱,并且需要定义指针的初始值。

1001 删除一个邮箱  OSMboxDel()

1002 等待邮箱中的消息 OSMboxPend()

1003 向邮箱发送一则消息 OSMboxPost()

1004 向邮箱发送一则消息 OSMboxPostOpt()

  它可以完全替代原有的OSMboxPost(),另外,该函数可以向等待邮箱的所有任务发送消息(广播)。

 

1005 无等待地从邮箱中得到一则消息  OSMboxAccpet()

这个函数的另一用途是: 清空邮箱中现有的内容。

1006 查询一个邮箱的状态   OSMboxQuery()

1007 用邮箱作为二值信号量

一个邮箱可以被用作二值信号量,首先,在初始化时,将邮箱设置为一个非空指针,这样,一个任务可以调用OSMboxPend()函数请求一个信号量,然后通过调用OSMboxPost()函数释放一个信号量。

1008 用邮箱实现延时,而不使用 OSTimeDly()

邮箱的等待超时功能可以用来模仿OSTimeDly()函数的延时,如果在指定时间段TIMEOUT内没有消息到来,函数继续运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值