122 lines
3.2 KiB
C
122 lines
3.2 KiB
C
#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);
|
|
}
|