File tree Expand file tree Collapse file tree 1 file changed +5
-6
lines changed
Expand file tree Collapse file tree 1 file changed +5
-6
lines changed Original file line number Diff line number Diff line change 3535 * 2023-09-15 xqyjlj perf rt_hw_interrupt_disable/enable
3636 * 2023-12-10 xqyjlj fix thread_exit/detach/delete
3737 * fix rt_thread_delay
38- * 2025-06-01 htl5241 fix timer overflow
3938 */
4039
4140#include <rthw.h>
@@ -693,6 +692,7 @@ RTM_EXPORT(rt_thread_delay);
693692rt_err_t rt_thread_delay_until (rt_tick_t * tick , rt_tick_t inc_tick )
694693{
695694 struct rt_thread * thread ;
695+ rt_tick_t cur_tick ;
696696 rt_base_t critical_level ;
697697
698698 RT_ASSERT (tick != RT_NULL );
@@ -708,14 +708,13 @@ rt_err_t rt_thread_delay_until(rt_tick_t *tick, rt_tick_t inc_tick)
708708 /* disable interrupt */
709709 critical_level = rt_enter_critical ();
710710
711- if (rt_tick_get_delta (* tick ) < inc_tick )
711+ cur_tick = rt_tick_get ();
712+ if (cur_tick - * tick < inc_tick )
712713 {
713714 rt_tick_t left_tick ;
714715
715716 * tick += inc_tick ;
716- left_tick = * tick - rt_tick_get ();
717- if (left_tick > * tick )
718- left_tick = RT_TICK_MAX - left_tick + 1 ;
717+ left_tick = * tick - cur_tick ;
719718
720719 /* suspend thread */
721720 rt_thread_suspend_with_flag (thread , RT_UNINTERRUPTIBLE );
@@ -736,7 +735,7 @@ rt_err_t rt_thread_delay_until(rt_tick_t *tick, rt_tick_t inc_tick)
736735 }
737736 else
738737 {
739- * tick = rt_tick_get () ;
738+ * tick = cur_tick ;
740739 rt_exit_critical_safe (critical_level );
741740 }
742741
You can’t perform that action at this time.
0 commit comments