Files
Leakage-Control/calib_board/usr/app/os_timer.c
2026-01-22 19:24:33 +08:00

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);
}