aboutsummaryrefslogtreecommitdiff
path: root/include/systick.h
blob: 09c69ecc645c3dd1c764376ca9fc00d9158b9563 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#pragma once

#include <stdint.h>

typedef void (*systick_cb_t)(void);

void set_systick(uint64_t systick_value);

uint64_t get_systick();

int systick_interrupt();


#define PASTER(x, y) x##y
#define CONCAT(x, y) PASTER(x, y)

#define On_SysTick()                                                   \
  static void __local_on_systick__(void);                              \
  __attribute__((                                                      \
      __section__(".systick_callbacks"))) static volatile systick_cb_t \
      __systick__position = __local_on_systick__;                       \
  static void __local_on_systick__()

#undef PASTER
#undef CONCAT