简单定时器
*************************/
#include "simplesofttime.h"
#include "common.h"
long m35overtime[ST_IDX_MAX];
void Init_SimpeTime(void)
{
ST_IDX i;
for(i=ST_M35_OV;i<ST_IDX_MAX;i++)
{
KillSimpleTime(i);
}
}
void SetM35OverTime(ST_IDX idx, long overtime)
{
if(idx>=ST_IDX_MAX)
{
while(1);
}
m35overtime[idx]=overtime/(1000/HZ);
}
//返回1表示超时了
int GetM35OvTime(ST_IDX idx)
{
if(m35overtime[idx]<0)
return 1;
return 0;
}
//这里只能简单的"杀掉"这个定时器
void KillSimpleTime(ST_IDX idx)
{
if(idx>=ST_IDX_MAX)
{
while(1);
}
m35overtime[idx]=((1ul<<31)-1); //2147483647*5ms=10737418s/3600=2982h/24=124day
}
/* 该函数5ms调用一次 */
void ScheduleSimpleTimer(void)
{
ST_IDX i;
for(i=ST_M35_OV;i<ST_IDX_MAX;i++)
{
m35overtime[ i]--;
}
}
//1天调用一次
void LongTimeRun(void)
{
ST_IDX i;
for(i=ST_M35_OV;i<ST_IDX_MAX;i++)
{
if(m35overtime[ i]>1e9)
{
m35overtime[ i]=((1ul<<31)-1);
}
}
}
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |