两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于硬件計時器的延時方法

文檔序號:6572285閱讀:833來源:國知局
專利名稱:基于硬件計時器的延時方法
基于硬件計時器的延時方法技術(shù)領(lǐng)域
本發(fā)明涉及一種延時方法,特別是一種基于硬件計時器的延時方法。背景技術(shù)
在對操作系統(tǒng)驅(qū)動軟件的開發(fā)過程中,經(jīng)常需要對硬件寄存器進行操作,比如對CPU的GPIO端口進行設(shè)置等,而驅(qū)動軟件對硬件的操作經(jīng)常需要硬件在 指定的時間執(zhí)行操作指令,所以在軟件開發(fā)中需要設(shè)置一延時程序來確保硬件 能夠正確及時地響應(yīng)軟件的操作指令。目前的延時方法大多通過一延時函數(shù)來完成,如圖1所示,在該延時函數(shù) 中,程序通過執(zhí)行若干次循環(huán)語句來達到延時的目的,包括以下步驟首先程 序判斷是否已達到預(yù)設(shè)的循環(huán)次數(shù)d,若是則結(jié)束,否則執(zhí)行步驟102 (步驟101); 程序判斷是否滿足條件A ,若滿足則執(zhí)行步驟103,否則執(zhí)行步驟104 (步驟102); 程序執(zhí)行m次循環(huán)后返回步驟101,每次循環(huán)執(zhí)行--調(diào)試指令(步驟103);程序 執(zhí)行n次循環(huán)后返回步驟101,每次循環(huán)執(zhí)行一調(diào)試指令(步驟104)。在該延時程序中,步驟101中的循環(huán)次數(shù)d及步驟103中的循環(huán)次數(shù)m和 步驟104中的循環(huán)次數(shù)n均為程序開發(fā)人員預(yù)先設(shè)定好的數(shù)值,可根據(jù)等待時 間的長短分別設(shè)定其為不同的數(shù)值,而步驟102中的條件A可為一條件編譯指 令。如此即可通過程序控制來達到延時的目的。然而,采用上述延時函數(shù)的方法適用性較差,對于不同的硬件和軟件環(huán)境 均需對其中的循環(huán)次數(shù)進行修改;以WinCE嵌入式操作系統(tǒng)為例,由于WinCE 操作系統(tǒng)為一多線程操作系統(tǒng),每個線程的優(yōu)先級將會直接影響該線程占有CPU 的時間,從而影響該延時函數(shù)的執(zhí)行時間,另外,CPU的頻率也會影響到每條軟 件指令的執(zhí)行時間;由此可知,采用如上所述的純軟件方式并不能準確實現(xiàn)延 時功能,其延遲時間會出現(xiàn)一定的誤差,從而可能會導(dǎo)致硬件不能正確及時地 響應(yīng)。
發(fā)明內(nèi)容鑒于以上問題,本發(fā)明提供一種基于硬件計時器的延時方法,采用軟件與 硬件結(jié)合的方式,以克服純軟件方式不能準確延時的缺陷。為實現(xiàn)上述目的,本發(fā)明所提供的基于硬件計時器的延時方法,該方法結(jié) 合硬件計時器與存儲于電腦中的程序?qū)崿F(xiàn)延時,該計時器為一數(shù)值遞減型計時 器,該延時方法包括以下步驟A. 程序讀取硬件計時器中數(shù)值寄存器的當前值b;B. 程序比較數(shù)值寄存器當前值b與需要要等待的時間a,若b大于a則執(zhí)行步理C,否則執(zhí)行步驟E:C. 程序設(shè)定一變Jtc,并初始化其值為b-a;D. 程序判斷數(shù)值寄存器當前值b是否不小于c,若是則重復(fù)執(zhí)行本步驟, 否則程序結(jié)束,延時完成E. 程序設(shè)定一變量c,并初始化其值為e-(b-a),其中e為該計時器的最 大計數(shù)值;F. 程序判斷數(shù)值寄存器當前值b是否不小于c,若是則重復(fù)執(zhí)行本步驟, 否則繼續(xù)執(zhí)行步據(jù)G;G. 程序判斷數(shù)值寄存器當前值b是否大于c,若是則重復(fù)執(zhí)行本步驟, 否則程序結(jié)束,延時完成。另外,本發(fā)明所提供的基于硬件計時器的延時方法,該方法結(jié)合硬件計時 器與存儲于電腦中的程序?qū)崿F(xiàn)延時,該計時器為一數(shù)值遞塌型計時器,該延時 方法包括以下步猓A. 程序讀取硬件計時器中數(shù)值寄存器的當前值b;B. 程序比較數(shù)值寄存器當前值b與需要要等待的時間a之和是否大于程 序最大計數(shù)值e,若是則執(zhí)行步驟E,否則執(zhí)行步驟C;C. 程序設(shè)定一變量c,并初始化其值為b+a:D. 程序判斷數(shù)值寄存器當前值b是否不大于c,若是則重復(fù)執(zhí)行本步驟, 否則程序結(jié)束,延時完成E. 程序設(shè)定一變量c,并初始化其值為(b+a)-e,其中e為該計時器的最 大計數(shù)值;F. 程序判斷數(shù)值寄存器當前值b是否大于c,若是則重復(fù)執(zhí)行本步驟, 否則繼續(xù)執(zhí)行步驟G;G. 程序判斷數(shù)值寄存器當前值b是否不小于c,若是則重復(fù)執(zhí)行本步驟, 否則程序結(jié)束,延時完成。與現(xiàn)有技術(shù)相比,本發(fā)明所提供的延時方法采用軟件控制與硬件計時器結(jié)延時更為準確,且本發(fā)明所提供的延時方法在軟件或硬件環(huán)境發(fā)性改時其延時 精度并不會戔到較大的影響,比純軟件實現(xiàn)的延時方法具有更強的通用性。
圖1為現(xiàn)有延時方法流程圖;圖2為本發(fā)明所提供的基于硬件計時器的延時方法第一實施例的流程圖豕 圖3為本發(fā)明所提供的基于硬件計時器的延時方法第二實施例的流程圖.具體實施方式為對本發(fā)明的工作流程有更進一步的了解,以下結(jié)合附圖進行詳細說明。 請參閱圖2所示,為本發(fā)明所提供的基于硬件計時器的延時方法第一實施例的流程圖;在本實施例中,該硬件計時器為一數(shù)值遞減型的看門狗計時器 (Watchdog timer),該計時器可以從一個預(yù)先設(shè)置好的最大計數(shù)值開始以不變的速度遞減,每遞減一次計時器數(shù)值減l,當減到0之后重新變回最大值循環(huán)計數(shù)。如圖2所示,該延時方法包括以下步驟程序讀取硬件計時器中數(shù)值寄存 器的當前值b(步驟201);程序比較數(shù)值寄存器當前值b與需要要等待的時間a, 若b大于a則執(zhí)行步驟203,否則執(zhí)行步驟205(步驟202);程序設(shè)定一變量c 并初始化其值為b與a的和(步驟203);程序判斷數(shù)值寄存器當前值b是否不小 于c,若是則重復(fù)執(zhí)行本步驟,否則程序結(jié)束(步驟204);計時器計時開始,到 達時間后數(shù)值寄存器的值c的大小為e-(b-a),其中e為該計時器的最大計數(shù)值 (步驟205);程序判斷數(shù)值寄存器當前值b是否不小于c,若是則重復(fù)執(zhí)行本步 驟,否則繼續(xù)執(zhí)行步驟207 (步驟206);程序判斷數(shù)值寄存器當前值b是否大于 c,若是則重復(fù)執(zhí)行本步驟,否則程序結(jié)束(步驟207)。請參閱圖3所示,為本發(fā)明所提供的基于硬件計時器的延時方法第二實施 例的流程圖;在本實施例中,該硬件計時器為一數(shù)值遞增型的看門狗計時器 (Watchdog timer),該計時器可以從0開始以不變的速度遞增,每遞增一次該 .計時器數(shù)值加1,遞增到一個預(yù)先設(shè)置好的最大計數(shù)值之后重新變回0計數(shù)。如圖3所示,該延時方法包括以下步驟程序讀取硬件計時器中數(shù)值寄存 器的當前值b(步驟301):程序比較數(shù)值寄存器當前值b與需要要等待的時間a 之和是否大于程序最大計數(shù)值e,若是則執(zhí)行步驟303,否則執(zhí)行步驟305(步驟 302);程序設(shè)定--變量c,并初始化其值為(b+a)-e,其中e為該計時器的最大 計數(shù)值(歩驟303);程序判斷數(shù)值寄存器當前值b是否不大于c,若是則重復(fù)執(zhí) 行本步驟,否則程序結(jié)束(步驟304);程序設(shè)定一變量c,并初始化其值為 (b+a)-e,其中e為該計時器的最大計數(shù)值(步驟305);程序判斷數(shù)值寄存器當 前值b是否大于c,若是則重復(fù)執(zhí)行本步驟,否則繼續(xù)執(zhí)行步驟307 (步驟306); 程序判斷數(shù)值寄存器當前值b是否大于c,若是則重復(fù)執(zhí)行本步驟,否則程序結(jié) 束(步驟307)。以上所述的本發(fā)明的兩個實施例中,最大計數(shù)值e受該硬件計時器自身的 限制,若此計時器的時鐘長度為i位,則此最大計數(shù)值可以為從0到2i中的任 意--個正整數(shù)(不包括2》,如在此二實施例中該看門狗計時器的時鐘長度均為 16位,則此最大計數(shù)值為從0到65536中的任--個正整數(shù)(不包括65536),該 最大計數(shù)值可由用戶在此范圍內(nèi)自行調(diào)整,且等待的時間a應(yīng)不大于此最大計 數(shù)值,否則該計數(shù)器將出現(xiàn)溢出錯誤。且在以上二實施例中,所用到的變量a、 b均為--整型變量,且a的時間單位與計時器數(shù)值每變化(減小或增大)--次的時 間間隔(計時器的精度)是--致的,即若計時器的每1毫秒(ms)變化一次,則a 的時間單位也為毫秒,而該計時器的最小時間間隔也由用戶自行調(diào)節(jié),如可調(diào)節(jié)為l秒(s)或l微秒(HS)變化一次。以上二實施例中所述的硬件計時器均為一看門狗計時器,而在實際應(yīng)用中, 具有同樣功能的計時器裝置均可做為本硬件計時器的實施例。由于硬件計時器的計時精度非常高(可以精確到1毫秒甚至1微秒),故本 發(fā)明提供的延時方法之延時亦非常準確,本發(fā)明采用軟件與硬件結(jié)合的方式, 使得本方法在不同的軟件及硬件環(huán)境中均可適用,故具有較好的推廣價值。
權(quán)利要求
1. 一種基于硬件計時器的延時方法,該方法結(jié)合硬件計時器與存儲于電腦中的程序來實現(xiàn)延時,且該計時器為一數(shù)值遞減型計時器,其特征在于,該延時方法包括以下步驟A.程序讀取硬件計時器中數(shù)值寄存器的當前值b;B.程序比較數(shù)值寄存器當前值b與需要要等待的時間a,若b大于a則執(zhí)行步驟C,否則執(zhí)行步驟E;C.程序設(shè)定一變量c,并初始化其值為b-a;D.程序判斷數(shù)值寄存器當前值b是否不小于c,若是則重復(fù)執(zhí)行本步驟,否則程序結(jié)束,延時完成;E.程序設(shè)定一變量c,并初始化其值為e-(b-a),其中e為該計時器的最大計數(shù)值;F.程序判斷數(shù)值寄存器當前值b是否不小于c,若是則重復(fù)執(zhí)行本步驟,否則繼續(xù)執(zhí)行步驟G;G.程序判斷數(shù)值寄存器當前值b是否大于c,若是則重復(fù)執(zhí)行本步驟,否則程序結(jié)束,延時完成。
2. 如權(quán)利要求1所述的基于硬件計時器的延時方法,其特征在于該硬件 計時器為 -看門狗計時器。
3. 如權(quán)利要求1所述的基于硬件計時器的延時方法,其特征在于該延時 方法中所用到的變量a、 b、 c及e均為一正整型變量。
4. 如權(quán)利要求1所述的基于硬件計時器的延時方法,其特征在于該延時 方法中等待的時間a不大于計時器最大計數(shù)值e。
5. 如權(quán)利要求1所述的基于硬件計時器的延時方法,其特征在于該延時 方法中等待的時間a的時間單位與該計時器每遞減一次的時間間隔是--致的, 可為1毫秒或1微秒或1秒。
6. 如權(quán)利要求1所述的基于硬件計時器的延時方法,其特征在于該硬件 計時器的最大計數(shù)值e受該硬件計數(shù)器時鐘長度的限制,若硬件計數(shù)器時鐘長 度為i,則e為從0到中的任意一個正整數(shù)(不包括2j)。
7. 如權(quán)利要求1到6中任一項所述的基于硬件計時器的延時方法,其特征 在于該硬件計時器從最大計數(shù)值e開始以不變的速度遞減,每次遞減l,計時 器數(shù)值遞減到0時重新從最大計數(shù)值e開始循環(huán)計數(shù)。
8. —種基于硬件計時器的延時方法,該方法結(jié)合硬件計時器與存儲于電腦 中的程序?qū)崿F(xiàn)延時,且該計時器為--數(shù)值遞增型計時器,其特征在于,該延時 方法包括以下步驟A. 程序讀取硬件計時器中數(shù)值寄存器的當前值b;B. 程序比較數(shù)值寄存器當前值b與需要要等待的時間a之和是否大于程 序最大計數(shù)值e,若是則執(zhí)行步驟E,否則執(zhí)行步驟C;C. 程序設(shè)定一變量c,并初始化其值為b+a;D. 程序判斷數(shù)值寄存器當前值b是否不大于c,若是則重復(fù)執(zhí)行本步驟,否則程序結(jié)束,延時完成;E. 程序設(shè)定一變量c,并初始化其值為(b+a)-e,其中e為該計時器的最大計數(shù)值;F. 程序判斷數(shù)值寄存器當前值b是否大于c,若是則重復(fù)執(zhí)行本步驟, 否則繼續(xù)執(zhí)行步驟G;G. 程序判斷數(shù)值寄存器當前值b是否不小于c,若是則重復(fù)執(zhí)行本步驟, 否則程序結(jié)束,延時完成。
9. 如權(quán)利要求8所述的基于硬件計時器的延時方法,其特征在于該硬件 計時器為一看門狗計時器。
10. 如權(quán)利要求8所述的基于硬件計時器的延時方法,其特征在于該延 時方法中所用到的變量a、 b、 c及e均為一正整型變量。
11. 如權(quán)利要求8所述的基于硬件計時器的延時方法,其特征在于該延時 方法中等待的時間a不大于計時器最大計數(shù)時e。
12. 如權(quán)利要求8所述的基于硬件計時器的延時方法,其特征在于該延時 方法中等待的時間a的時間單位與該計時器每遞增一次的時間間隔是一致的, 可為1毫秒或1微秒或1秒。
13. 如權(quán)利要求8所述的基于硬件計時器的延時方法,其特征在于該硬件 計時器的最大計數(shù)值e受該硬件計數(shù)器時鐘長度的限制,若硬件計數(shù)器時鐘長 度為i,則e為從0到2j中的任意一個正整數(shù)(不包括2j)。
14. 如權(quán)利要求8到13中任一項所述的基于硬件計時器的延時方法,其特 征在于該硬件計時器從O開始以不變的速度遞增,每次遞增l,計時器數(shù)值遞 增到最在計數(shù)值e時重新從最大計數(shù)值0開始循環(huán)計數(shù)。
全文摘要
一種基于硬件計時器的延時方法,該方法結(jié)合硬件計時器與存儲于電腦中的程序?qū)崿F(xiàn)延時,該計時器為一數(shù)值遞減型計時器或一數(shù)值遞增型計時器,該延時方法通過程序讀取當前計時器數(shù)值并判斷當前計時器數(shù)值是否到達等待時間以達到延時的目的;本延時方法采用軟件控制與硬件計時結(jié)合的方式,依靠硬件計時的精確性及軟件控制的靈活性實現(xiàn)精確延時,且本發(fā)明所提供的延時方法在硬件或軟件環(huán)境發(fā)生改變時,其延時精度并不會受較大的影響,具有較強的適應(yīng)性。
文檔編號G06F9/44GK101236514SQ20071003706
公開日2008年8月6日 申請日期2007年2月1日 優(yōu)先權(quán)日2007年2月1日
發(fā)明者楊春妮, 王懷井, 臧東明 申請人:環(huán)達電腦(上海)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
长宁县| 泰兴市| 明溪县| 七台河市| 怀来县| 乌鲁木齐县| 德化县| 平昌县| 泌阳县| 广南县| 巴彦淖尔市| 南溪县| 台南县| 新邵县| 盐边县| 珲春市| 四会市| 鸡东县| 翼城县| 滨海县| 偃师市| 新乐市| 延庆县| 博客| 武宣县| 宾川县| 定西市| 太湖县| 五常市| 西藏| 灵璧县| 宜兴市| 鄂托克前旗| 扎兰屯市| 广水市| 尉氏县| 西畴县| 朔州市| 武鸣县| 石楼县| 山阳县|