/* SDK drivers */ #include "fsl_common.h" #include "util_systick.h" static volatile uint64_t s_tickcount; void util_systick_init(void) { uint32_t tick_freq = CLOCK_GetFreq(kCLOCK_MainClk) / SYSCON->SYSTICKCLKDIV; SysTick->LOAD = (tick_freq / 1000) - 1U; SysTick->VAL = 0U; NVIC_SetPriority(SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); SysTick->CTRL = SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; } uint64_t util_systick_get(void) { return s_tickcount; } void util_systick_delay(uint64_t msec) { uint64_t tick_end = s_tickcount + msec; while(tick_end > s_tickcount) { __WFI(); } } void SysTick_Handler(void) { s_tickcount++; }