diff --git a/system.c b/system.c new file mode 100644 index 0000000..656b1a3 --- /dev/null +++ b/system.c @@ -0,0 +1,35 @@ +#include "system.h" +#include +#include + +volatile uint64_t ticks = 0; + +void sys_tick_handler(void) { ticks++; } + +uint64_t get_ticks(void) { return ticks; } + +void systick_setup(void) { + // systick_set_frequency(1000, 72000000); + systick_set_clocksource(STK_CSR_CLKSOURCE_AHB); + systick_set_reload(72000000 / 1000 - 1); // 1ms tick + systick_clear(); + systick_interrupt_enable(); + systick_counter_enable(); +} + +void sys_tick_setup(void) { + ticks = 0; + // rcc_clock_setup_pll(&rcc_hse_configs[RCC_CLOCK_HSE16_72MHZ]); + + // systick_set_clocksource(STK_CSR_CLKSOURCE_AHB_DIV8); + systick_set_clocksource(STK_CSR_CLKSOURCE_AHB); + + // systick_set_reload(8999); + systick_set_frequency(1000, 72000000); + systick_clear(); + + systick_interrupt_enable(); + systick_counter_enable(); + + return; +} diff --git a/system.h b/system.h new file mode 100644 index 0000000..942ec89 --- /dev/null +++ b/system.h @@ -0,0 +1,6 @@ +#pragma once +#include + +void sys_tick_handler(void); +uint64_t get_ticks(void); +void systick_setup(void);