【RTX操作系统教程】第13章 事件标志组

合集下载

PKS210操作员(13)

PKS210操作员(13)

主题:复习与检验
目录
工作站的操作 .............................................................................. 错误!未定义书签。

工作站的操作
简介
下列复习检验可以让您确定是否已熟悉此技能,这也是给您机会可以回顾并复习您有执行困难的技能。

说明
复习检验是设计来让您可以展示您在前面练习获得的技能,也是给您机会决定是否有任何您需要复习的技能。

演示
以下是复习检验的一个例子。

2 PKS R210操作员课程
霍尼韦尔中国自动化学院
练习
Experion操作员课程之复习与检验当您完成每一作业时请勾选此作业。

4 PKS R210操作员课程
霍尼韦尔中国自动化学院
如果有,删除线表示什么?
6 PKS R210操作员课程
霍尼韦尔中国自动化学院
报警标志
报警。

8 PKS R210操作员课程
霍尼韦尔中国自动化学院。

RTX操作系统学习

RTX操作系统学习

os_evt_wait_or()原型#include <rtl.h>OS_RESULT os_evt_wait_or (U16 wait_flags, /* Bit pattern of events to wait for事件等待的位模式*/U16 timeout ); /* Length of time to wait for event事件等待的时间长度*/描述os_evt_wait_or函数能等待在参数wait_flags 中被指定发生的所有的事件。

函数等等在参数wait_flags 中相应位为1的事件。

函数能访问多达16个不同的事件。

能用timeout设置预约时间,预约时间之后即使没有一个事件发生,函数也必须返回。

可使用除了0xFFFF之外的预约时间, 如果设置timeout为0xFFFF,则表示一个不确定的预约时间。

预约时间由系统时间衡量。

当至少一个列在wait_flags 的事件发生或预约时间到时,os_evt_wait_or函数返回。

os_evt_wait_or函数在RL-RTX库中。

其原型定义在rtl.h.函数库中。

注意每一事件都有其自己的16位的等待标志。

返回值os_evt_wait_or函数返回一个表明事件发生或中止的值。

返回值描述OS_R_EVT 至少有一个列在wait_flags中的标志已被设置。

OS_R_TMO 预约时间到。

示例#include <rtl.h>void task1 (void) __task {OS_RESULT result;result = os_evt_wait_or (0x0003, 500);if (result == OS_R_TMO) {printf("Event wait timeout.\n");}else {printf("Event received.\n");}..}os_evt_wait_and()原型#include <rtl.h>OS_RESULT os_evt_wait_and (U16 wait_flags, /* Bit pattern of events to wait for事件等待的位模式*/U16 ); /* Length of time to wait for event事件等待的时间长度*/描述os_evt_wait_and 函数等待在wait_flags 中被指定发生的所有的事件。

P8000 电力自动化计算机监控系统-说明书V1.10-20100104

P8000 电力自动化计算机监控系统-说明书V1.10-20100104
p8000电力自动化计算机监控系统后台软件操作说明书v110重庆新世纪电气有限公司11软件特有功能12程序的安装第一部分组态程序第一章硬件组态11系统及网络结构的建立
P8000 电力自动化计算机监控系统 后台软件操作说明书
V1.10 重庆新世纪电气有限公司
目录
1 概述......................................................................... 1 1.1 软件特有功能 ................................................................. 1 1.2 程序的安装 ................................................................... 1 第一部分 组态程序 ................................................................. 4 第一章 硬件组态 ................................................................. 4 1 系统组态..................................................................... 4 1.1 系统及网络结构的建立......................................................... 4 1.2 单元的建立................................................................... 4 1.3 总信息的建立................................................................. 6 1.4 语音文件拷贝................................................................. 7 1.5 计算模拟量................................................................... 7 1.6 事故追忆..................................................................... 8 1.7 外部通讯管理................................................................. 8 2 模拟量....................................................................... 9 3 开关量组态.................................................................. 10 3.1 开关量参数.................................................................. 10 3.2 修改开关量定义.............................................................. 12 3.3 拷贝开关信息................................................................ 12 4 电度组态.................................................................... 12 5 控制组态.................................................................... 13 6 通讯转接单元组态............................................................ 15 6.1 通讯转接单元地址设定........................................................ 15 6.2 通讯转接单元电度量.......................................................... 16 6.3 通讯转接单元模拟量.......................................................... 16 6.4 通讯转接单元开关量.......................................................... 17 6.5 对模拟量定值方式和开关量定值方式进行设置 .................................... 17 6.6 建立控制命令................................................................ 17 6.7 建立事件.................................................................... 17 7 录波插件、模拟量、开关量采集单元组态 ........................................ 18 第二章 画面组态 ................................................................ 18 1 概述........................................................................ 18 1.1 概述........................................................................ 18 2 画面操作.................................................................... 18 2.1 建立新画面.................................................................. 18 2.2 修改画面特性................................................................ 19 2.3 打开画面.................................................................... 20

