From 2bbb27c29c1693fe48b250bf1cc7231e1e793e3b Mon Sep 17 00:00:00 2001 From: tangyuxin <462747508@qq.com> Date: Tue, 6 Mar 2018 10:38:35 +0800 Subject: [drivers]修复定时器驱动框架单次长时间定时不准确的问题 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/drivers/hwtimer/hwtimer.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'components/drivers') diff --git a/components/drivers/hwtimer/hwtimer.c b/components/drivers/hwtimer/hwtimer.c index bbe50aa2f7..066c5f6f6c 100644 --- a/components/drivers/hwtimer/hwtimer.c +++ b/components/drivers/hwtimer/hwtimer.c @@ -192,14 +192,15 @@ static rt_size_t rt_hwtimer_write(struct rt_device *dev, rt_off_t pos, const voi if (size != sizeof(rt_hwtimerval_t)) return 0; + timer->ops->stop(timer); + timer->overflow = 0; + + t = timeout_calc(timer, (rt_hwtimerval_t*)buffer); if ((timer->cycles <= 1) && (timer->mode == HWTIMER_MODE_ONESHOT)) { opm = HWTIMER_MODE_ONESHOT; } - timer->ops->stop(timer); - timer->overflow = 0; - t = timeout_calc(timer, (rt_hwtimerval_t*)buffer); if (timer->ops->start(timer, t, opm) != RT_EOK) size = 0; -- cgit v1.3.1