UCOS-III 事件

mac2024-11-16  8

事件设置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 等待到事件,根据参数是否取反触发事件的标志位  

最新回复(0)