RTX用户操作手册

RTX用户操作手册

RTX2013 用户手册RTX2007正式版用户手册成都睿捷通信息有限公司2013年03月目录第一章RTX客户端的安装 (4)1。

1 RTX客户端软件的安装 (4)1。

1.1安装RTX客户端 (4)第二章RTX客户端的基本应用 (6)2。

1客户端用户登录 (6)2.2个人设置 (8)2。

2。

1基本资料 (8)2.2。

2详细资料 (9)2.2。

3联系方式 (10)2.2.4修改密码 (11)2.2。

5热键设置 (11)2。

2.6回复设置 (12)2.2。

7面板设置 (13)2.3系统设置 (14)2。

3。

1基本设置 (14)2。

3。

2声音设置 (15)2。

3。

3文件传输设置 (16)2.3。

4办公集成 (17)2。

3.5代理设置 (18)2.3。

6服务器设置 (19)2。

4对外设置 (20)2.5。

1对外资料 (20)2。

5.1身份验证 (21)2.5应用设置 (22)2。

5.1邮件设置 (22)2。

6主界面介绍 (23)2。

6。

1用户信息栏 (24)2。

6。

2快捷搜索栏 (25)2.6.3组织架构面板 (26)2。

6.4手机通讯录面版 (27)2.6。

5最新消息面板 (28)2。

6。

6您可以区域 (29)2.6。

7状态栏 (30)2。

7联系人面板 (30)2.6.1常用联系人 (30)2。

6。

2自定义组 (31)2.6。

3常用部门 (32)2。

6.4RTX群 (33)2.6。

5外部联系人 (34)2.6.6最近联系人 (35)2。

8组织架构面板 (36)2。

7。

1多功能会话窗口 (37)2。

7。

2部门跳转 (42)2.7。

3关注联系人 (43)2.7.4六人语音会议 (43)2.7.5高清晰视频 (45)2。

7.6发送文件 (46)2.7.7收发手机消息 (48)2.7。

8查看消息纪录 (48)2。

7。

9查看对方详细资料 (49)2.7。

10发送电子邮件 (50)2.7。

11广播消息 (52)2。

RL-RTX应用

RL-RTX应用

30
ARM Real-Time Library Training
Basics
协同多任务处理
任务调用自己的调度程序或者使自己进入休眠状态
由程序员设计多任务
操作系统不影响任务间的转换
31
ARM Real-Time Library Training
Functions
协同多任务处理
os_tsk_pass()
任务创建以后,在运行时任务的栈由存储 池动态分配
用户定义的栈必须由程序分配,必须由新 创建的任务指定
栈存储块分配以后,指向其位置的指针必 须写入到TCB
Source:
19
ARM Real-Time Library Training
System Resources
RTX Kernel / Time
Source:
7
ARM Real-Time Library Training
RTX Kernel
RTX ARM7 & ARM9提示
IRQ
• 调度程序可以禁止一小段时间(µs)
FIQ
• 不能被禁止 • 不能从FIQ-ISR调用专用系统内核函数
RTX Cortex-M3提示
IRQ
• 不能由RTX调度程序禁止
无FIQ SVC (Software Interrupt Function for Cortex-M devices)
• SVC 0保留给RTX内核 • 可以中断SVC函数 • 自我创建的SVC功能必须用于RTX的SVC处理
• ARM7™ / ARM9™ • Cortex™-M3
3
ARM Real-Time Library Training

系统运维操作手册

系统运维操作手册

xxxx系统运维操作手册xxxx公司二零零九年十月版本控制分发控制1概述 (4)2主机系统 (5)2.1 检查文件系统利用率 (5)2.2 查看系统硬件软件告警日志 (5)2.3 检查僵死或运行时间过长的进程 (6)2.4 检查系统CPU利用率 (7)2.5 检查系统内存利用率 (7)2.6 检查系统IO利用率 (8)2.7 检查系统交换量 (9)2.8 检查系统高可用性(HA)的使用状态 (9)2.9 清理过时的系统临时文件 (10)2.10 检查磁带库和磁带使用情况 (10)2.11 修改用户口令 (11)2.12 清洗磁带机 (11)2.13 检索操作系统日志 (12)3系统启动与关闭 (13)3.1 系统的运行架构 (13)3.2 系统的启动 (13)3.3 系统的关闭 (14)4系统部署 (17)4.1 生成部署包 (17)4.2 程序部署 (18)5重要的系统参数配置 (21)5.1 C ONFIG.PROPERTIES................................................................... 错误!未定义书签。

5.2 SPRING-MISTASK.XML................................................................ 错误!未定义书签。

