RTX 嵌入式实时操作系统事件的使用
RTX在实时控制系统中的应用

RTX在实时控制系统中的应用王丰;刘娜;肖雅静;赵岁花【摘要】摘要:RTX在Windows平台的基础上提供了一个实时子系统,实现了确定性的实时线程调度、实时环境与Windows环境之间的进程间通讯机制以及只在特定的实时操作系统中才有的对Windows系统的扩展特性。
主要介绍了RTX 下驱动程序的开发以及RTX与Windows之间的IPC通讯。
%RTX provides a real-time subsystem base on Windows platform, it implements deterministic scheduling of real-time threads, inter-process communication mechanisms between the real-time environment and the native Windows environment, and extends Windows to enable capabilities that are generally found only in proprietary real-time operating systems. This paper mainly introduces driver program development of RTX and the IPC communication between RTX and Windows.【期刊名称】《电子工业专用设备》【年(卷),期】2012(041)011【总页数】4页(P40-43)【关键词】嵌入子系统;实时控制;实时线程调度;IPC通讯【作者】王丰;刘娜;肖雅静;赵岁花【作者单位】中国电子科技集团公司第四十五研究所,北京100176;中国电子科技集团公司第四十五研究所,北京100176;中国电子科技集团公司第四十五研究所,北京100176;中国电子科技集团公司第四十五研究所,北京100176【正文语种】中文【中图分类】TP317随着现代科技的发展,工业控制系统一直在不断寻求更高的精度和速度,因此实时控制系统在越来越多的方面得到应用。
嵌入式系统中的实时操作系统调度算法

嵌入式系统中的实时操作系统调度算法嵌入式系统是一种特殊的计算机系统,其设计目标是在特定的应用领域内提供高度可靠和实时的性能。
实时操作系统(RTOS)是嵌入式系统中常用的操作系统类型,它以管理任务和资源的方式为应用程序提供服务。
实时操作系统中的任务调度算法起着至关重要的作用,它们决定了任务执行的顺序和优先级,直接影响系统的实时性能和稳定性。
实时操作系统中常用的任务调度算法包括时间片轮转调度(Round-Robin Scheduling)、优先级调度(Priority Scheduling)、最早截止时间优先调度(Earliest Deadline First Scheduling)等。
每种调度算法都有其自身的特点和适用场景,下面将逐一进行介绍。
1. 时间片轮转调度算法时间片轮转调度算法是实时操作系统中最常见的调度算法之一。
它基于任务的优先级,为每个任务分配一个固定长度的时间片,并按顺序轮流执行任务,每个任务在一个时间片内执行完毕后转移到下一个任务。
当时间片用尽时,下一个任务将获得执行机会。
这种调度算法保证了每个任务的执行时间相对均匀,避免了某个任务霸占资源而导致其他任务无法运行的情况。
时间片轮转调度算法适用于任务的执行时间相对较短和相对平衡的场景,对于响应时间要求较高的实时系统非常有效。
然而,当任务的执行时间差异较大或任务的数量过多时,时间片轮转调度算法可能会导致任务响应时间的不确定性,不适用于要求确定性响应时间的实时系统。
2. 优先级调度算法优先级调度算法是一种简单而直观的调度算法,它为每个任务分配一个优先级,并按照优先级顺序进行调度,具有较高优先级的任务将优先执行。
在实时操作系统中,任务的优先级通常由开发者根据任务的重要性、对实时性的要求和资源的需求等因素进行设定。
优先级调度算法适用于对任务执行时间要求相对灵活的实时系统。
这种调度算法在任务完成时间较长的情况下可以保证重要任务先执行,但是如果任务的数量过多或优先级设置不当,可能会导致低优先级任务长时间等待的情况,从而影响系统的实时性。
嵌入式实时操作系统简介

