实验五操作系统应用实验简单多任务实验.ppt

实验五操作系统应用实验简单多任务实验.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验五操作系统应用实验简单多任务实验

实验五 操作系统应用实验 一、实验目的 1、熟悉ucos-II下系统函数使用的基本原则 2、理解任务编程方式与前后台编程方式的区别。 3、掌握用ucos-II下任务的五种状态,以及五种状态之间的相互关系 二、实验要求 用一个按键来控制一个LED灯的亮和灭。 三、实验设备 1.电脑一台 2.Proteus-ARM实验箱 四、实验原理 五 实验流程图和对应程序 * * * * * 图1 操作系统应用实验原理图 任务的状态| μC/OS-II程序设计基础 图2是μC/OS-Ⅱ控制下的任务状态转换图。在任一给定的时刻,任务的状态一定是在这五种状态之一。 图2 任务的状态图 系统函数概述| μC/OS-II程序设计基础 基本原则 1.配对性原则 对于μC/OS-II来说,大多数API都是成对的,而且一部分必须配对使用。当然,查询状态的系统函数一般不需要配对使用,而且部分API如延时,也不需要配对使用。配对的函数见下表。 不必配对使用。OSTimeDlyHMSM()可能需要多个OSTimeDlyResume()才能恢复 恢复延时的任务 OSTimeDlyResume() 延时 OSTimeDly()或 OSTimeDlyHMSM() 必须配对使用 恢复任务 OSTaskResume() 挂起任务 OSTaskSuspend() 动态使用任务时必须配对使用 删除任务 OSTaskDel() 建立任务 OSTaskCreate()或 OSTaskCreateExt() 备注 功能 函数2 功能 函数1 一般的操作系统都提供时间管理的函数,最基本的就是延时函数,μC/OS-II也不例外,μC/OS-II所具有的时间管理函数见下表。 系统函数概述| μC/OS-II程序设计基础 系统函数的分类 初始化 任务管理 时间管理 内存管理 根据功能分类 事件管理 系统管理 由时钟节拍中断处理程序调用,用户很少使用 时钟节拍处理函数 OSTimeTick() 以时钟节拍为单位 设置系统时间 OSTimeSet() 以时钟节拍为单位 获得系统时间 OSTimeGet() OSTimeDlyHMSM()可能需要多次才能恢复 恢复延时的任务 OSTimeDlyResume() 以钟时分秒毫秒为单位延时 OSTimeDlyHMSM() 以时钟节拍为单位延时 OSTimeDly() 备注 功能 函数名 传递性:信息传递的上游任务的优先级高于下游任务的优先级。如信号采集任务的优先级高于数据处理任务的优先级。 紧迫性:因为紧迫任务对响应时间有严格要求,在所有紧迫任务中,按响应时间要求排序,越紧迫的任务安排的优先级越高。紧迫任务通常与ISR关联; 关键性:任务越关键安排的优先级越高,以保障其执行机会; 中断关联性:与中断服务程序(ISR)有关联的任务应该安排尽可能高的优先级,以便及时处理异步事件,提高系统的实时性。如果优先级安排得比较低,CPU有可能被优先级比较高的任务长期占用,以致于在第二次中断发生时连第一次中断还没有处理,产生信号丢失现象; 频繁性:对于周期性任务,执行越频繁,则周期越短,允许耽误的时间也越短,故应该安排的优先级也越高,以保障及时得到执行; 快捷性:在前面各项条件相近时,越快捷(耗时短)的任务安排的优先级越高,以使其它就绪任务的延时缩短; 任务设计| μC/OS-II程序设计基础 任务的优先级 任务的优先级安排原则如下: 紧迫性 任务优先级 关键性 中断关联性 快捷性 频繁性 传递性 时间管理| μC/OS-II程序设计基础 概述 μC/OS-II提供了若干个时间管理服务函数,可以满足任务在运行过程中对时间管理的需求。在使用时间管理服务函数时,必须十分清楚一个事实:时间管理服务函数是以系统节拍为处理单位的,实际的时间与希望的时间是有误差的,最坏的情况下误差接近一个系统节拍。因此时间管理服务函数只能用在对时间精度要求不高的场合,或者时间间隔较长的场合。 时间管理| μC/OS-II程序设计基础 OSTimeDly() 系统延时函数OSTimeDly()调用图解 任务进入运行状态 进入延时,同时发生任务调度 任务调用OSTimeDly() 任务进入就绪状态 当前任务优先级为就绪态中最高 延时时间到 延时的长短是由时钟节拍的数目来确定 时间管理| μC/OS-II程序设计基础 OSTimeDly() 下面我们设计一个任务,让一个LED以50个时钟节拍为单位闪耀,说明OSTimeDly()函数的用途。由于篇幅关系,只给出任务主要处理代码。 void TaskLED (void *pdata) { …… while (1) {

您可能关注的文档

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档