6日志查看 (22)6.1 WAS日志 (22)6.2 DB2日志 (22)7查系统是否正确运行 (24)8系统管理员维护人员信息日志 (25)9查看表空间及附件硬盘的使用情况 (26)9.1 D B2表空间查看 (26)9.2 115服务器附件文件占用情况 (26)10服务停启顺序 (28)1概述本手册给出了湖南省移动公司的报账平台系统及报账平台外围系统的运维操作细则。

手册从主机系统、应用系统以及数据库系统三个方面对任务项进行组织,对应章节包括第错误!未找到引用源。

嵌入式系统试题库

嵌入式系统试题库

嵌入式系统试题库一、选择题(20分)1、下列描述不属于RISC 计算机的特点的是()。

A. 流水线每周期前进一步。

B. 更多通用寄存器。

C. 指令长度不固定,执行需要多个周期。

D. 独立的Lo a d和St or e指令完成数据在寄存器和外部存储器之间的传输。

2、存储一个32位数Ox2168465到2000H,....__,2003H四个字节单元中,若以小端模式存储,则2000H 存储单元的内容为()。

A 、Ox21A 、OvB、Ox68B 、3.3vC 、Ox65C 、+sv ,..___,+15vD 、Ox023、RS232-C 串口通信中,表示逻辑1的电平是()。

D 、-5v ,.___,-15v4、ARM 汇编语句"A DD R O, R 2, R 3, LSL#l"的作用是()。

A. R O= R 2 + (R3 << 1)C. R 3= R O+ (R 2 << 1) B. R O=(R 2<< 1) + R 3D. (R 3 << 1)= R O+ R2 5、I RQ中断的入口地址是()。

A 、OxOOOOOOOOB 、Ox00000008C 、Ox00000018D 、Ox000000146、S3C 2440X 1/0口常用的控制器是()。

A. 端口控制寄存器(GP A C ON -G PJ C O N )。

B. 端口数据寄存器(GPA DAT-G PJ D AT )。

C. 外部中断控制寄存器(EXT I N T n )。

D. 以上都是。

7、GET伪指令的含义是()A. 包含一个外部文件B. 定义程序的入口C. 定义一个宏D. 声明一个变量8、A DD R O, R l, #3 ; #3属于()寻址方式。

A. 立即寻址B. 多寄存器寻址C. 寄存器直接寻址D. 相对寻址9、ARM 指令集和Th um b 指令集分别是()位的。

操作系统思维导图版

操作系统思维导图版
1.7. 处理机调度.........................................................................................................13 1.7.1. 调度算法 .....................................................................................................13 1.7.2. 调度时机 .....................................................................................................17 1.7.3. 调度过程 .....................................................................................................18 1.7.4. 调度级别 .....................................................................................................18 1.7.5. 实时调度 .....................................................................................................20
1.3. 线程.....................................................................................................................10 1.3.1. 引入 .............................................................................................................10 1.3.2. 概念 .............................................................................................................10 1.3.3. 实现 .............................................................................................................11

RTX使用方法大全

RTX使用方法大全

RTX使用方法大全第一篇:RTX使用方法大全一、腾讯通下载及安装1、登录;2、点下图左下角的“即时通讯”;3、按提示下载软件并安装;4、双击桌面上腾讯通图标上线:即可(如果设置了自动上线滴话,则会自动登录的)二、一些基本图标的含义图标图标图标图标表示的是:未上线表示的是:已上线的女士表示的是:已上线的男士和表示的是:离开状态【上线了,但超过5分钟(默认时间)未操作】注:1、凡提交统计表时,未填写男女性别者,系统是按男士默认的;2、凡提交统计表时,未填写年龄者,系统是按1900年出生默认的。

三、腾讯通PTX建群滴办法(参考)1、腾讯通界面2、点两小人3、点“自定义组”4、点“添加自定义组”后,建版主群,再点“添加”5、选中发改委后双击打开6、把需选的人员选中后,双击或点“添加”:7、不在一个处室的可点“回上一层”返回再选;最后点“确定”即可(或者,做到第5步时,直接从最下面的人群中选也可以的。

)8、需要发话时,鼠标右键点“版主群”,再点“发及时消息”就OK啦四、导入自定义图片的方法(腾讯通支持批量导入)1、点表情图标2、点左下角的“添加自定义表情”3、点左边的“自定义组”,再点右边的“添加”按钮4、点“查找图片”按钮5、把要导入的图片采用连选方式全部选中后,点“打开”6、再点“确定”就OK啦~~五、语音方法1、双击好友名字,打开会话框,再点“语音”按钮2、自己连好了耳麦,等待对方“接受语音”后,就可以通话啦3、调音量:左边的是调说话用的麦的音量的;右边的是调听话用的耳机的音量的六、查看消息记录的方法(一)、法1 打开对话框,点“文件”按钮,再点“查看消息记录”即可(二)、法2 点腾讯通面板上的“操作”按钮,再点“查看消息记录”或“查看离线消息”(三)、法3:点腾讯通面板下面的“您可以…”,再点“查看消息记录”(四)、法4 点腾讯通面板上的临时显示标致左边图标表示“查看离线消息”;右边图标表示“查看未读消息”。

