diff --git a/include/rtthread.h b/include/rtthread.h index a1c0e77a038..c08edc30433 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_delta_tick_get(rt_tick_t last_time); 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 3481f22c61c..948db3a6388 100644 --- a/src/clock.c +++ b/src/clock.c @@ -73,6 +73,25 @@ rt_tick_t rt_tick_get(void) } RTM_EXPORT(rt_tick_get); +/** + * @brief This function will return delta tick from last_time. + * + * @param last_time to consider + * + * @return Return delta tick. + */ + rt_tick_t rt_delta_tick_get(rt_tick_t last_time) + { + rt_tick_t delta; + rt_tick_t tnow = rt_tick_get(); + if (tnow >= last_time) + delta = tnow - last_time; + else + delta = RT_TICK_MAX - last_time + tnow + 1; + return delta; + } + RTM_EXPORT(rt_delta_tick_get); + /** * @brief This function will set current tick. *