#include "os_timer.h" unsigned short osTime_MSecTick = 0; /*滴答时钟*/ unsigned short osTime_SecTick = 0; unsigned short osTime_10SecTick = 0; /*10s记一次 用于自动调零周期时间记录*/ static unsigned short osTimer_MSec1 = 0; static unsigned short osTimer_MSec2 = 0; unsigned short OsTimeTick_10ms; unsigned short OsTimeTick_50ms; unsigned short OsTimeTick_100ms; unsigned short OsTimeTick_200ms; unsigned short OsTimeTick_500ms; unsigned short OsTimeTick_1s; unsigned short OsTimeTick_2s; /**************************************************************************** * NAME: OsTimer_Init * CALLED BY: Application * PRECONDITIONS: * INPUT PARAMETERS: None * RETURN VALUES: None * DESCRIPTION: OsTimer initialization * ****************************************************************************/ void OsTimer_Init(void) { osTimer_MSec1 = 0; osTimer_MSec2 = 0; osTime_SecTick = 0; osTime_MSecTick = 0; OsTimeTick_10ms = osTime_MSecTick; OsTimeTick_50ms = osTime_MSecTick; OsTimeTick_100ms = osTime_MSecTick; OsTimeTick_200ms = osTime_MSecTick; OsTimeTick_500ms = osTime_MSecTick; OsTimeTick_1s = osTime_MSecTick; } /**************************************************************************** * NAME: OsTimer_Increment * CALLED BY: ISR * PRECONDITIONS: * INPUT PARAMETERS: msec - millisecond to increase * RETURN VALUES: None * DESCRIPTION: Increase the Timer * ****************************************************************************/ void OsTimer_Increment(unsigned short msec) { osTime_MSecTick += msec; osTimer_MSec1 += msec; osTimer_MSec2 += msec; if (osTimer_MSec1 >= 1000U) /*1s*/ { osTimer_MSec1 = 0U; osTime_SecTick++; } if (osTimer_MSec2 >= 10000U) /*10s*/ { osTimer_MSec2 = 0U; osTime_10SecTick++; } } /**************************************************************************** * NAME: OsTimer_CheckTimeOut * CALLED BY: Application * PRECONDITIONS: * INPUT PARAMETERS: timeStart - start tick * timeNow - current tick * timeOut - expired tick * RETURN VALUES: whether timer is expired * DESCRIPTION: check if specified time is expired * ****************************************************************************/ unsigned char OsTimer_CheckTimeOut(unsigned short timeStart, unsigned short timeNow, unsigned short timeOut) { unsigned short timerActivateVal; timerActivateVal = timeOut + timeStart; if (timerActivateVal > timeStart) { if ((timeNow >= timerActivateVal) || (timeNow < timeStart)) { return TIME_TRUE; } } else if ((timeNow >= timerActivateVal) && (timeNow < timeStart)) { return TIME_TRUE; } return TIME_FALSE; } /* 离结束运行还有多少时间 配合OsTimer_CheckTimeOut函数使用 */ unsigned short OsTimer_CheckRunTime(unsigned short timeStart, unsigned short timeNow, unsigned short timeOut) { unsigned short timerActivateVal; timerActivateVal = timeOut + timeStart; if (timerActivateVal > timeStart) { return (timerActivateVal - timeNow); } else { return (65535U - timeNow + timerActivateVal); } } /*阻塞式延时*/ void Delay_ms(unsigned short delay) { HAL_Delay(delay); }