一种高效定时器模块的设计与实现

时间:2011-03-25来源:电子产品世界

  软件定时器只有在有嘀嗒发生且自身状态为RUNNING的情况下才会运行,其计时时间-duration随嘀嗒而累加,如果duration达到超时值,则置overow_ag,然后判断该定时器是否周期定时器,是则重启定时-清零duration,否则判断是否多次定时,定时次数计数未满则重启定时,计数满后停止该定时器。

  定时器应用

  定时器模块在软件系统中是一个基本功能单元,它为其他模块或上层应用提供超时、计时服务[5]。以门锁的驱动为例讲述下定时器的应用。

  在门锁闭锁时,BCM对门锁电机的闭锁驱动控制需要保持200ms的时间,在逻辑上便是输出一个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;

  }

  ...

  可见,在设计良好的定时器驱动以后,实现某种定时应用非常简单,其他应用示例在此不再赘述。

  结语

  本文设计的定时器模块,逻辑清晰,使用方便,做为一个稳定的底层驱动,在实际应用中得到了很好的应用。

1 2 3 4

关键词: 定时器模块 驱动程序 201103

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版