設置和使用硬件定時器的方法以及裝置的制造方法
【技術領域】
[0001] 本發(fā)明設及數(shù)字電路領域,特別是指一種設置和使用硬件定時器的方法W及裝 置。
【背景技術】
[0002] 對于現(xiàn)有的數(shù)字電路系統(tǒng)的設計,CPU(CentralProcessing化it,中央處理 器KMClKMicrocontrollerUnit,微控制單元)、DSP值igitalSi即alProcess,即數(shù)字 信號處理技術)忍片、FPGA(Field-Programm油leGateArray,現(xiàn)場可編程口陣列)、 CPLD(ComplexProgramm油leLogicDevice,復雜可編程邏輯器件)等是非常常用的主處 理器,而在運些主處理器中,除了中央處理器核之外,還會集成很多常用的硬件模塊,而硬 件定時器由于其地位的重要性,在每個處理器中都有集成,少則集成一個硬件定時器,多則 集成四至五個硬件定時器。
[0003] 硬件定時器顧名思義是被用來計時間的,由于其計時準確,使用方便,在軟件編程 中被廣泛的應用,并且是一個不可或缺的部分。
[0004] 硬件定時器內(nèi)部都設有一個或多個計數(shù)寄存器和一個或多個比較寄存器,硬件定 時器都會有一個工作時鐘,其頻率計為H;設定時時間為T,在定時開始前,將比較寄存器的 值設為N,將計數(shù)寄存器的初值設為COUNT;在定時開始后,每一個時鐘,計數(shù)寄存器的都會 變化一個值,或加1,或減1。當計數(shù)寄存器的實時值C0UNT_REAL與比較寄存器的值N相 等的時候,表示定時時間到,此時硬件定時器就會設置一個中斷標記,當硬件定時器中斷功 能被使能的時候,就會觸發(fā)一個中斷。該中斷標記存儲在某個特定的寄存器中,應用程序 通過判斷該寄存器中是否有中斷標記來判斷定時時間是否達到,從而進行后續(xù)的工作,后 續(xù)工作完成后清除中斷標記。在下一個時鐘到來的時候,計數(shù)寄存器中的值自動回到初值 COUNT,為下次定時做準備。 陽0化]現(xiàn)有技術對定硬件時器的使用如圖1和圖2所示;圖1中,在硬件定時器定時時, 應用軟件不執(zhí)行任何動作,表示應用軟件等待一段時間后再進行后續(xù)的工作;圖2中在硬 件定時器定時時,應用軟件進行相關操作,直到定時完畢后再進行其他的工作?,F(xiàn)有技術存 在如下問題:
[0006] 一、對硬件定時器的利用效率不高:一個硬件定時器僅僅被用在一個應用場景中, 而主處理器內(nèi)部的硬件定時器的數(shù)量是有限制的,當有多種應用場景的時候,就會造成硬 件定時器不夠用的問題;
[0007] 二、并行使用性差:某一個硬件定時器,如果在某一個地方正在被使用,那么此時 該硬件定時器就不能在其它地方再被使用;尤其是在多進程、多線程編程中,運種問題表現(xiàn) 的更為突出。
[0008] =、應用范圍窄:硬件定時器的應用只是局限在定時、計數(shù)的功能上,沒有任何的 擴展應用。
【發(fā)明內(nèi)容】
[0009] 本發(fā)明提供一種設置和使用硬件定時器的方法W及裝置,該方法能夠提高對硬件 定時器的使用效率,使硬件定時器的并行使用性好,并且拓寬了硬件定時器的適用范圍,降 低了系統(tǒng)的功耗。 陽010] 為解決上述技術問題,本發(fā)明提供技術方案如下:
[0011] 一種設置硬件定時器的方法,包括:
[0012] 步驟S101 :確定定時時間,設定所述硬件定時器的計數(shù)寄存器的初值W及比較寄 存器的值;
[0013] 步驟S102 :啟動所述硬件定時器,開始定時,若定時時間到,計數(shù)寄存器恢復到初 值,重新開始定時;
[0014] 步驟S103 :每次定時時間到時,同時執(zhí)行定時器中斷處理函數(shù),使第一計數(shù)變量 F1自加或自減。
[0015] 一種使用硬件定時器的方法,包括:
[0016] 步驟S501 :在開始使用所述硬件定時器時,得到所述硬件定時器此時的總工作時 間,記為Time_total_l ;
[0017] 步驟S502 :在開始使用所述硬件定時器后,實時讀取所述硬件定時器當前的總工 作時間,記為Time_total_2 ;
[0018] 步驟S503 :判斷ITime_total_l-Time_total_2I是否等于設定時間,若是,結束, 否則,轉至步驟S502。
[0019] 一種設置硬件定時器的裝置,包括:
[0020] 設定模塊,用于確定定時時間,設定所述硬件定時器的計數(shù)寄存器的初值W及比 較寄存器的值;
[0021] 定時模塊,用于啟動所述硬件定時器,開始定時,若定時時間到,計數(shù)寄存器恢復 到初值,重新開始定時;
[0022] 中斷模塊,用于每次定時時間到時,同時執(zhí)行定時器中斷處理函數(shù),使第一計數(shù)變 量F1自加或自減。
[0023] 一種使用硬件定時器的裝置,包括:
[0024] 第一獲取模塊,用于在開始使用所述硬件定時器時,得到所述硬件定時器此時的 總工作時間,記為Time_total_l ;
[00巧]第二獲取模塊,用于在開始使用所述硬件定時器后,實時讀取所述硬件定時器當 前的總工作時間,記為Time_total_2 ;
[00%] 第二判斷模塊,用于判斷ITime_total_l-Time_total_2I是否等于設定時間,若 是,結束,否則,轉至第二獲取模塊。
[0027] 本發(fā)明具有W下有益效果:
[0028] 本發(fā)明的設置硬件定時器的方法中,首先設定硬件定時器的定時時間,然后啟動 硬件定時器,開始定時,當定時時間到后,自動重新開始定時,如此循環(huán)執(zhí)行;并且每次定時 時間到后,都執(zhí)行一次定時器中斷處理函數(shù),使第一計數(shù)變量F1自加或自減。運樣,通過第 一計數(shù)變量F1計數(shù)硬件定時器循環(huán)的次數(shù),通過各個參數(shù)即可計算出硬件定時器當前的 總工作時間Time_total,從而為各個應用程序W及其中的各個應用場景提供定時功能。
[0029] 與現(xiàn)有技術相比,本發(fā)明的設置硬件定時器的方法只需要一個硬件定時器在循環(huán) 定時,各個應用程序在需要完成定時操作時,就可W在定時操作開始時得到硬件定時器的 總工作時間,記為Time_total_l,然后執(zhí)行相關操作,當然運個操作可W不存在,在需要判 斷定時操作的地方得到硬件定時器當前的總工作時間,記為Time_total_2,兩者之差即可 計算出定時操作的時間。如此,一個硬件定時器可W被用在多個應用場景中,提高了對硬件 定時器的使用效率;并且當該硬件定時器在某一個地方正在被使用時,也能在其它地方再 被使用,并行使用性好。
[0030] 另外,由于該硬件定時器一直在不間斷的循環(huán)定時,并通過第一計數(shù)變量F1計算 循環(huán)次數(shù),如果設備或系統(tǒng)被設置了一個啟示時間,那么就可啟示時間為基點,通過 Time_total計算出當前的時間。故可W將該硬件定時器作為實時時鐘使用,拓寬了硬件定 時器的適用范圍。
[0031] 再者,由于一個硬件定時器已經(jīng)能滿足應用的需要,其余的硬件定時器就不需要 再使用,關閉運些硬件定時器,在一定程度上將降低系統(tǒng)的功耗。
[0032] 故本發(fā)明的設置硬件定時器的方法能夠提高對硬件定時器的使用效率,使硬件定 時器的并行使用性好,并且拓寬了硬件定時器的適用范圍,降低了系統(tǒng)的功耗。
【附圖說明】
[0033] 圖1為現(xiàn)有技術中使用硬件定時器的方法流程圖一;
[0034] 圖2為現(xiàn)有技術中使用硬件定時器的方法流程圖二;
[0035] 圖3為本發(fā)明的設置硬件定時器的方法流程圖一;
[0036] 圖4為本發(fā)明的設置硬件定時器的方法流程圖二;
[0037] 圖5為本發(fā)明的使用硬件定時器的方法流程圖;
[0038] 圖6為本發(fā)明的設置硬件定時器的裝置結構圖一;
[0039] 圖7為本發(fā)明的設置硬件定時器的裝置結構圖二;
[0040] 圖8為本發(fā)明的使用硬件定時器的裝置結構圖。
【具體實施方式】
[0041] 為使本發(fā)明要解決的技術問題、技術方案和優(yōu)點更加清楚,下面將結合附圖及具 體實施例進行詳細描述。
[0042] 本發(fā)明提供一種設置硬件定時器的方法,如圖3所示,包括:
[0043] 步驟S101 :確定定時時間,設定硬件定時器的計數(shù)寄存器的初值W及比較寄存器 的值;
[0044] 通過設定硬件定時器的計數(shù)寄存器的初值COUNTW及比較寄存器的值N來設定定 時時間;此時需要設置定時時間到中斷使能;
[0045] 步驟