From 4c1c6ef4e40615492395ab18307f516803875e5a Mon Sep 17 00:00:00 2001 From: zhkag Date: Fri, 24 Feb 2023 13:59:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=85=B3=E4=B8=AD=E6=96=AD?= =?UTF-8?q?=E6=97=B6=E8=BF=9B=E8=A1=8C=E4=BA=86=E8=B0=83=E5=BA=A6=E6=93=8D?= =?UTF-8?q?=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/drivers/cputime/cputimer.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/components/drivers/cputime/cputimer.c b/components/drivers/cputime/cputimer.c index 27e64a1354..12be40356e 100644 --- a/components/drivers/cputime/cputimer.c +++ b/components/drivers/cputime/cputimer.c @@ -337,6 +337,8 @@ rt_err_t rt_cputime_sleep(rt_uint64_t tick) /* current context checking */ RT_DEBUG_SCHEDULER_AVAILABLE(RT_TRUE); + rt_cputimer_init(&cputimer, "cputime_sleep", _cputime_sleep_timeout, thread, 0, RT_TIMER_FLAG_ONE_SHOT | RT_TIMER_FLAG_SOFT_TIMER); + /* disable interrupt */ level = rt_hw_interrupt_disable(); @@ -349,7 +351,6 @@ rt_err_t rt_cputime_sleep(rt_uint64_t tick) /* reset the timeout of thread timer and start it */ if (err == RT_EOK) { - rt_cputimer_init(&cputimer, "cputime_sleep", _cputime_sleep_timeout, thread, 0, RT_TIMER_FLAG_ONE_SHOT | RT_TIMER_FLAG_SOFT_TIMER); rt_cputimer_control(&cputimer, RT_TIMER_CTRL_SET_TIME, &tick); rt_cputimer_start(&cputimer); @@ -359,7 +360,6 @@ rt_err_t rt_cputime_sleep(rt_uint64_t tick) thread->error = -RT_EINTR; rt_schedule(); - rt_cputimer_detach(&cputimer); if (thread->error == -RT_ETIMEOUT) thread->error = RT_EOK; } @@ -368,6 +368,7 @@ rt_err_t rt_cputime_sleep(rt_uint64_t tick) rt_hw_interrupt_enable(level); } + rt_cputimer_detach(&cputimer); return err; }