ucOSII学习笔记(标志事件组_信号量_邮箱_互斥)

ucOSII学习笔记(标志事件组_信号量_邮箱_互斥)

目前因项目开发要用到ucOSII,在网上查找到了一些资料,为方便其他同仁,把我个人认为写得很好的文档摘抄到一个文件中,并上传到百度空间,希望对初学都有所帮助。

UCOS事件标志组管理笔记Ⅰ说明:本文摘自网上,来源已忘记,望原作者见谅。

当某个任务需要与多个任务同步时,须要使用事件标志组。

1、弄清楚OS_FLAG_GRP、OS_FLAG_NODE和OS_TCB之间的关系。

当一个任务开始等待某些事件标志位时,就回建立一个事件标志节点OS_FLAG_NODE数据结构,并且将任务所要等待的事件标志位写入OS_FLAG_NODE的分量.OSFlagNodeFlags。

然后将该数据结构分量.OSFlagNodeFLagGrp指向事件标志组OS_FLAG_GRP,将.OSFlagNodeTCB 指向该任务的控制块OS_TCB,建立起任务与事件标志组之间的联系,说明该任务是等待该事件标志组中某些事件标志位的任务。

当有多个任务都需要等待某个事件标志组中某些事件标志位时,这些任务分别建立自己的事件标志节点。

并且将这些事件标志节点通过分量.OS FlagNodeNext和.OSFlagNodePrev连接成链。

⒉、任务可以等待事件标志组中某些位置位1,也可以等待事件标志组中某些位清0,而置1(或清0)又可以分为所有事件都发生的“与”型和任何一个事件发生的“或”型。

这样便有了4种不同的类型存放在.OSFlagNodeWaitType(OS_FLAG_NODE)中。

3、事件标志组和信号量我觉得是有不同的。

信号量建立以后,假设初始值为N,前N个任务调用OSSemPend()函数都会得到信号量。

之后如果第N+1个任务调用OSSemPend()函数申请信号量,该任务将会被置为等待事件发生的状态(睡眠态)。

只到前N个任务中有任务运行完了所要运行的程序,调用OSSenmP ost()函数,释放了所占用了信号量,第N+1个任务。

(这里假设该任务是所有等待信号量任务中优先级最高的任务)才会获得信号量,被从睡眠态转入就绪态。

永宏PLC使用手册

永宏PLC使用手册
3.2 通讯端口扩展............................................................................................ H3-4
第 4 章:安装须知
4.1 安装环境 ................................................................................................... H4-1 4.2 PLC 安装的注意事项 ............................................................................... H4-1
1.7.12 通讯板(CB) ........................................................................................... H1-17 1.8 机型外观尺寸图 ........................................................................................ H1-18
7.3.1 继电器单端共点输出电路结构及其接线 ................................................ H7-3 7.3.2 晶体管单端共点 SINK 及 SRCE 输出电路结构及其接线 ....................... H7-4 7.3.3 晶闸管(TRIAC)单端共点输出电路结构及其接线 ................................... H7-5 7.4 晶体管单端共点输出电路反应速率的提升(仅高速和中速) .................. H7-5 7.5 数字量输出电路的输出组件保护及噪声抑制 ........................................ H7-6 7.5.1 继电器接点的保护与噪声抑制............................................................... H7-6 7.5.2 晶体管的保护与噪声维抑制 .................................................................. H7-7

RTXTiny中文手册

RTXTiny中文手册

RTX51 Tiny第二版(版本2.02)是RTX51 Tiny 1.xx的升级版本,他完全集成在keil的集成开发环境中。

RTX51 Tiny是一款可以运行在大多数8051兼容的器件及其派生器件上的实时操作系统(准实时),相对与传统的开发方式而言,用实时操作系统进行开发是一种效率更高的方式。

作为实时操作系统,RTX51 Tiny虽然比较简陋,但它还是具备了一些实时操作系统的基本要素,完全可以充当我们进入实时操作系统(RTOS)世界的领路者,更为重要的是,它是免费的。

:-)从本节起,我会陆续将keil帮助文件中的RTX51 Tiny第二版的使用手册翻译为中文,并发布给大家,供大家参考。

RTX51 Tiny第2版用户手册第一章概述RTX51 Tiny是一种实时操作系统(RTOS),可以用它来建立多个任务(函数)同时执行的应用。

嵌入式应用系统经常有这种需求。

RTOS可以提供调度、维护、同步等功能。

实时操作系统能灵活的调度系统资源,像CPU和存储器,并且提供任务间的通信。

R TX51 Tiny是一个功能强大的RTOS,且易于使用,它用于8051系列的微控制器。

RTX51 Tiny的程序用标准的C语言构造,由Keil C51 C编译器编译。

