#include void zv_time_ticks_delay(zv_ticks_t delay) { zv_ticks_t start_time = zv_time_get_ticks(); zv_ticks_t end_time = start_time + delay; while (zv_time_get_ticks() < end_time) ; while (zv_time_get_ticks() >= end_time) ; } void __zv_time_process_timer(zv_event_t *target) { zv_time_t current_time = zv_time_get_time(); zv_time_t end_time = target->content.time; if (target->type == ZV_EVENT_TIMER_PHRASE_FIRST) { if (current_time < end_time) { target->type = ZV_EVENT_TIMER_PHRASE_SECOND; } } if (target->type == ZV_EVENT_TIMER_PHRASE_SECOND) { if (current_time >= end_time) { target->type = ZV_EVENT_TIMER; } } }