LPC5410x_Wearable_Functiona.../src/util_systick.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++;
}