当前位置: 首页 > article >正文

µC/OS-III-事件标志

事件标志与信号量都是属于任务间同步的一种机制,信号量一般用于任务间的单事件同步,对于任务间的多事件同步,使用信号量来实现比较复杂,µC/OS-III提供了事件标志,事件标志就能够很好地处理任务间的多任务同步。
事件标志是一个事件是否发生用一个比特位表示,一个事件是否发生只有两种情况,分别为事件发生和事件未发生,因此只需一个比特位就能够表示事件是否发生,µC/OS-III 用1表示事件发生,用0表示事件未发生。

一、µC/OS-III事件标志相关 API 函数
1)函数 OSFlagCreate()
创建一个事件标志组。
void OSFlagCreate(
OS_FLAG_GRP* p_grp, //指向事件标志组结构体的指针
CPU_CHAR* p_name, //指向作为事件标志组名的 ASCII 字符串的指针
OS_FLAGS flags, //事件标志组的初始值
OS_ERR* p_err) //指向接收错误代码变量的指针
2) 函数 OSFlagDel()
删除一个事件标志组。
OS_OBJ_QTY OSFlagDel(
OS_FLAG_GRP* p_grp, //指向事件标志组结构体的指针
OS_OPT opt, //函数操作选项
OS_ERR* p_err); //指向接收错误代码变量的指针
返回值:OS_OBJ_QTY类型,被终止挂起等待事件标志任务的数量。
3)函数OSFlagPend()
用于等待事件标志组中的事件。
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类型,任务实际等待到的事件标志。
4)OSFlagPendAbort()
终止任务挂起等待事件标志组。
OS_OBJ_QTY OSFlagPendAbort(
OS_FLAG_GRP* p_grp, //指向事件标志组结构体的指针
OS_OPT opt, //函数操作选项
OS_ERR* p_err) //指向接收错误代码变量的指针
返回值:OS_OBJ_QTY类型,被终止挂起任务的数量。
5)函数 OSFlagPendGetFlagsRdy()
用于获取任务等待到的事件。
OS_FLAGS OSFlagPendGetFlagsRdy(
OS_ERR p_err) //指向接收错误代码变量的指针
返回值:OS_FLAGS类型,任务获取到的事件标志。
6)函数 OSFlagPost()
用于设置事件标志组中的事件。
OS_FLAGS OSFlagPost(
OS_FLAG_GRP
p_grp, //指向事件标志组结构体的指针
OS_FLAGS flags, //等待的事件标志
OS_OPT opt, //函数操作选项
OS_ERR* p_err) //指向接收错误代码变量的指针
返回值:OS_FLAGS类型,事件标志组更新后的事件标志值。


http://www.kler.cn/a/570450.html

相关文章:

  • 【Golang学习之旅】Go-zero + Gen:如何使用 Gen 提升 Go 开发效率
  • Spark核心之05:sparkOnYarn、资源参数、调度模式、资源分配策略、shuffle机制??
  • 清华大学DeepSeek使用手册:6本502页大合集PDF下载
  • Java 并行流(Parallel Stream)详解
  • Spring学习笔记04:spring mvc和Spring Boot之间是什么关系?
  • 第151场双周赛:将数组按照奇偶性转化、可行数组的数目、移除所有数组元素的最小代价、全排列 Ⅳ
  • Linux系统安装Azure CLI完全指南
  • 【多线程-第三天-NSOperation的练习-tableView异步下载网络图片-沙盒缓存 Objective-C语言】
  • MySQL 8 C++ 源码解析:EXPLAIN 实现机制
  • 掌握 ElasticSearch 聚合查询:Aggregations 入门与实战
  • Vue.js 的双向数据绑定是如何实现的?
  • 快速创建基于Scala的flink开发项目
  • React 之 Redux 第二十八节 学习目标与规划大纲及概要讲述
  • chrome下载文件提示“贵组织屏蔽了该文件,因为它不符合安全政策” 安装chrome插件出现问题
  • 安装 cnpm 出现 Unsupported URL Type “npm:“: npm:string-width@^4.2.0
  • Hyper-V -docker-vmware 三者的关系
  • 零信任沙箱:为网络安全筑牢“隔离墙”
  • 6.人工智能与机器学习
  • 快瞳通用文档解析技术是怎样赋能下游各类大语言模型任务?
  • Lua | 每日一练 (4)