提交 39ff7577 编写于 作者: B bernard.xiong

fix timer re-start issue if stop a timer in itself timeout_func.


git-svn-id: https://rt-thread.googlecode.com/svn/trunk@107 bbd45198-f89e-11dd-88c7-29a3b14d5316
上级 597015a3
......@@ -270,6 +270,9 @@ rt_err_t rt_timer_stop(rt_timer_t timer)
/* disable interrupt */
level = rt_hw_interrupt_disable();
/* change stat */
timer->parent.flag &= ~RT_TIMER_FLAG_ACTIVATED;
/* remove it from timer list */
rt_list_remove(&(timer->list));
......@@ -361,14 +364,18 @@ void rt_timer_check()
rt_kprintf("current tick: %d\n", current_tick);
#endif
/* change timer state */
t->parent.flag &= ~RT_TIMER_FLAG_ACTIVATED;
if (t->parent.flag & RT_TIMER_FLAG_PERIODIC)
if ((t->parent.flag & RT_TIMER_FLAG_PERIODIC) &&
(t->parent.flag & RT_TIMER_FLAG_ACTIVATED))
{
/* start it */
t->parent.flag &= ~RT_TIMER_FLAG_ACTIVATED;
rt_timer_start(t);
}
else
{
/* stop timer */
t->parent.flag &= ~RT_TIMER_FLAG_ACTIVATED;
}
}
else break;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册