侧边栏壁纸
博主头像
thinkTV博主等级

喜爱动漫的二刺螈一枚,摩托车云爱好者(快要有车了)。 懂一点技术的在读生物医学工程研究生( •̀ ω •́ )✧,多多指教。

  • 累计撰写 127 篇文章
  • 累计创建 17 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

UCOSIII事件标志

thinkTV
2023-07-25 / 0 评论 / 0 点赞 / 195 阅读 / 399 字 / 正在检测是否收录...

1. 事件标志简介

事件标志:事件标志是一个用于指示事件是否发生的比特位。

事件标志组由多个事件标志组成的, 可以简单的理解事件标志组,就是一个整数。

1.1 事件标志组的特点:

  • 它的每一个位表示一个事件(最多可以表示32个事件标志)
  • 每一位事件的含义,由用户自己决定(这些位的值为1:表示事件发生了;值为0:表示事件未发生)
  • 任意任务或中断都可以写这些位,但读这些位只能由任务
  • 可以等待某一位成立,或者等待多位同时成立

1.2 事件标志组逻辑关系图

图片-1690253547115

  • 可以等待某一位成立,或者等待多位同时成立
  • 任意任务或中断都可以写这些位,但读这些位只能由任务
  • 支持读取阻塞

2. 事件标志相关API函数

使用事件标志组流程:创建事件标志组 -> 设置事件标志 -> 获取事件标志

图片-1690253612702

2.1 创建一个事件标志组

void  OSFlagCreate ( OS_FLAG_GRP*	p_grp,                   
				 CPU_CHAR*	p_name,                    
				 OS_FLAGS   	flags,                    
				 OS_ERR*		p_err )

图片-1690253646257

2.2 设置事件标志组中的事件

OS_FLAGS OSFlagPost ( OS_FLAG_GRP*	p_grp,                      
				  OS_FLAGS     flags,                      
				  OS_OPT      	opt,                      
				  OS_ERR*		p_err )

图片-1690253675369

图片-1690253678326

2.3 等待事件标志组中的事件

OS_FLAGS OSFlagPend( OS_FLAG_GRP* 	p_grp,
				 OS_FLAGS 	flags,
				 OS_TICK 		timeout,
				 OS_OPT 		opt,
				 CPU_TS* 		p_ts,
				 OS_ERR* 		p_err ) 

图片-1690253739691

图片-1690253743410

图片-1690253764648

0

评论区