基于硬件计时器的延时方法技术

技术编号:2827012 阅读:483 留言:0更新日期:2012-04-11 18:40
一种基于硬件计时器的延时方法,该方法结合硬件计时器与存储于电脑中的程序来实现延时,且该计时器为一数值递减型计时器,其特征在于,该延时方法包括以下步骤:    A.程序读取硬件计时器中数值寄存器的当前值b;    B.程序比较数值寄存器当前值b与需要要等待的时间a,若b大于a则执行步骤C,否则执行步骤E;    C.程序设定一变量c,并初始化其值为b-a;    D.程序判断数值寄存器当前值b是否不小于c,若是则重复执行本步骤,否则程序结束,延时完成;    E.程序设定一变量c,并初始化其值为e-(b-a),其中e为该计时器的最大计数值;    F.程序判断数值寄存器当前值b是否不小于c,若是则重复执行本步骤,否则继续执行步骤G;    G.程序判断数值寄存器当前值b是否大于c,若是则重复执行本步骤,否则程序结束,延时完成。

【技术实现步骤摘要】

本专利技术涉及一种延时方法,特别是一种。
技术介绍
在对操作系统驱动软件的开发过程中,经常需要对硬件寄存器进行操作,比如对CPU的GPIO端口进行设置等,而驱动软件对硬件的操作经常需要硬件在 指定的时间执行操作指令,所以在软件开发中需要设置一延时程序来确保硬件 能够正确及时地响应软件的操作指令。目前的延时方法大多通过一延时函数来完成,如图1所示,在该延时函数 中,程序通过执行若干次循环语句来达到延时的目的,包括以下步骤首先程 序判断是否已达到预设的循环次数d,若是则结束,否则执行步骤102 (步骤101); 程序判断是否满足条件A ,若满足则执行步骤103,否则执行步骤104 (步骤102); 程序执行m次循环后返回步骤101,每次循环执行--调试指令(步骤103);程序 执行n次循环后返回步骤101,每次循环执行一调试指令(步骤104)。在该延时程序中,步骤101中的循环次数d及步骤103中的循环次数m和 步骤104中的循环次数n均为程序开发人员预先设定好的数值,可根据等待时 间的长短分别设定其为不同的数值,而步骤102中的条件A可为一条件编译指 令。如此即可通过程序控制来达到延时的目的。然而,采用上述延时函数的方法适用性较差,对于不同的硬件和软件环境 均需对其中的循环次数进行修改;以WinCE嵌入式操作系统为例,由于WinCE 操作系统为一多线程操作系统,每个线程的优先级将会直接影响该线程占有CPU 的时间,从而影响该延时函数的执行时间,另外,CPU的频率也会影响到每条软 件指令的执行时间;由此可知,采用如上所述的纯软件方式并不能准确实现延 时功能,其延迟时间会出现一定的误差,从而可能会导致硬件不能正确及时地 响应。
技术实现思路
鉴于以上问题,本专利技术提供一种,采用软件与 硬件结合的方式,以克服纯软件方式不能准确延时的缺陷。为实现上述目的,本专利技术所提供的,该方法结 合硬件计时器与存储于电脑中的程序实现延时,该计时器为一数值递减型计时 器,该延时方法包括以下步骤A. 程序读取硬件计时器中数值寄存器的当前值b;B. 程序比较数值寄存器当前值b与需要要等待的时间a,若b大于a则执行步理C,否则执行步驟E:C. 程序设定一变Jtc,并初始化其值为b-a;D. 程序判断数值寄存器当前值b是否不小于c,若是则重复执行本步驟, 否则程序结束,延时完成E. 程序设定一变量c,并初始化其值为e-(b-a),其中e为该计时器的最 大计数值;F. 程序判断数值寄存器当前值b是否不小于c,若是则重复执行本步骤, 否则继续执行步據G;G. 程序判断数值寄存器当前值b是否大于c,若是则重复执行本步骤, 否则程序结束,延时完成。另外,本专利技术所提供的,该方法结合硬件计时 器与存储于电脑中的程序实现延时,该计时器为一数值递塌型计时器,该延时 方法包括以下步猓A. 程序读取硬件计时器中数值寄存器的当前值b;B. 程序比较数值寄存器当前值b与需要要等待的时间a之和是否大于程 序最大计数值e,若是则执行步骤E,否则执行步骤C;C. 程序设定一变量c,并初始化其值为b+a:D. 程序判断数值寄存器当前值b是否不大于c,若是则重复执行本步骤, 否则程序结束,延时完成E. 程序设定一变量c,并初始化其值为(b+a)-e,其中e为该计时器的最 大计数值;F. 程序判断数值寄存器当前值b是否大于c,若是则重复执行本步骤, 否则继续执行步骤G;G. 程序判断数值寄存器当前值b是否不小于c,若是则重复执行本步骤, 否则程序结束,延时完成。与现有技术相比,本专利技术所提供的延时方法采用软件控制与硬件计时器结延时更为准确,且本专利技术所提供的延时方法在软件或硬件环境发性改时其延时 精度并不会戋到较大的影响,比纯软件实现的延时方法具有更强的通用性。附图说明图1为现有延时方法流程图;图2为本专利技术所提供的第一实施例的流程图豕 图3为本专利技术所提供的第二实施例的流程图.具体实施方式为对本专利技术的工作流程有更进一步的了解,以下结合附图进行详细说明。 请参阅图2所示,为本专利技术所提供的第一实施例的流程图;在本实施例中,该硬件计时器为一数值递减型的看门狗计时器 (Watchdog timer),该计时器可以从一个预先设置好的最大计数值开始以不变的速度递减,每递减一次计时器数值减l,当减到0之后重新变回最大值循环计数。如图2所示,该延时方法包括以下步骤程序读取硬件计时器中数值寄存 器的当前值b(步骤201);程序比较数值寄存器当前值b与需要要等待的时间a, 若b大于a则执行步骤203,否则执行步骤205(步骤202);程序设定一变量c 并初始化其值为b与a的和(步骤203);程序判断数值寄存器当前值b是否不小 于c,若是则重复执行本步骤,否则程序结束(步骤204);计时器计时开始,到 达时间后数值寄存器的值c的大小为e-(b-a),其中e为该计时器的最大计数值 (步骤205);程序判断数值寄存器当前值b是否不小于c,若是则重复执行本步 骤,否则继续执行步骤207 (步骤206);程序判断数值寄存器当前值b是否大于 c,若是则重复执行本步骤,否则程序结束(步骤207)。请参阅图3所示,为本专利技术所提供的第二实施 例的流程图;在本实施例中,该硬件计时器为一数值递增型的看门狗计时器 (Watchdog timer),该计时器可以从0开始以不变的速度递增,每递增一次该 .计时器数值加1,递增到一个预先设置好的最大计数值之后重新变回0计数。如图3所示,该延时方法包括以下步骤程序读取硬件计时器中数值寄存 器的当前值b(步骤301):程序比较数值寄存器当前值b与需要要等待的时间a 之和是否大于程序最大计数值e,若是则执行步骤303,否则执行步骤305(步骤 302);程序设定--变量c,并初始化其值为(b+a)-e,其中e为该计时器的最大 计数值(歩骤303);程序判断数值寄存器当前值b是否不大于c,若是则重复执 行本步骤,否则程序结束(步骤304);程序设定一变量c,并初始化其值为 (b+a)-e,其中e为该计时器的最大计数值(步骤305);程序判断数值寄存器当 前值b是否大于c,若是则重复执行本步骤,否则继续执行步骤307 (步骤306); 程序判断数值寄存器当前值b是否大于c,若是则重复执行本步骤,否则程序结 束(步骤307)。以上所述的本专利技术的两个实施例中,最大计数值e受该硬件计时器自身的 限制,若此计时器的时钟长度为i位,则此最大计数值可以为从0到2i中的任 意--个正整数(不包括2》,如在此二实施例中该看门狗计时器的时钟长度均为 16位,则此最大计数值为从0到65536中的任--个正整数(不包括65536),该 最大计数值可由用户在此范围内自行调整,且等待的时间a应不大于此最大计 数值,否则该计数器将出现溢出错误。且在以上二实施例中,所用到的变量a、 b均为--整型变量,且a的时间单位与计时器数值每变化(减小或增大)--次的时 间间隔(计时器的精度)是--致的,即若计时器的每1毫秒(ms)变化一次,则a 的时间单位也为毫秒,而该计时器的最小时间间隔也由用户自行调节,如可调节为l秒(s)或l微秒(HS)变化一次。以上二实施例中所述的硬件计时器均为一看门狗计时器,而在实际应用中, 具本文档来自技高网
...

【技术保护点】
一种基于硬件计时器的延时方法,该方法结合硬件计时器与存储于电脑中的程序来实现延时,且该计时器为一数值递减型计时器,其特征在于,该延时方法包括以下步骤:A.程序读取硬件计时器中数值寄存器的当前值b;B.程序比较数值寄存器当前值b与需要要等待的时间a,若b大于a则执行步骤C,否则执行步骤E;C.程序设定一变量c,并初始化其值为b-a;D.程序判断数值寄存器当前值b是否不小于c,若是则重复执行本步骤,否则程序结束,延时完成;E.程序设定一变量c,并初始化其值为e-(b-a),其中e为该计时器的最大计数值;F.程序判断数值寄存器当前值b是否不小于c,若是则重复执行本步骤,否则继续执行步骤G;G.程序判断数值寄存器当前值b是否大于c,若是则重复执行本步骤,否则程序结束,延时完成。

【技术特征摘要】
1. 一种基于硬件计时器的延时方法,该方法结合硬件计时器与存储于电脑中的程序来实现延时,且该计时器为一数值递减型计时器,其特征在于,该延时方法包括以下步骤A.程序读取硬件计时器中数值寄存器的当前值b;B.程序比较数值寄存器当前值b与需要要等待的时间a,若b大于a则执行步骤C,否则执行步骤E;C.程序设定一变量c,并初始化其值为b-a;D.程序判断数值寄存器当前值b是否不小于c,若是则重复执行本步骤,否则程序结束,延时完成;E.程序设定一变量c,并初始化其值为e-(b-a),其中e为该计时器的最大计数值;F.程序判断数值寄存器当前值b是否不小于c,若是则重复执行本步骤,否则继续执行步骤G;G.程序判断数值寄存器当前值b是否大于c,若是则重复执行本步骤,否则程序结束,延时完成。2. 如权利要求1所述的基于硬件计时器的延时方法,其特征在于该硬件 计时器为 -看门狗计时器。3. 如权利要求1所述的基于硬件计时器的延时方法,其特征在于该延时 方法中所用到的变量a、 b、 c及e均为一正整型变量。4. 如权利要求1所述的基于硬件计时器的延时方法,其特征在于该延时 方法中等待的时间a不大于计时器最大计数值e。5. 如权利要求1所述的基于硬件计时器的延时方法,其特征在于该延时 方法中等待的时间a的时间单位与该计时器每递减一次的时间间隔是--致的, 可为1毫秒或1微秒或1秒。6. 如权利要求1所述的基于硬件计时器的延时方法,其特征在于该硬件 计时器的最大计数值e受该硬件计数器时钟长度的限制,若硬件计数器时钟长 度为i,则e为从0到中的任意一个正整数(不包括2j)。7. 如权利要求1到6中任一项所述的基于硬件计时器的延时方法,其特征 在于该硬件计时器从最大计数值e开始以不变的速度递减,每次递减l,计时 器数值递减到0时重新从最大计数值e开始循环计数。8. —种基于硬件计时器的延时...

【专利技术属性】
技术研发人员:杨春妮臧东明王怀井
申请(专利权)人:环达电脑上海有限公司
类型:发明
国别省市:31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1