diff --git a/include/rtthread.h b/include/rtthread.h index a1c0e77a03..103e26e894 100644 --- a/include/rtthread.h +++ b/include/rtthread.h @@ -98,6 +98,7 @@ void rt_object_put_sethook(void (*hook)(struct rt_object *object)); * clock & timer interface */ rt_tick_t rt_tick_get(void); +rt_tick_t rt_tick_get_delta(rt_tick_t base); void rt_tick_set(rt_tick_t tick); void rt_tick_increase(void); void rt_tick_increase_tick(rt_tick_t tick); diff --git a/src/clock.c b/src/clock.c index 3481f22c61..4277fadc0c 100644 --- a/src/clock.c +++ b/src/clock.c @@ -73,6 +73,22 @@ rt_tick_t rt_tick_get(void) } RTM_EXPORT(rt_tick_get); +/** + * @brief This function will return delta tick from base. + * + * @param base to consider + * + * @return Return delta tick. + */ +rt_tick_t rt_tick_get_delta(rt_tick_t base) +{ + rt_tick_t tnow = rt_tick_get(); + if (tnow >= base) + return tnow - base; + return RT_TICK_MAX - base + tnow + 1; +} +RTM_EXPORT(rt_tick_get_delta); + /** * @brief This function will set current tick. *