首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >UCOS-III笔记(九)事件标志组

UCOS-III笔记(九)事件标志组

作者头像
一个平凡而乐于分享的小比特
发布2026-02-02 16:04:41
发布2026-02-02 16:04:41
2160
举报

🔥作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生,研究方向无线联邦学习 🎬擅长领域:驱动开发,嵌入式软件开发,BSP开发 ❄️作者主页:一个平凡而乐于分享的小比特的个人主页 ✨收录专栏:UCOS-III,本专栏为UCOS-III学习记录 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

UCOS-III笔记(九)

事件标志组

本质:事件标志是一个用于指示事件是否发生的比特位。事件标志组由多个事件标志组成的, 可以简单的理解事件标志组,就是一个整数。

事件标志组的特点:

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

事件标志组逻辑关系图:

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

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

函数

描述

OSFlagCreate()

创建一个事件标志组

OSFlagDel()

删除一个事件标志组

OSFlagPend()

等待事件标志组中的事件

OSFlagPendAbort()

终止挂起等待事件标志组中的事件

OSFlagPendGetFlagRdy()

获取任务等待到的事件

OSFlagPost()

设置事件标志组中的事件

OSFlagCreate():用于创建一个事件标志组
代码语言:javascript
复制
void  OSFlagCreate ( OS_FLAG_GRP*	p_grp,     //指向事件标志组结构体的指针              
				 	 CPU_CHAR*		p_name,	   //指向作为事件标志组名的 ASCII 字符串的指针                    
					 OS_FLAGS   	flags, 	   //事件标志组的初始值                  
				 	 OS_ERR*		p_err	   //指向接收错误代码变量的指针 
                   )
OSFlagPost():用于设置事件标志组中的事件
代码语言:javascript
复制
OS_FLAGS OSFlagPost ( OS_FLAG_GRP*	 p_grp,     //指向事件标志组结构体的指针                     
                      OS_FLAGS     	 flags,		//设置事件指定位清0或置1                      
				  	  OS_OPT      	 opt,       //函数操作选项:OS_OPT_POST_FLAG_SET 或 OS_OPT_POST_FLAG_CLR  
				  	  OS_ERR*		 p_err		//指向接收错误代码变量的指针
                    )//OS_FLAGS 类型返回值  事件标志组更新后的事件标志值
OSFlagPend():用于等待事件标志组中的事件
代码语言:javascript
复制
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 		//指向接收错误代码变量的指针
                   ) //OS_FLAGS 类型返回值  任务实际等待到的事件标志,如果没有任何标志准备就绪,则为 0

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

当等待到指定位后,清0对应位

OS_OPT_PEND_BLOCKING

标志组不满足条件时挂起任务

OS_OPT_PEND_NON_BLOCKING

标志组不满足条件时不挂起任务

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • UCOS-III笔记(九)
    • 事件标志组
      • OSFlagCreate():用于创建一个事件标志组
      • OSFlagPost():用于设置事件标志组中的事件
      • OSFlagPend():用于等待事件标志组中的事件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档