事件标志组

1.当任务要与多个事件同步时可以使用事件标志。若其中的任意一
个事件发生时任务被就绪, 叫做逻辑或(OR)。若所有的事件都发生时
任务被就绪,叫做逻辑与( AND)。

2.用户可以创建任意个事件标志组( 限制于RAM)。 uC/OS-III中与
事件标志组相关的函数都是以 OSFlag???()为前缀。与事件标志组相
关的函数代码都在OS_FLAG.C中。

3.设置OS_CFG.H中的OS_CFG_FLAG_EN为1开启事件标志组功能。

( 1)事件标志组是uC/OS-III的内核对象,以OS_FLAG_GRP为数据类型(见 OS.H)。 它可以是 8位, 16位, 32位,

决定于OS_TYPE.H中所定义的OS_FLAGS。 事件标志组中的位是任务所等待事件是否发生的标志。事件标志组必须在创建后使用。

( 2) 任务或ISR可以提交标志。 然而, 只有任务可以将在事件标志组中等待的其它任务删除,

取消等待,只有任务才能让任务在事件标志组中等待。

( 3) 任务可以等待事件标志组中的任意个位被设置。 等待也可以被设置期限,以时基为单位。

( 4)任务等待事件标志组中的位,可以被设置为OR模式, 或者是AND模式。

函数名 功能
OSFlagCreate() 创建一个事件标志组
OSFlagDel() 删除一个事件标志组
OSFlagPend() 在事件标志组中挂起
OSFlagPendAbort() 取消等待
OSFlagPendGetFalgsRdy() 获得事件标志组中导致任务被就绪的位
OSFlagPost() 提交标志到事件标志组

4.使用事件标志组

当任务或ISR提交标志到事件标志组,满足条件的任务会被就绪 。

事件标志组中位的含义由用户定义,应用中可以有多个事件标志
组。 在事件标志组中, 可以定义位0表示温度过低( 由温度传感器接
收),位 1表示电压过低,位 2表示某个开关被按下等。任务或 ISR
检测这些传感器并调用OSFlagPost()设置相应的标志位。 任务可以调
用OSFlagPend()检测相应的标志是否发生。

5.事件标志组通常用于表示的短暂的事件或状态信息。通常用不同
的事件标志组处理。

ISR或任务可以测量一些状态信息,例如温度、转速、电压等。
用于状态信息时一般不设置等待时限。
ISR或任务可以测量一些短暂的事件,如按下开关、爆炸等。
用于短暂事件时一般设置了等待时限。

6.事件标志组内部结构

用户可以创建任意个事件标志组(仅限制于处理器的 RAM)。通
过设置 OS_CFG.H中的 OS_CFG_FLAG_EN为 1开启事件标志组功能。

用户代码不能直接访问事件标志组,必须通过uC/OS-III提供的函
数访问事件标志组。

7.多任务同步

通过广播信号量实现多任务同步是通用的方法。显然的,在单CPU
系统中, 同一时间只能执行一个任务。 然而, 多个任务可以同时被就
绪。 这叫做多任务同步。 然而, 需要同步一些不需要接收广播的信号
量的任务,解决这个问题的办法是将信号量和时间标志组同时用于同
步。假定左边任务的优先级比右边任务的优先级低。

( 1)右边的每个任务都需要跟事件标志组的位对应。
( 2)右边任务需等待信号量才能被就绪。
( 3)当事件标志组中与需要同步的任务对应位都被置位后,左边任务才能广播信号量。

( 4)左边任务广播信号量给右边任务。

信号量和任务信号量中都有信号量计数值表示该信号量还可以被
分配几次。若ISR或任务需要标记一个任务时,推荐使用任务信号量
因为这可以避免定义一个外部信号量且更为有效。
当任务需要与一个或多个事件同步时使用事件标志组。

