Timer.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536
  1. /********************************************************************************
  2. * File Name: Timer.h
  3. *******************************************************************************/
  4. #ifndef __TIMER_H
  5. #define __TIMER_H
  6. /******************************file start******************************************/
  7. #include "./pt/pt-timer.h"
  8. /*------------------------------------------------------------------
  9. -----关于软定时器-------
  10. 软定时器是基于一个硬定时器(如Timer2)基础上结合pt-timer实现拓展的定时器。
  11. 首先定义一个全局的一个定时器池 PoolTimer
  12. 然后调用STimerInit 对这个定时器池进行初始化,并对硬件定时器Timer2初始化。
  13. 硬定时器Timer2设定中断间隔为1ms,在中断函数内调用PTTimerTick(&PoolTimer);从而实现对软定时器的定时池内的各个软定时器计数
  14. 实际应用时,首次先调用一次用STimerInit
  15. 后续在应用层需要使用软定时器时,可以如下使用:
  16. 1、先定义一个全局变量(或静态变量)timer_t timer
  17. 2、再调用STimerStart(&timer,ms) 启动这个软定时器,定时周期ms毫秒。
  18. 3、最后调STimerIsExpired(&timer)判断时间是否到。
  19. 如果仅仅需要做一段时间的延时,也可以直接调用STimerDelayMs(ms) 这个延时函数内部共用了一个静态的timer_t timer 每次调用都会阻塞ms时间。
  20. 在多任务系统中需要注意不要在不同的任务中调用这个用STimerDelayMs(ms)实现延时,否则会导致时间错乱。
  21. --------------------------------------------------------------------*/
  22. void STimerInit(void);//软定时器初始化
  23. void STimerStart(pt_timer_t *timer, uint16_t ms);//启动一个软定时器
  24. void STimerReStart(pt_timer_t *timer, uint16_t ms);//重启一个软定时器
  25. boolean STimerIsExpired(pt_timer_t *timer);//判断软定时器时间是都到
  26. void STimerDelayMs(unsigned short ms);//用软定时器实现定时一段延时ms毫秒
  27. void Timer2_Init(unsigned short arr);
  28. void Timer2_enable( void );
  29. /*******************************file end********************************************/
  30. #endif
  31. /*******************************************************************************/