Ucos中文书(邵贝贝)时间管理

上传人:工**** 文档编号:441038 上传时间:2017-02-25 格式:DOC 页数:8 大小:79KB
返回 下载 相关 举报
Ucos中文书(邵贝贝)时间管理_第1页
第1页 / 共8页
Ucos中文书(邵贝贝)时间管理_第2页
第2页 / 共8页
Ucos中文书(邵贝贝)时间管理_第3页
第3页 / 共8页
Ucos中文书(邵贝贝)时间管理_第4页
第4页 / 共8页
Ucos中文书(邵贝贝)时间管理_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《Ucos中文书(邵贝贝)时间管理》由会员分享,可在线阅读,更多相关《Ucos中文书(邵贝贝)时间管理(8页珍藏版)》请在金锄头文库上搜索。

1、 章 时间管理 . 任务延时函数, . 按时分秒延时函数 . 让处在延时期的任务结束延时, . 系统时间,和 . 章 时间管理在 时钟节拍中曾提到,C/其它内核也一样)要求用户提供定时中断来实现延时与超时控制等功能。这个定时中断叫做时钟节拍,它应该每秒发生 10至 100次。时钟节拍的实际频率是由用户的应用程序决定的。时钟节拍的频率越高,系统的负荷就越重。讨论了时钟的中断服务子程序和节时钟节函数 该函数用于通知C/生了时钟节拍中断。本章主要讲述五个与时钟节拍有关的系统服务: 本章所提到的函数可以在 务延时函数,C/供了这样一个系统服务:申请该服务的任务可以延时一段时间,这段时间的长短是用时钟节

2、拍的数目来确定的。实现这个系统服务的函数叫做 。调用该函数会使 C/行一次任务调度,并且执行下一个优先级最高的就绪态任务。任务调用 后,一旦规定的时间期满或者有其它的任务通过调用 取消了延时,它就会马上进入就绪状态。注意,只有当该任务在所有就绪任务中具有最高的优先级时,它才会立即运行。程序清单 的代码。用户的应用程序是通过提供延时的时钟节拍数一个 1 到 65535之间的数,来调用该函数的。如果用户指定 0值),则表明用户不想延时任务,函数会立即返回到调用者。非 0值会使得任务延时函数 将当前任务从就绪表中移除)。接着,这个延时节拍数会被保存在当前任务的 ),并且通过 每隔一个时钟节拍就减少一

3、个延时节拍数。最后,既然任务已经不再处于就绪状态,任务调度程序会执行下一个优先级最高的就绪任务。程序清单 L 0) (1);(&= = 0) (2)5= (3); (4)清楚地认识 0到一个节拍之间的延时过程是非常重要的。换句话说,如果用户只想延时一个时钟节拍,而实际上是在 0到一个节拍之间结束延时。即使用户的处理器的负荷不是很重,这种情况依然是存在的。图 统每隔 10)。假如用户没有执行其它的中断并且此时的中断是开着的,时钟节拍中断服务就会发生)。也许用户有好几个高优先级的任务(等待延时期满,它们会接着执行)。接下来,图 得到执行的机会,该任务在执行完后马上调用)所示的 )。C/使该任务处于

4、休眠状态直至下一个节拍的到来。当下一个节拍到来后,时钟节拍中断服务子程序会执行),但是这一次由于没有高优先级的任务被执行,C/立即执行申请延时一个时钟节拍的任务)。正如用户所看到的,该任务实际的延时少于一个节拍!在负荷很重的系统中,任务甚至有可能会在时钟中断即将发生时调用 ),在这种情况下,任务几乎就没有得到任何延时,因为任务马上又被重新调度了。如果用户的应用程序至少得延时一个节拍,必须要调用 ),指定延时两个节拍!时分秒延时函数 虽然是一个非常有用的函数,但用户的应用程序需要知道延时时间对应的时钟节拍的数目。用户可以使用定义全局常数 看 方法将时间转换成时钟段,但这种方法有时显得比较愚笨。笔

5、者增加了 函数后,用户就可以按小时(H)、分(M)、秒(S)和毫秒(m)来定义时间了,这样会显得更自然些。与一样,调用 函数也会使 C/行一次任务调度,并且执行下一个优先级最高的就绪态任务。任务调用 后,一旦规定的时间期满或者有其它的任务通过调用 取消了延时(参看 复延时的任务),它就会马上处于就绪态。同样,只有当该任务在所有就绪态任务中具有最高的优先级时,它才会立即运行。程序清单 的代码。从中可以看出,应用程序是通过用小时、分、秒和毫秒指定延时来调用该函数的。在实际应用中,用户应避免使任务延时过长的时间,因为从任务中获得一些反馈行为(如减少计数器,清除 常是很不错的事。但是,如果用户确实需要

6、延时长时间的话,C/以将任务延时长达 256个小时(接近 11天)。一开始先要检验用户是否为参数定义了有效的值)。与一样,即使用户没有定义延时,也是存在的)。因为C/知道节拍,所以节拍总数是从指定的时间中计算出来的)。很明显,程序清单 者只是用这种方法告诉大家一个公式,这样用户就可以知道怎样计算总的节拍数了。真正有意义的只是)决定了最接近需要延迟的时间的时钟节拍总数。500/如,若将时钟频率(置成 10004延时不会产生任何延时!而 50C/持的延时最长为 65,535个节拍。要想支持更长时间的延时,如 )所示,确定了用户想延时多少次超过 65,535个节拍的数目)和剩下的节拍数)。例如,若

7、00,用户想延时 15分钟,则会延时 150,000个时钟。这个延时会被分割成两次 32,768个节拍的延时(因为用户只能延时 65,535个节拍而不是 65536个节拍)和一次 24,464个节拍的延时。在这种情况下,首先考虑剩下的节拍,然后是超过 65,535的节拍数)和(8)(即两个 32,768个节拍延时)。程序清单 L 0 | 0 | 0 | 0) (1) 59) 59) 999) ( * 3600L * (2)+ (* 60L * (* (500L/; (3) 65536L; (4) 65536L; (5) (6) 0) (7)2768); (8)2768); (9)由于 的具体实现方法,用户不能结束延时调用 要求延时超过 65535个节拍的任务。换句话说,如果时钟节拍的频率是 100户不能让调用 ,10,55,350)或更长延迟时间的任务结束延时。处在延时期的任务结束延时,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 嵌入式开发/单片机

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号