用户可以很容易的定义任务函数,而不需要进行复杂的栈和变量结构配置,只需包含一个指定的头文件。

一、What’s NewRTX51 Tiny第二版增加了许多新特性,使得实时软件的开发更加简单,如:●支持Code Banking该选项必须在CONF_TNY.A51配置文件中允许,还要在L51_BANK.A51文件中定义Co de Banking硬件配置。

●直接任务切换新增加的函数(os_swich_task)允许一个任务立即切换到另一个处于就绪态的任务。

●任务就绪标志新的库函数isr_set_ready和os_set_ready允许用户给一个任务设置就绪标志。

就绪标志可以用于将一个正在等待时间间隔、超时或信号(参见os_wait)的任务置为就绪态,该任务在下一个运行时机恢复。

Windows事件ID及解释大全

Windows事件ID及解释大全

Windows事件ID及解释大全0 操作成功完成。

1 函数不正确。

2 系统找不到指定的文件。

3 系统找不到指定的路径。

4 系统无法打开文件。

5 拒绝访问。

6 句柄无效。

7 存储控制块被损坏。

8 存储空间不足,无法处理此命令。

9 存储控制块地址无效。

10 环境不正确。

11 试图加载格式不正确的程序。

12 访问码无效。

13 数据无效。

14 存储空间不足,无法完成此操作。

15 系统找不到指定的驱动器。

16 无法删除目录。

17 系统无法将文件移到不同的驱动器。

18 没有更多文件。

19 介质受写入保护。

20 系统找不到指定的设备。

21 设备未就绪。

22 设备不识别此命令。

23 数据错误(循环冗余检查)。

24 程序发出命令,但命令长度不正确。

25 驱动器找不到磁盘上特定区域或磁道。

26 无法访问指定的磁盘或软盘。

27 驱动器找不到请求的扇区。

28 打印机缺纸。

29 系统无法写入指定的设备。

30 系统无法从指定的设备上读取。

31 连到系统上的设备没有发挥作用。

32 另一个程序正在使用此文件,进程无法访问。

33 另一个程序已锁定文件的一部分,进程无法访问。

36 用来共享的打开文件过多。

38 已到文件结尾。

39 磁盘已满。

50 不支持请求。

51 Windows 无法找到网络路径。

请确认网络路径正确并且目标计算机不忙或已关闭。

如果 Windows 仍然无法找到网络路径,请与网络管理员联系。

52 由于网络上有重名,没有连接。

请到“控制面板”中的“系统”更改计算机名,然后重试。

53 找不到网络路径。

54 网络很忙。

55 指定的网络资源或设备不再可用。

56 已达到网络 BIOS 命令限制。

57 网络适配器硬件出错。

58 指定的服务器无法运行请求的操作。

59 出现了意外的网络错误。

60 远程适配器不兼容。

61 打印机队列已满。

62 服务器上没有储存等待打印的文件的空间。

63 已删除等候打印的文件。

64 指定的网络名不再可用。

实验6 事件标志组的使用

实验6 事件标志组的使用

实验6 事件标志组的使用实验
实验目的:
掌握事件标志组的使用方法
背景描述
现有一个设备控制面板。

面板上设有6个按钮,分别为启动/停止、复位、按钮1、按钮2、按钮3、按钮4。

当按下“启动”按钮后,系统开始工作,然后需要选择四个按钮中的一个或多个来设置需要运行的功能;当按下“复位”按钮后,系统恢复到开机状态,等待输入选择功能按钮。

工作方式
利用事件标志组来模拟上述工作过程,为每个功能建立一个任务(即功能1—功能4),分别完成蜂鸣器鸣响、四个LED发亮、在LCD上输出提示语句、在UART口输出提示语句;由按钮中断服务程序根据按键的状态来向事件标志组发送标志,四个功能任务读取事件标志组的标志,来确定是否执行;如果是按下“复位”按钮,则清除事件标志组里的标志位。

四个功能按照下表来确定是否执行:
实验内容
利用事件标志组来模拟上述工作过程,为每个功能建立一个任务(即功能1—功能4),分别完成蜂鸣器发生、四个LED发亮、在LCD上输出提示语句、在UART口输出提示语句;由按钮中断服务程序根据按键的状态来向事件标志组发送标志,四个功能任务读取事件标志组的标志,来确定是否执行;如果是按
下“复位”按钮,则清除事件标志组里的标志位。

【RTX操作系统教程】第13章 事件标志组

【RTX操作系统教程】第13章      事件标志组

