31 lines
640 B
C
31 lines
640 B
C
#include "system.h"
|
|
#include <libopencm3/cm3/systick.h>
|
|
#include <stdint.h>
|
|
|
|
volatile uint64_t ticks;
|
|
|
|
__attribute__((interrupt)) void sys_tick_handler(void);
|
|
|
|
void sys_tick_handler(void) { ticks++; }
|
|
|
|
uint64_t sys_ticks_get(void) { return ticks; }
|
|
|
|
void sys_tick_setup(void) {
|
|
/* Make sure clocks are setup */
|
|
ticks = 0;
|
|
|
|
systick_set_clocksource(STK_CSR_CLKSOURCE_AHB);
|
|
systick_set_frequency(1000, 72000000);
|
|
|
|
systick_clear();
|
|
|
|
systick_interrupt_enable();
|
|
systick_counter_enable();
|
|
|
|
return;
|
|
}
|
|
|
|
void delay_ms(uint64_t ms) {
|
|
uint64_t start = sys_ticks_get();
|
|
while ((sys_ticks_get() - start) < ms);
|
|
}
|