diff options
Diffstat (limited to 'src/systick.c')
-rw-r--r-- | src/systick.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/systick.c b/src/systick.c new file mode 100644 index 0000000..506f6df --- /dev/null +++ b/src/systick.c @@ -0,0 +1,34 @@ +#include "systick.h" + +#include <stdio.h> + +#include "ch573/systick.h" +#include "isr_vector.h" + +#define SYSTICK_I CH573_SYSTICK__SYSTICK_T_INTF +#define SYSTICK ch573_systick__systick + +void set_systick(uint64_t systick) +{ + SYSTICK_I.reload.set(SYSTICK, systick); + SYSTICK_I.cfg.st_reload.set(SYSTICK, 1); + SYSTICK_I.cfg.interrupt_enable.set(SYSTICK, 1); + + SYSTICK_I.cfg.enabled.set(SYSTICK, ENABLED); +} + +uint64_t get_systick() +{ + return ((uint64_t)SYSTICK_I.count_high.get(SYSTICK) << 32) | + SYSTICK_I.count_low.get(SYSTICK); +} + +int systick_interrupt() +{ + return SYSTICK_I.counter_interrupt_flag.get(SYSTICK); +} + +IRQ(systick) +{ + SYSTICK_I.counter_interrupt_flag.set(SYSTICK, 0); +} |