嵌入式实时操作系统简介嵌入式实时操作系统简介一:引言嵌入式实时操作系统(RTOS)是一类特殊的操作系统,用于控制和管理嵌入式系统中的实时任务。
本文将介绍嵌入式实时操作系统的基本概念、特点和应用领域。
二:嵌入式实时操作系统的定义1. 实时操作系统的概念实时操作系统是一种能够处理实时任务的操作系统。
实时任务是指必须在严格的时间约束内完成的任务,例如航空航天、工业自动化和医疗设备等领域的应用。
2. 嵌入式实时操作系统的特点嵌入式实时操作系统相比于通用操作系统具有以下特点:- 实时性:能够满足严格的时间要求,保证实时任务的及时响应。
- 可靠性:具备高可用性和容错能力,能够保证系统的稳定运行。
- 精简性:占用资源少,适应嵌入式系统的有限硬件资源。
- 可定制性:能够根据具体应用需求进行定制和优化。
三:嵌入式实时操作系统的体系结构1. 内核嵌入式实时操作系统的核心部分,负责任务和资源管理、中断处理和调度算法等。
- 任务管理:包括任务的创建、删除、挂起和恢复等。
- 资源管理:包括内存、文件系统、网络资源等的管理。
- 中断处理:负责中断的响应和处理。
- 调度算法:根据任务的优先级和调度策略进行任务的调度。
2. 设备管理嵌入式实时操作系统需要与各种外设进行通信和交互,设备管理模块负责管理设备驱动、中断处理和设备的抽象接口等。
3. 系统服务提供一系列系统服务,例如时钟管理、内存管理和文件系统等,以支持应用程序的运行。
四:嵌入式实时操作系统的应用领域嵌入式实时操作系统广泛应用于以下领域:1. 工业自动化:用于控制和监控工业设备和生产过程。
2. 航空航天:用于飞行控制、导航和通信系统。
3. 交通运输:用于车辆控制和交通管理。
4. 医疗设备:用于医疗仪器和设备控制和数据处理。
附件:本文档附带示例代码和案例分析供参考。
注释:1. 实时任务:Real-Time Task,简称RTT。
2. 嵌入式系统:Embedded System,简称ES。
第10章实时操作系统RTX

11
• RTX51 Tiny是RTX51 Full的子集,可以容易地在没有 片外存储器的8051单片机系统上运行。RTX51 Tiny也 支持很多RTX51 Full的功能,允许轮转式任务切换, 支持信号传递。但它不支持抢先式的任务切换,不能进 行信息处理,也不支持存储池的分配和释放。
6
❖ 休眠态相当于任务驻留在内存中,但并不被多任务内核所调 度;
❖ 就绪态意味着任务已经准备好,可以运行,但由于该任务的 优先级比正在运行的任务的优先级低,还暂时不能运行;
❖ 运行态是指任务掌握了CPU的使用权,正在运行中; ❖ 挂起态也可以叫做等待事件态,指任务在等待,等待某一事
件的发生(例如等待某外设的I/O操作,等待某共享资源由暂 不能使用变成能使用状态,等待定时脉冲的到来,或等待超 时信号的到来,以结束目前的等待,等等);最后,发生中 断时,CPU提供相应的中断服务,原来正在运行的任务暂不 能运行,就进入了被中断状态。
10.2.1 RTX - 51实时操作系统特点
RTX-51实时多任务操作系统,完全不同于一般的单片机 C51程序。RTX-51有自己独特的概念和特点:
1. 中断:
RTX-51系统可以使用中断,其中断函数以并行方式工作。 中断函数可以与RTX-51内核通信,并可以将信号或者消 息发送到RTX-51的指定任务中。在RTX-51 FULL中, 中断一般配置为一个任务。
5
10.1.2 多任务系统中任务的定义
❖ 一个任务,也称做一个线程,是一个简单的程序, 该程序可以认为CPU完全只属于该程序自己。实 时应用程序的设计过程包括如何把问题分割成多 个任务。每个任务都是整个应用的一部分,都被 赋予一定的优先级,有自己的一套CPU寄存器和 栈空间。
操作系统的实时系统与嵌入式实时操作系统

