我动态开辟了一个定时器,由于需要在系统运行的时候更改定时器的超时时间,所以设计了下面的函数
void PollingTimerInit(void)
{
static rt_timer_t timer;
if (timer != RT_NULL)
{
rt_timer_control(timer, RT_TIMER_CTRL_SET_TIME, (void*)(g_configParam.pollingtime100060/(1000/RT_TIMER_TICK_PER_SECOND)));
return;
}
/* 若巡检时间为0,则默认关闭定时巡检功能 /
if(g_configParam.pollingtime == 0)
{
return;
}
/ 巡检定时器创建,缺省1800tick, 3S /
timer = rt_timer_create("timPolling",
timPolling,
RT_NULL,
g_configParam.pollingtime100060/(1000/RT_TIMER_TICK_PER_SECOND),
RT_TIMER_FLAG_PERIODIC | RT_TIMER_FLAG_SOFT_TIMER // modified by wangt120723 将硬件定时变成软件定时
);
RT_ASSERT(timer != RT_NULL);
/ 启动巡检计时 */
rt_timer_start(timer);
}
若要更改定时器超时时间,则还调用此函数,这时rt_timer_control会被执行,但是现在的问题执行完rt_timer_control后得到的不是我设置的时间,超时时间根本不对,我的RT_TIMER_TICK_PER_SECOND为1000
请问我问题出在那里,多谢帮助,不胜感激!!
更多回帖