|
使用的是V5的UCOSIII程序,#define OS_CFG_TMR_TASK_RATE_HZ 10u ,定时器分辨率为100ms
OS_TMR Out_Tmr;
void OutCallback (OS_TMR *p_tmr, void *p_arg)
{
Soft_Timer_Out_Flag=ECO_TRUE;
}
unsigned char Timer_Create(void)
{
// 10 Hz,定时5s
OS_ERR Err;
OSTmrCreate(&Out_Tmr, "Bms", 1, 50, OS_OPT_TMR_ONE_SHOT, OutCallback, (void*)0, &Err);
if(OS_ERR_NONE==Err)
return ECO_TRUE;
else
return ECO_FALSE;
}
unsigned char Timer_Start(void)
{
OS_ERR Err;
OSTmrStart(&Out_Tmr, &Err);
if(OS_ERR_NONE==Err)
return ECO_TRUE;
else
return ECO_FALSE;
}
tPruint8 Timer_Stop(void)
{
OS_ERR Err;
OSTmrStop(&Out_Tmr, OS_OPT_TMR_NONE, NULL, &Err);
if(OS_ERR_NONE==Err)
return ECO_TRUE;
else
return ECO_FALSE;
}
定时器创建和启动都没有问题(定时5s),但启动之后很快(大约在几ms)就进入超时回调函数,即使把定时时间定时为500,也在100ms内调用超时回调函数。
这是什么原因导致的呢? |
|