操作系统的实时系统与嵌入式实时操作系统操作系统是计算机系统中的核心组成部分。
它负责管理和协调计算机硬件与软件资源,为用户和应用程序提供良好的使用环境。
操作系统又可分为实时系统和非实时系统,其中实时系统又可以进一步分为普通实时系统和嵌入式实时系统。
本文将着重探讨实时系统和嵌入式实时操作系统的概念、特点以及应用领域。
一、实时系统实时系统是指能够在规定的时间范围内对于事件进行产生、处理和响应的计算机系统。
它的特点是对时间要求极为严格,要求系统能够在给定的时间限制内完成任务的响应。
根据实时性能要求的不同,实时系统可以分为硬实时系统和软实时系统。
硬实时系统是指必须严格按照预定时间完成任务的实时系统。
在硬实时系统中,任务的延迟必须小于预定的数值,否则会导致系统失效。
这类系统通常应用于航空航天、核电站等对安全性要求极高的领域。
软实时系统则对于任务完成的时间要求相对宽松一些。
在软实时系统中,任务的延迟可以超过预定时间,但是超过的延迟应该尽量减小,以达到更好的系统性能和用户体验。
例如,在多媒体应用中,要求视频播放的延迟尽可能小,以免出现卡顿的情况。
二、嵌入式实时操作系统嵌入式实时操作系统是一种运行在嵌入式计算机系统上的实时操作系统。
它通常被嵌入在具有特定功能的设备或系统中,以实时地完成特定的任务。
嵌入式实时操作系统的特点是高度可靠、实时性强、功耗低以及对硬件资源的优化利用。
与通用操作系统相比,嵌入式实时操作系统更加注重对实时任务的管理和调度。
它可以根据任务的优先级和时间要求,合理分配系统资源,确保任务在规定时间内得到处理和响应。
此外,嵌入式实时操作系统还通常具有小内核、快速启动和低资源消耗等特点,以满足对于设备功耗和响应速度的要求。
嵌入式实时操作系统被广泛应用于各个领域,如交通系统、医疗设备、工业自动化等。
例如,在交通系统中,嵌入式实时操作系统可以实时处理交通信号灯的状态,以确保交通流畅和安全。
在医疗设备中,嵌入式实时操作系统可以实时监测患者的生命体征,并根据需要发出相应的指令。
解读嵌入式系统中的实时操作系统RTOS

解读嵌入式系统中的实时操作系统RTOS嵌入式系统是指集成电子、机械、软件等多种技术的综合系统,广泛应用于汽车、家电、医疗、工业控制等领域。
嵌入式系统中的实时操作系统RTOS是嵌入式软件领域的一个重要概念。
本文将从嵌入式系统的特点、实时操作系统的概念、实时性的定义、RTOS的特点、RTOS的应用等多个方面,对RTOS进行解读。
一、嵌入式系统的特点嵌入式系统与常规PC机相比,有以下几个特点:1.硬件资源受限:嵌入式系统的硬件资源(如存储器、CPU、外设等)相对有限,因此需要对软件进行极度的精简和优化。
2.实时性要求高:嵌入式系统往往需要及时响应外界的变化,如数据输入、控制指令等,因此需要在一定时间内完成相关操作。
3.稳定性要求高:嵌入式系统往往需要长时间运行,需要保持系统的稳定性和可靠性。
二、实时操作系统的概念实时操作系统是一种专门针对实时性要求较高的系统而设计的操作系统。
实时操作系统分为硬实时操作系统和软实时操作系统两类。
硬实时操作系统的特点是,对实时性的响应具有非常高的保证,但它的可扩展性较差,往往只能运行在特定的硬件上。
软实时操作系统则是一种相对灵活的操作系统,可以根据不同的应用情况进行定制,因此它的可扩展性和灵活性较高。
三、实时性的定义实时性是指对于某个系统,在一定的时间要求内完成某种任务的能力。
实时性分为硬实时和软实时两种。
硬实时要求系统必须按照严格的时间要求执行任务,如控制系统中的电机控制等,若不能在规定的时间内完成执行,则会导致系统失效。
软实时要求系统完成任务的时间不能超过预定的时间,但是在时间不急迫的情况下,可以适当延迟任务的执行时间。
四、RTOS的特点实时操作系统中,RTOS是较为常用的操作系统之一,它具有以下几个特点:1.多任务性:RTOS可以同时处理多个任务,每个任务的执行时间固定,这可以帮助系统保证实时性。
2.资源可管理:RTOS可以管理系统的资源,包括CPU、内存、线程等,从而对系统进行优化。
rtos实例程序

rtos实例程序RTOS实例程序RTOS(Real-Time Operating System,实时操作系统)是一种专为实时应用设计的操作系统。
它具有快速响应、可靠性和确定性等特点,广泛应用于嵌入式系统、自动控制、无人机等领域。
本文将以一个简单的RTOS实例程序为例,介绍RTOS的基本原理和实现方式。
我们来了解一下RTOS的核心概念。
RTOS通过任务(Task)的方式来组织程序的执行。
每个任务都有自己的优先级和执行时间片,RTOS根据任务的优先级来调度任务的执行顺序。
任务之间通过信号量(Semaphore)和消息队列(Message Queue)等机制进行通信和同步。
除了任务调度和通信机制,RTOS还提供了中断处理、内存管理、定时器等功能,以支持实时应用的需求。
假设我们要开发一个简单的温度监控系统,要求能够实时采集温度数据并在LCD屏幕上显示。
我们可以使用RTOS来实现该系统。
首先,我们定义两个任务,一个任务用于采集温度数据,另一个任务用于显示温度数据。
采集任务的优先级较高,以确保数据能够及时采集;显示任务的优先级较低,以避免影响数据采集的实时性。
RTOS实例程序的主要代码如下:```c#include <stdio.h>#include <stdlib.h>#include <rtos.h>#define TEMPERATURE_SENSOR_PIN A0#define LCD_SCREEN_PIN 10void temperature_task(void *arg){while (1) {int temperature = read_temperature(TEMPERATURE_SENSOR_PIN);send_message(temperature);delay(1000);}}void display_task(void *arg){while (1) {int temperature = receive_message();update_lcd_screen(LCD_SCREEN_PIN, temperature);delay(100);}}int main(){rtos_init();// 创建采集任务和显示任务rtos_create_task(temperature_task, "temperature", HIGH_PRIORITY, NULL);rtos_create_task(display_task, "display", LOW_PRIORITY, NULL);// 启动RTOS调度器rtos_start();return 0;}```在上述代码中,我们首先定义了温度传感器的引脚和LCD屏幕的引脚。
嵌入式系统中的实时操作系统设计与实现

