事件标志组
简介
事件标志是一个用于指示事件是否发生的比特位,因为一个事件是否发生只有两种情况,
分别为事件发生和事件未发生,因此只需一个比特位就能够表示事件是否发生,µC/OS-III 用 1 表示事件发生,用 0 表示事件未发生。
- 事件标志组是多个事件的集合(最多可以表示32个事件标志)。
- 任意任务和中断都可以写这些位,但读只能由任务。
- 可以等待某一位成立,或者等待多位同时成立。

API函数
使用流程:创建事件标志组–>设置事件标志–>获取事件标志
1 | //创建事件标志组 |
等待事件标志组中的事件成立
1 | OS_FLAGS OSFlagPend (OS_FLAG_GRP *p_grp, //指向事件标志组结构体的指针 |
| opt | 描述 |
|---|---|
| OS_OPT_PEND_FLAG_CLR_ALL | 等待入参 flags 中所有指定的事件被清 0 |
| OS_OPT_PEND_FLAG_CLR_ANY | 等待入参 flags 中任意指定的事件被清 0 |
| OS_OPT_PEND_FLAG_SET_ALL | 等待入参 flags 中所有指定的事件被置 1 |
| OS_OPT_PEND_FLAG_SET_ANY | 等待入参 flags 中任意指定的事件被置 1 |
| 调用上面四个选项还可以搭配下面三个 | |
| OS_OPT_PEND_FLAG_CONSUME | 当等待到指定位后,清零对应位 |
| OS_OPT_PEND_BLOCKING | 标志组不满足条件时挂起任务 |
| OS_OPT_PEND_NON_BLOCKING | 标志组不满足条件时不挂起任务 |
示例
1 | OS_FLAG_GRP flag; |
评论