16.2-uC/OS-III同步 (事件标志组)的更多相关文章

  1. FreeRTOS 事件标志组 ——提高篇

    假设你已经看过FreeRTOS 事件标志组这篇随笔了. 之前的基础篇,真的就只是简单了解一下,相当于大学实验室的实验,但是,我们实际公司项目中,需要更多地思考,就算我们之前只是学习了基础概念以及基础语 ...

  2. 16.3-uC/OS-III同步 (事件标志组实验)

    事件标志组,顾名思义,就是若干个事件标志的组合,代表若干个事件是否发生,通常用于集合两个或两个以上事件的状态 . 1.如果想要使用事件标志组,就必须事先使能事件标志组.消息队列的使能位于“os_cfg ...

  3. uc/os iii移植到STM32F4---IAR开发环境

    也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢 ...

  4. RTX——第13章 事件标志组

    以下内容转载自安富莱电子: http://forum.armfly.com/forum.php 前面的章节我们已经讲解了任务管理和时间管理,从本章节开始讲解任务间的通信和同步机制.首先讲解任务间的通信 ...

  5. FreeRTOS 事件标志组

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 为什么要使用事件标志事件标志组是实现多任务同步的有效机制之一.也许有不理解的初学者会问采用事件标志组多麻烦, ...

  6. UCOSIII事件标志组

    两种同步机制 "或"同步 "与"同步 使能 #define OS_CFG_FLAG_EN 1u /* Enable (1) or Disable (0) cod ...

  7. FreeRTOS_事件标志组

    FreeRTOS事件标志组 事件标志组简介 1. 事件位(事件标志) 事件位用于表明某个事件是否发生,事件位通常用作事件标志,比如下面的几个例子: 当收到一条消息并且把这条消息处理掉以后就可以将某个位 ...

  8. FreeRTOS 任务计数信号量,任务二值信号量,任务事件标志组,任务消息邮箱

    以下基础内容转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 计数信号量的另一种实现方式----基于任务通知(Task Not ...

  9. FreeRTOS 任务通知模拟事件标志组

    实验 //设置事件位的任务 void eventsetbit_task(void *pvParameters) { u8 key; while(1) { if(EventGroupTask_Handl ...

随机推荐

  1. 关键词提取算法TextRank

    很久以前,我用过TFIDF做过行业关键词提取.TFIDF仅仅从词的统计信息出发,而没有充分考虑词之间的语义信息.现在本文将介绍一种考虑了相邻词的语义关系.基于图排序的关键词提取算法TextRank. ...

  2. Python时间,日期,时间戳之间转换,时间转换时间戳,Python时间戳转换时间,Python时间转换时间戳

    #1.将字符串的时间转换为时间戳方法: a = "2013-10-10 23:40:00" #将其转换为时间数组 import time timeArray = time.strp ...

  3. blender show normals

    https://blenderartists.org/forum/showthread.php?193096-Blender-2-5-how-to-show-normals-in-viewport

  4. Kafka 生产者和消费者入门代码基础

    这篇博文讲解Kafka 的生产者和消费者实例. 基础版本一 生产者 ProducerFastStart.java package com.xingyun.tutorial_1; import org. ...

  5. Django Rest Framework(认证、权限、限制访问频率)

    阅读原文Django Rest Framework(认证.权限.限制访问频率) django_rest_framework doc django_redis cache doc

  6. Protobuf3 序列化

    在message_lite.h中定义了SerializeToString ,SerializeToArray ,SerializeToCodedStream ,SerializeToZeroCopyS ...

  7. 程序猿必备的10款web前端动画插件一

    1.动画SVG框架幻灯片 在幻灯片之间切换时显示动画SVG帧的实验性幻灯片.不同的形状可以用来创建各种风格. 我们想和大家分享一个实验幻灯片.我们的想法是在从一个幻灯片转换到另一张幻灯片时,使SVG帧 ...

  8. docker进程分析

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/TM6zNf87MDG7Bo/article/details/80970541 序言      闷热. ...

  9. SpirngBoot之整合Swagger2

    前言 swagger,中文"拽"的意思.它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅, 而且还提供了在线文档的测试.另外swagger很容易构建rest ...

  10. 【转】Linux netstat命令详解,高级面试必备

    简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...