33 lines
694 B
C
33 lines
694 B
C
/* 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++;
|
|
} |