一種高效定時(shí)器模塊的設(shè)計(jì)與實(shí)現(xiàn)
軟件定時(shí)器只有在有嘀嗒發(fā)生且自身狀態(tài)為RUNNING的情況下才會運(yùn)行,其計(jì)時(shí)時(shí)間-duration隨嘀嗒而累加,如果duration達(dá)到超時(shí)值,則置overow_ag,然后判斷該定時(shí)器是否周期定時(shí)器,是則重啟定時(shí)-清零duration,否則判斷是否多次定時(shí),定時(shí)次數(shù)計(jì)數(shù)未滿則重啟定時(shí),計(jì)數(shù)滿后停止該定時(shí)器。
本文引用地址:http://www.ex-cimer.com/article/118088.htm定時(shí)器應(yīng)用
定時(shí)器模塊在軟件系統(tǒng)中是一個(gè)基本功能單元,它為其他模塊或上層應(yīng)用提供超時(shí)、計(jì)時(shí)服務(wù)[5]。以門鎖的驅(qū)動(dòng)為例講述下定時(shí)器的應(yīng)用。
在門鎖閉鎖時(shí),BCM對門鎖電機(jī)的閉鎖驅(qū)動(dòng)控制需要保持200ms的時(shí)間,在邏輯上便是輸出一個(gè)200ms的控制脈沖,該部分代碼如下:
...
DrivePort(ALLDR_LK_OUT,DRIVEON);
TimerStart(ALLDR_LOCK_200MS,200,0,1);
if(1==TM[ALLDR_LOCK_200MS].overow_ag)
{
DrivePort(ALLDR_LK_OUT,DRIVEOFF);
TM[ALLDR_LOCK_200MS].overow_ag=0;
}
...
可見,在設(shè)計(jì)良好的定時(shí)器驅(qū)動(dòng)以后,實(shí)現(xiàn)某種定時(shí)應(yīng)用非常簡單,其他應(yīng)用示例在此不再贅述。
結(jié)語
本文設(shè)計(jì)的定時(shí)器模塊,邏輯清晰,使用方便,做為一個(gè)穩(wěn)定的底層驅(qū)動(dòng),在實(shí)際應(yīng)用中得到了很好的應(yīng)用。
評論