嵌入式系统中的实时操作系统设计与实现嵌入式系统已经成为了现代科技的重要领域。
它们被用于各种规模和领域,从个人电子设备到大规模制造业设备,以及军事和航空航天应用等。
嵌入式系统的核心是实时操作系统(RTOS),它可以满足实时性和低功耗方面的需求。
在本文中,我们将探讨RTOS的设计和实现,以及它如何在嵌入式系统中发挥重要作用。
嵌入式系统中的RTOSRTOS是一种操作系统,其主要目的是在一个给定时间内,使系统能够在预期的时间内响应外部事件。
在嵌入式系统中,RTOS 用于管理各种任务和进程。
这些任务和进程通常被称为线程,它们可以异步执行,但在执行时会按照一定的优先级进行排序。
一些任务可能需要高优先级或实时响应;而其他一些任务可能较为简单,可以使用低优先级运行。
RTOS的优点使用RTOS来设计和实现嵌入式系统可以带来许多优势。
以下是一些主要优势:1. 支持多任务:RTOS可以支持多个线程之间的同步和异步执行。
这意味着可以同时执行多个任务,从而提高了系统的效率和性能。
2. 提供实时性:RTOS的主要优点之一是它可以提供实时性。
该系统被设计为在特定时间内响应外部事件,以满足实时应用的要求。
此外,RTOS还可以确保对关键任务的快速响应,从而避免了与误差等一些严重问题的出现。
3. 降低功耗:嵌入式系统通常需要在电池供电的情况下运行,因此,降低功耗是非常重要的。
RTOS是一个轻量级的系统,可以在低功耗模式下进行运行,从而延长电池的寿命。
RTOS的结构RTOS的结构由三个部分组成:内核、任务和进程、以及低级别的硬件驱动。
1. 内核: 在RTOS中,内核是操作系统的核心部分。
它提供了构建任务和进程的基本机制,例如线程调度、进程同步、内存管理等。
2. 任务和进程: 任务和进程是由内核创建的。
它们由操作系统负责在给定的时间内进行调度和执行。
使用RTOS,可以创建一些任务,这些任务可以相互独立地执行,并将相关的资源封装在一起。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3:如果用户想使用事件,则用户可以调用 os_evt_set(evt_flags, task_id)函数,
函数执行后,任务 ID 为 task_id 的任务在操作系统内对应的事件标志变量(不是
evt_flags)会和 evt_falgs 进行 按位或 运算
因此如果用户使用事件 3,则 evt_flags = (1 << (3-1)) = 0x0004(0000 0000 0000
0100)
同理如果用户使用事件 n(1 <= n <= 16),则 evt_flags = 1<<(n-1)
4:用户可以同时设置多个事件
如果用户使用事件 1 和 5,则 evt_flags = (1 << 3) | (1 << 5) = 0x0011
如果用户使用事件 x , y 和 z,则 evt_flags = (1 << x) | (1 << y) | (1 << z)
os_evt_wait_or(0x0001 | 0x0002, 0xffff);则 os_evt_wait_or 后的代码可以继续运行
但是如果是 os_evt_wait_or(0x0004 | 0x0008 , 0xffff);则 os_evt_wait_or 后的代码无法
继续运行
os_evt_wait_and(wflags,tmo) 等待一个或多个事件中的所有事件标志
要想使用事件,必须先了解 RTX 系统中的事件运行原理
0:不需要用户自己定义事件变量,这跟信号和互斥不同(这两者都需要用户自己定义变
量)
1:RTX 系统中每个任务最多有 16 个事件标志
2:evt_falgs 和 wflags 都是 U16 类型变量
0x0000 变量共有 16 位 每一位对应一
个事件因此最多可以表示 16 个事件
如果设置了事件 1 则本任务在操作系统内对应的事件标志变量 为 0x0001 ,wflags 和 0x0117 按位与运算之后的值是 0x0001(不等于 wflags) 如果设置了事件 9 则本任务在操作系统内对应的事件标志变量 为 0x0100 ,wflags 和 0x0117 按位与运算之后的值是 0x0000(不等于 wflags) 7:os_evt_set 函数设置的事件标志位,只能供 os_evt_wait_or 或者 os_evt_wait_and 使 用一次,使用之后系统自动立即清除 因此如果想要再次使得 os_evt_wait_or 或者 os_evt_wait_and 能够运行下去,就必须 再次调用函数 os_evt_set 函数设置事件标志位
0x0206:事件
10、事件 3 和事件 2
0xffff:事件 1……事件 16
task_id 任务 ID
os_evt_wait_or(wflags,tmo) 等待一个或多个事件中的任意一个事件标志
参数说明:
wflags 事件
0x0001:事件 1 0x0002:事件 2
0x0010:事件 5 0x8000:事件 16
tmo 等待时间
例:用户调用 os_evt_set(0x0001, task_id); os_evt_set(0x0002, task_id);
os_evt_wait_and(0x0001 | 0x0002, 0xffff);则 os_evt_wait_or 后的代码可以继续运行
但是如果是 os_evt_wait_or(0x0001 | 0x0002 | 0x0004 , 0xffff);则 os_evt_wait_or 后的 代码无法继续运行
(按位与可以滤除 wflags 不需要判断的事件) 例:有 3 个事件分别是 1 2 和 5,当调用 0s_evt_set(evt_flags, task_id)函数之后,如 果 3 个事件中有任意一个被设置即 (evt_flags = 0x0001 或 0x0002 或 0x0010 或者 0x0003 或 0x0011 或 0x0012 或 0x0013),则当调用 os_evt_wait_and(wflags, tmo)函数之后 即等待所有的事件都发生,此时 wflags 可以是如下几个值 0x0001 尽管有 3 个事件,但是此时等待函数可以仅仅等待 事件 1 发生(事件 2 和事 件 5 变成干扰项) 0x0002 尽管有 3 个事件,但是此时等待函数可以仅仅等待 事件 2 发生(事件 1 和事 件 5 变成干扰项) 0x0010 尽管有 3 个事件,但是此时等待函数可以仅仅等待 事件 5 发生(事件 1 和事 件 2 变成干扰项) 0x0003 = 0x0001 | 0x0002 尽管有 3 个事件,但是此时等待函数可以等待 事件 1 和 事件 2 都发生(事件 5 变成干扰项) 0x0011 = 0x0010 | 0x0001 尽管有 3 个事件,但是此时等待函数可以等待 事件 1 和 事件 5 都发生(事件 2 变成干扰项) 0x0012 = 0x0010 | 0x0002 尽管有 3 个事件,但是此时等待函数可以等待 事件 2 和 事件 5 都发生(事件 1 变成干扰项) 0x0013 = 0x0010 | 0x0002 | 0x0001 尽管有 3 个事件,但是此时等待函数可以等 待 事件 1、事件 2 和 事件 5 都发生 以 wflags = 0x0013 为例, 如果设置了事件 1 事件 2 事件 3 事件 5 和 事件 9 则本任务在操作系统内对应的事件 标志变量(事件 3 和事件 9 是干扰项) 为 0x0117 ,wflags 和 0x0117 按位与运算之后的值是 0x0013(等于 wflags)
首先:主要使用的函数有
os_evt_wait_or(wflags,tmo) 等待一个或多个事件中的任意一个事件标志
os_evt_wait_and(wflags,tmo) 等待一个或多个事件中的所有事件标志
os_evt_set(evt_flags,task_id) 设置对应任务的事件标志
os_evt_clr(clr_flags,task_id) 清除对应任务的事件标志
(evt_flags = 0x0001 或 0x0002 或 0x0010 或者 0x0003 或 0x0011 或 0x0012 或 0x0013),则当调用 os_evt_wait_or(wflags, tmo)函数之后
即等待任意一个事件的发生,此时 wflags 可以是如下几个值 0x0001 尽管有 3 个事件,但是此时等待函数可以仅仅等待 事件 1 发生(事件 2 和事 件 5 变成干扰项) 0x0002 尽管有 3 个事件,但是此时等待函数可以仅仅等待 事件 2 发生(事件 1 和事 件 5 变成干扰项) 0x0010 尽管有 3 个事件,但是此时等待函数可以仅仅等待 事件 5 发生(事件 1 和事 件 2 变成干扰项) 0x0003 = 0x0001 | 0x0002 尽管有 3 个事件,但是此时等待函数可以等待 事件 1 和 事件 2 中的任意一个发生(事件 5 变成干扰项) 0x0011 = 0x0010 | 0x0001 尽管有 3 个事件,但是此时等待函数可以等待 事件 1 和 事件 5 中的任意一个发生(事件 2 变成干扰项) 0x0012 = 0x0010 | 0x0002 尽管有 3 个事件,但是此时等待函数可以等待 事件 2 和 事件 5 中的任意一个发生(事件 1 变成干扰项) 0x0013 = 0x0010 | 0x0002 | 0x0001 尽管有 3 个事件,但是此时等待函数可以等 待 事件 1、事件 2 和 事件 5 都发生 以 wflags = 0x0013 为例, 如果设置了事件 1 事件 2 事件 3 事件 5 和 事件 9 则本任务在操作系统内对应的事件 标志变量(事件 3 和事件 9 是干扰项) 为 0x0117 ,wflags 和 0x0117 按位与运算之后的值是 0x0013(真) 如果设置了事件 1 则本任务在操作系统内对应的事件标志变量 为 0x0001 ,wflags 和 0x0117 按位与运算之后的值是 0x0001(真)
函数说明:
os_evt_set(evt_flags,task_id) 设置对应任务的事件标志
参数说明:
evt_flags 事件
0x0001:事件 1 0x0002:事件 2
0x0010:事件 5 0x8000:事件 16 事
件 n:evt_flags = 1<<(n-1)
0x0003:事件 1 和事件 2 0x0007:事件 1、事件 2 和事件 3
如果设置了事件 9 则本任务在操作系统内对应的事件标志变量 为 0x0100 ,wflags 和 0x0117 按位与运算之后的值是 0x0000(假) 6:当使用 os_evt_wait_and 函数的时候,系统会自动把 wflags 和 本任务在操作系统内 对应的事件标志变量进行 按位与 运算 如果按位与运算值等于 wflags(所有的事件都发生),则任务继续执行,否则任务挂起
也可以使用 0x0001 | 0x0010 = 0x0011 的方式,而且强烈推荐使用或运算的方式,
使用或运算的时候 事件 1 就是 0x0001 事件 2 就是 0x0002 事件 10 就是 0x0200 事
件 16 就是 0x8000
这样就可以很快让读者明白程序里使用哪些事件,而不用费力的去换算
使用或运算的时候 事件 1 就是 0x0001 事件 2 就是 0x0002 事件 10 就是 0x0200 事
件 16 就是 0x8000
这样就可以很快让读者明白程序里使用哪些事件,而不用费力的去换算
tmo 等待时间
例:用户调用 os_evt_set(0x0001, task_id); os_evt_set(0x0002, task_id);
事件 n:evt_flags = 1<<(n-1)