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