UCOS-III 事件

事件设置OSFlagPost

1.满足条件调用OS_FlagPost()

...1.按要求将事件置一或是清零

...1.2获取等待事件任务

......1.2.1如果当前没有任务在等待事件,置位后直接退出即可

......1.2.2如果当前有任务在等待事件,遍历等待列表的所有任务

.........1.2.2.1 要求任务等待的标志位都置 1且为1,OS_FlagTaskRdy()函数让该任务恢复为就绪态,准备运行

.........1.2.2.2 要求任务等待的标志位有任意位置1且有标志位为1, OS_FlagTaskRdy()函数让该任务恢复为就绪态,准备运行

.........1.2.2.2 要求任务等待的标志位都清0与只要一位为0也一样。

 

等待指定事件的函数 OSFlagPend

1.判断标志位匹配后是否取反

2.从选项中提取对标志位的要求

...2.1要求所有标志位均要置 1  

......2.1.1匹配,按要求是否将事件的标志取反并保存让任务脱离等待的标志值   

......2.1.1不匹配,不堵塞任务返回结果;堵塞任务,调用 OS_FlagBlock()函数阻塞当前任务,在阻塞中继续等待任务需要的事件    

......2.2要求所有标志位有1,要求所有标志位均清零或有0即可与2.1一样。

3.任务调度

4.此时要么是任务获取到对应的事件了要么任务还没获取到事件

...4.1未等到对应事件,返回错误

...4.2 等待到事件,根据参数是否取反触发事件的标志位  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值