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