这里用 U16 类型的变量 event_flag 就可以设置,变量 event_flag 的那位设置为 1,那么 RTX 任务
的事件标志就等待那个位被设置为 1。而且要所有要求的位都被设置为 1 才可以。比如设置变量
event_flag = 0x0003 就表示 RTX 任务在等待事件标志的位 0 和位 1 都被设置为 1。
13.2.1 函数 os_evt_set
函数原型:
void os_evt_set ( U16 event_flags, OS_TID task );
/* 16 位的事件标志设置 */ /* 要设置事件标志的任务 ID */
函数描述:
函数 os_evt_set 用于设置指定任务的事件标志。
第 1 个参数表示 16 个可设置的事件标志位。因为 RTX 的每个任务创建时有 16 个可设置的事件标志,
任务的事件标志相应位就设置为 1。变量 event_flag 设置为 0 的位对 RTX 任务的事件标志相应位没
有影响。比如设置变量 event_flag = 0x0003 就表示将 RTX 任务事件标志的位 0 和位 1 设置为 1,
其余位没有变化。
第 2 个参数是任务 ID。
使用这个函数要注意以下问题:
其余位没有变化。
第 2 个参数是任务 ID。
使用这个函数要注意以下问题:
1. 此函数是用于任务代码中调用的,故不可以在中断服务程序中调用此函数,中断服务程序中使用的是
isr_evt_set
使用举例:
2015年12月10日
版本:1.0
第 4 页 共 33 页
#include <rtl.h>
武汉安富莱电子有限公司

FreeRTOS之事件标志组

FreeRTOS之事件标志组

FreeRTOS之事件标志组事件标志组⽤于任务间通信或同步事件标志组和全局变量全局变量⼀般⽤在⽆RTOS的程序中,因此程序对全局变量的访问是顺序的,全局变量对于每⼀个访问它的程序来说都是最新值事件标志组⼀般⽤在多任务系统中,多任务使⽤事件标志组可以防⽌访问冲突。

因为多任务相当于并⾏执⾏,访问全局变量可能会出现同时访问⼀个值的情况,会出现访问冲突或变量不是最新值事件标志组在多任务中可以进⾏超时等待事件标志组本质上是⼀个16位或32位的软件状态寄存器。

16位的话使⽤低8位,32位的话使⽤低24位,每位⽤0或1表⽰事件标志。

事件标志组API功能EventGroupHandle_t xEventGroupCreate( void )创建事件标志组,返回句柄EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet )设置标志位,返回事件标志组BaseType_t xEventGroupSetBitsFromISR(EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet,BaseType_t *pxHigherPriorityTaskWoken )设置标志位(中断),返回状态EventBits_t xEventGroupWaitBits(EventGroupHandle_t xEventGroup,EventBits_t uxBitsToWaitFor,BaseType_t xClearOnExit,BaseType_t xWaitForAllBits,TickType_t xTicksToWait )等待事件标志位置位,返回事件标志组/* 创建事件标志组 */xCreatedEventGroup = xEventGroupCreate();/* 设置事件标志组的 bit0 */xEventGroupSetBits(xCreatedEventGroup, BIT_0);/* 设置事件标志组的 bit1 */xEventGroupSetBits(xCreatedEventGroup, BIT_1);/*等待标志位置位*/uxBits = xEventGroupWaitBits(xCreatedEventGroup, /* 事件标志组句柄 */BIT_ALL, /* 等待 bit0 和 bit1 被设置 */pdTRUE,/* 退出前 bit0 和 bit1 被清除,这⾥是 bit0 和 bit1 都被设置才表⽰“退出”*/ pdTRUE,/* 设置为pdTRUE表⽰等待bit1和bit0都被设置*/xTicksToWait);/* 等待延迟时间 */。

ucos程序框架

ucos程序框架

ucos程序框架CORE 内核管理FLAG 事件标志组管理MUTEX 互斥信号量管理MBOX 消息邮箱管理Q 消息队列管理MEM 内存管理SEM 信号量管理TASK 任务管理TIME 时间管理CORE初始化函数执行中断函数结束中断函数给调度器上锁给调度器解锁启动任务统计任务初始化时钟节拍函数获得版本号虚拟函数使一个任务进入就绪态使一个任务进入等待某事件发生状态由于超时而将任务置为就绪态事件控制块列表初始化任务调度空闲任务统计任务任务控制块初始化//===================================== =============FLAG检查事件标志组创建事件标志组删除事件标志组等待事件标志组中的事件标志给出设定的事件标志位查询事件标志组的当前事件标志状态限制事件标志组初始化事件标志组使等待事件标志的任务进入就绪态从任务链表中删除//===================================== =============MUTEX无等待的获取互斥信号量建立和初始化互斥信号量删除互斥信号量等待一个互斥信号量释放一个互斥信号量得到互斥信号量当前的状态信息MBOX查看制定的消息邮箱是否有需要的信息建立并初始化一个消息邮箱删除消息邮箱任务等待消息通过消息邮箱向任务发送信息通过消息邮箱向多任务发送信息取得消息邮箱的信息Q查看消息队列中是否有需要的信息建立一个消息队列删除消息队列清空队列并忽略发往队列的所有消息任务等待消息队列中的消息向消息队列发送一则消息通过消息队列向任务发送消息消息队列向任务发送消息取得消息队列的信息初始化消息队列MEM建立并初始化一块内存区从内存区分配一个内存块释放一个内存块得到内存区的信息初始化内存分区SEM无条件的等待请求一个信号量建立一个信号量删除一个信号量等待一个信号量发送一个信号量查询一个信号量的当前状态TASK改变一个任务的优先级建立一个新任务建立一个新任务删除一个指定优先级的任务请求一个任务删除其他任务或自身唤起一个挂起任务检查任务堆栈状态无条件挂起一个任务获取任务信息TIME将一个任务延时若干时钟节拍将一个任务延时若干时间唤醒一个被延时任务获取当前系统时钟值设置当前系统时钟值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

