第7章 μCOS-Ⅱ标准教程 教案(μCOS-II多事件同步机制)

时间:2025-07-09

μCOS-II

µC/OS-II 操作系统标准教程

µC/OS-II 操作系统标准教程

人民邮电出版社 出版 杨宗德,张兵 编著 2009年3月

μCOS-II

µC/OS-II 操作系统标准教程

第7章 µC/OS-II多事件同步机制1事件组标志同步机制基本原理

2

事件组标志基本操作

μCOS-II

µC/OS-II 操作系统标准教程

事件组标志管理示意图

2011-3-30

人民邮电出版社出版 杨宗德编著

μCOS-II

µC/OS-II 操作系统标准教程

事件组标志控制块结构体os_flag_grp

typedef struct os_flag_grp { //事件组标志结构体 INT8U OSFlagType; //事件类型,使用时需设置为OS_EVENT_TYPE_FLAG void *OSFlagWaitList; //指向等待的任务链表 OS_FLAGS OSFlagFlags; //8, 16 or 32 bit flags,信号列表 #if OS_FLAG_NAME_SIZE > 1 INT8U OSFlagName[OS_FLAG_NAME_SIZE]; //信号名称 #endif } OS_FLAG_GRP;

2011-3-30

人民邮电出版社出版 杨宗德编著

μCOS-II

µC/OS-II 操作系统标准教程

等待任务链表中结点typedef struct os_flag_node { //事件标志等待链表结点 void *OSFlagNodeNext; //指向下一个等待结点 void *OSFlagNodePrev; //指向前一个等待结点 void *OSFlagNodeTCB; //指向此等待任务的任务控制块 void *OSFlagNodeFlagGrp; //指向此任务其所等待的事件组标志 OS_FLAGS OSFlagNodeFlags; //等待的事件(标识等待此标志组中哪些事件) INT8U OSFlagNodeWaitType; //等待方式(与,或,任意,所有) } OS_FLAG_NODE;

2011-3-30

人民邮电出版社出版 杨宗德编著

μCOS-II

µC/OS-II 操作系统标准教程

事件组标志控制块空闲链表

2011-3-30

人民邮电出版社出版 杨宗德编著

μCOS-II

µC/OS-II 操作系统标准教程

第7章 µC/OS-II多事件同步机制1事件组标志同步机制基本原理

2

事件组标志基本操作

μCOS-II

µC/OS-II 操作系统标准教程

创建事件组标志OS_FLAG_GRP *OSFlagCreate (OS_FLAGS flags, INT8U *err)

基本流程如下: (1)参数检查。检查是否分配错误标志存储空间。 (2)条件检查。检查是否在中断服务程序中执行此程序。 (3)从空闲事件组标志控制块链表中申请一个控制块节点, 如果申请失败,将返回OS_FLAG_GRP_DEPLETED错误;否 则初始化申请的控制块节点成员变量。

2011-3-30

人民邮电出版社出版 杨宗德编著

μCOS-II

µC/OS-II 操作系统标准教程

阻塞式等待事件组标志OS_FLAGS OSFlagPend (OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U wait_type, INT16U timeout, INT8U *err)

基本流程如下: (1)参数检查。检查是否为错误标志分配空间,是否指定了等待的 事件组标志。 (2)条件检查。检查是否在中断服务程序中执行此函数,事件类型 是否为事件组标志(OS_EVENT_TYPE_FLAG)。 (3)使用局部变量consume标识是否需要在当前任务等待的状态满 足后,将对应的等待位位取反,即是否为宏OS_FLAG_CONSUME, 如果需要,则置consume为

TRUE,否则为FALSE。 (4)根据等待方式选择不同的处理办法如果满足,根据consume的 值选择是否需要将等待的各位(即pgrp->OSFlagFlags &= ~flags_rdy);如果不满足,则调用函数OS_FlagBlock()阻塞当前进 程,引发新的调度,关于函数OS_FlagBlock()功能详细说明见后。

2011-3-30

人民邮电出版社出版 杨宗德编著

μCOS-II

µC/OS-II 操作系统标准教程

非阻塞式等待事件组标志OS_FLAGS OSFlagAccept (OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U wait_type, INT8U *err)

基本流程如下: (1)参数检查。检查是否为错误标志分配空间,是否指定了等待的 事件组标志。 (2)条件检查。检查是否在中断服务程序中执行此函数,事件类型 是否为事件组标志(OS_EVENT_TYPE_FLAG)。 (3)使用局部变量consume标识是否需要在当前任务等待的状态满 足后,将对应的等待位位取反,即是否为宏OS_FLAG_CONSUME, 如果需要,则置consume为TRUE,否则为FALSE。 (4)根据等待方式选择不同的处理办法,如果满足,根据consume 的值选择是否需要将等待的各位(即pgrp->OSFlagFlags &= ~flags_rdy);如果不满足直接退出,返回 OS_FLAG_ERR_NOT_RDY错误。

2011-3-30

人民邮电出版社出版 杨宗德编著

μCOS-II

µC/OS-II 操作系统标准教程

修改事件组标志状态OS_FLAGS OSFlagPost (OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U opt, INT8U *err)

流程如下: (1)参数检查。检查是否为错误标志分配空间,是否指定了等待的 事件组标志。 (2)条件检查。检查是否为事件组标志 (OS_EVENT_TYPE_FLAG)。 (3)根据设置选项opt选择修改事件组标志控制块成员变量 OSFlagFlags的值。 (4)遍历此事件组标志所有等待任务,根据各任务的等待方式,查 看该任务等待的状态是否已经发生,如果已经发生,将调用函数 OS_FlagTaskRdy()使对应任务准备就绪,关于此函数的功能及源代 码分析见后。如果有相应的任务就绪,则引发新的调度。

2011-3-30

人民邮电出版社出版 杨宗德编著

μCOS-II

µC/OS-II 操作系统标准教程

删除事件标志组OS_FLAG_GRP *OSFlagDel (OS_FLAG_GRP *pgrp, INT8U opt, INT8U *err) 基本流程如下: (1)参数检查。检查是否为错误标志分配空间,是否指定了等待的事件组标志。 (2)条件检查。检查是否在中断服务程序中执行此函数,欲删除的对象是否为事件组 …… 此处隐藏:1797字,全部文档内容请下载后查看。喜欢就下载吧 ……

第7章 μCOS-Ⅱ标准教程 教案(μCOS-II多事件同步机制).doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219