一種高效定時(shí)器模塊的設計與實(shí)現
軟件定時(shí)器只有在有嘀嗒發(fā)生且自身狀態(tài)為RUNNING的情況下才會(huì )運行,其計時(shí)時(shí)間-duration隨嘀嗒而累加,如果duration達到超時(shí)值,則置overow_ag,然后判斷該定時(shí)器是否周期定時(shí)器,是則重啟定時(shí)-清零duration,否則判斷是否多次定時(shí),定時(shí)次數計數未滿(mǎn)則重啟定時(shí),計數滿(mǎn)后停止該定時(shí)器。
本文引用地址:http://dyxdggzs.com/article/118088.htm定時(shí)器應用
定時(shí)器模塊在軟件系統中是一個(gè)基本功能單元,它為其他模塊或上層應用提供超時(shí)、計時(shí)服務(wù)[5]。以門(mén)鎖的驅動(dòng)為例講述下定時(shí)器的應用。
在門(mén)鎖閉鎖時(shí),BCM對門(mén)鎖電機的閉鎖驅動(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;
}
...
可見(jiàn),在設計良好的定時(shí)器驅動(dòng)以后,實(shí)現某種定時(shí)應用非常簡(jiǎn)單,其他應用示例在此不再贅述。
結語(yǔ)
本文設計的定時(shí)器模塊,邏輯清晰,使用方便,做為一個(gè)穩定的底層驅動(dòng),在實(shí)際應用中得到了很好的應用。
評論