13.3 实验例程说明(任务间通信)
安富莱 STM32-V4 开发板 RTX 教程
13.3.1 STM32F103 开发板实验
配套例子:
V4-409_RTX 实验_事件标志组
实验目的:
1. 学习 RTX 的事件标志组
1. 当要求的事件标志位都被设置为 1 时或者设置的超时时间溢出时,函数 os_evt_wait_and 才会返回。
2. 如果函数 os_evt_wait_and 返回前所要求的事件标志位都设置了,那么此函数会在返回前将相应的事
件标志位清零,其它位不受此影响。如果初学者不是太理解这个问题,可以看本章节配套的例子,这
这里用 U16 类型的变量 event_flag 就可以设置,变量 event_flag 的那位设置为 1,那么 RTX 任务
的事件标志就等待那个位被设置为 1。而且要所有要求的位都被设置为 1 才可以。比如设置变量
event_flag = 0x0003 就表示 RTX 任务在等待事件标志的位 0 和位 1 都被设置为 1。
中断服务程序中一定要调用专用于中断的事件标志设置函数 isr_evt_set。
在 RTX 操作系统中实现中断函数跟裸机编程是一样的。
另外强烈推荐用户将 Cortex-M3 内核的 STM32F103 和 Cortex-M4 内核的 STM32F407 的
NVIC 优先级分组设置为 4,即:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);这样中断
入到挂起态 任务 Task2 设置了任务 Task1 的事件标志,任务 Task1 由挂起态进入到就绪态,在调度器的作用下
由就绪态又进入到运行态。
上面就是一个简单 RTX 任务间事件标志通信过程。
13.1.3 RTX 中断方式事件标志组的实现
RTX 中断方式事件标志组的实现是指中断函数和 RTX 任务之间使用事件标志。下面我们通过如下的 框图来说明一下 RTX 事件标志的实现,让大家有一个形象的认识。
1. 此函数是用于中断服务程序中调用的,故不可以在任务中调用此函数,任务中使用的是 os_evt_set。
2. 事件标志函数 isr_evt_set 的调用不能太频繁,太频繁的话会大大增加系统内核的开销,会造成事件标
志得不到及时处理从而造成丢失事件标志的情况。
使用举例:
#include <rtl.h>
while(1) {
/* 1. 等待 K2 按键按下设置 bit0 和 K3 按键按下设置 bit1,都设置了执行 OS_R_EVT 消息 2. 退出前 bit0 和 bit1 被清除,这里是 bit0 和 bit1 都被设置才表示“退出”。 3. 每个任务都有自己的 16 位事件标志位,也就是 os_evt_wait_and 的第一个参数是无符号 16 位整形。
第13章 事件标志组
前面的章节我们已经讲解了任务管理和时间管理,从本章节开始讲解任务间的通信和同步机制。首先 讲解任务间的通信和同步机制之一,事件标志组。
本章教程配套的例子含 Cortex-M3 内核的 STM32F103 和 Cortex-M4 内核的 STM32F407。 13.1 事件标志组 13.2 事件标志组 API 函数 13.3 实验例程说明(任务间通信) 13.4 实验例程说明(中断方式通信) 13.5 总结
第 2 个参数表示设在的等待时间,范围 0-0xFFFF,当参数设置为 0-0xFFFE 时,表示等这么多个时
钟节拍,参数设置为 0xFFFF 时表示无限等待直到事件标志满足要求。
函数返回 OS_R_EVT 表示等待的事件标志位都被设置了,也就是返回成功。返回 OS_R_TMO 表示
超时。
使用这个函数要注意以下问题:
其余位没有变化。
第 2 个参数是任务 ID。
使用这个函数要注意以下问题:
1. 此函数是用于任务代码中调用的,故不可以在中断服务程序中调用此函数,中断服务程序中使用的是
isr_evt_set
使用举例:
2015年12月10日
版本:1.0
第 4 页 共 33 页
#include <rtl.h>
武汉安富莱电子有限公司
任务的事件标志相应位就设置为 1。变量 event_flag 设置为 0 的位对 RTX 任务的事件标志相应位没
有影响。比如设置变量 event_flag = 0x0003 就表示将 RTX 任务事件标志的位 0 和位 1 设置为 1,
其余位没有变化。
第 2 个参数是任务 ID。
使用这个函数要注意以下问题:
个问题:
中断函数的执行时间越短越好,防止其它低于这个中断优先级的异常不能得到及时响应。
实际应用中,建议不要在中断中实现消息处理,用户可以在中断服务程序里面发送消息通知任务,在
任务中实现消息处理,这样可以有效的保证中断服务程序的实时响应。同时此任务也需要设置为高优
先级,以便退出中断函数后任务可以得到及时行。
__task void task1 (void) { .. os_evt_set (0x0003, tsk2); ..
}
13.2.2函数 isr_evt_set
安富莱 STM32-V4 开发板 RTX 教程
函数原型:
void isr_evt_set ( U16 event_flags, OS_TID task );
2015年12月10日
版本:1.0
第 1 页 共 33 页
武汉安富莱电子有限公司
安富莱 STM32-V4 开发板 RTX 教程
运行条件: 创建 2 个任务 Task1 和 Task2 运行过程描述如下: 任务 Task1 运行过程中调用函数 os_evt_wait_and,等待事件标志位被设置,任务 Task1 由运行态进
运行条件:
2015年12月10日
版本:1.0
第 2 页 共 33 页
武汉安富莱电子有限公司
安富莱 STM32-V4 开发板 RTX 教程
创建 1 个任务和一个串口接收中断
运行过程描述如下:
任务 Task1 运行过程中调用函数 os_evt_wait_and,等待事件标志位被设置,任务 Task1 由运行态进
13.1 事件标志组
13.1.1 为什么要使用事件标志
事件标志组是实现多任务同步的有效机制之一。也许有不理解的初学者会问采用事件标志组多麻烦, 搞个全局变量不是更简单,其实不然。在裸机编程时,使用全局变量的确比较方便,但是在加上 RTOS 后 就是另一种情况了。使用全局变量相比事件标志组主要有如下三个问题: 使用事件标志组可以让 RTOS 内核有效的管理任务,全局变量是无法做到的,任务的超时等机制需要
入到挂起态
Task1 挂起的情况下,串口接收到数据进入到了串口中断服务程序,在串口中断服务程序中设置 Task1
的事件标志,任务 Task1 由挂起态进入到就绪态,在调度器的作用下由就绪态又进入到运行态。
上面就是一个简单 RTX 中断方式事件标志通信过程。实际应用中,中断方式的消息机制切记注意以下四个
用户自己去实现。 使用了全局变量就要防止多任务的访问冲突,使用事件标志组已经处理好了这个问题。用户无需担心。 使用事件标志组可以有效的解决中断服务程序和任务之间的同步问题。
13.1.2 RTX 任务间事件标志组的实现
任务间事件标志组的实现是指各个任务之间使用事件标志组实现任务的通信或者同步机制。 RTX 每个任务创建的时候,会自动创建 16 个事件标志,事件标志被存储到每个任务的任务控制块中。 也就是说每个任务支持 16 个事件标志。下面我们通过如下的框图来说明一下 RTX 事件标志的实现,让大 家有一个形象的认识。
/* 16 位的事件标志设置 */ /* 要设置事件标志的任务 ID */
函数描述:
函数 isr_evt_set 用于设置指定任务的事件标志。
第 1 个参数表示 16 个可设置的事件标志位。因为 RTX 的每个任务创建时有 16 个可设置的事件标志,
这里用 U16 类型的变量 event_flag 就可以表示,变量 event_flag 的某个位设置为 1,那么指定 RTX
*/ xResult = os_evt_wait_and (BIT_ALL, usMaxBlockTime);
switch (xResult) {
/* 接收到 bit1 和 bit0 都被设置的消息 */ case OS_R_EVT:
printf("接收到 bit0 和 bit1 都被设置的消息\r\n"); break;
2015年12月10日
版本:1.0
第 3 页 共 33 页
武汉安富莱电子有限公司
安富莱 STM32-V4 开发板 RTX 教程
这里我们重点的说一下函数 os_evt_set,isr_evt_set 和 os_evt_wait_and,因为本章节配套的例子使用的 是这三个函数。
void EXTI0_IRQHandler (void){ .. isr_evt_set (0x0003, tsk2); ..
}
13.2.3函数 os_evt_wait_and
函数原型:
OS_RESULT os_evt_wait_and ( U16 wait_flags, /* 16 位的事件标志等待 */ U16 timeout ); /* 超时时间设置 */
/* 超时 */ case OS_R_TMO:
bsp_LedToggle(1); bsp_LedToggle(4); break;
/* 其他值不处理 */ default:
2015年12月10日
版本:1.0
第 6 页 共 33 页
相关文档
最新文档