aboutsummaryrefslogtreecommitdiff
path: root/include/isr_vector.h
blob: d916db09ef655923239d2dd9c2f21fb34144f21b (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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#pragma once

#include <stdint.h>

/* Type def to a void function to make things mor ereadable. */
typedef void (*isr_routine)(void);

typedef struct {
  // What NULL points to. nothing useful.
  uint32_t reserved__;
  // Called when the device boots or reset is pressed.
  isr_routine reset_cb;
  isr_routine nmi_cb;
  isr_routine exc_cb;

  uint32_t _reserved_1[8];

  isr_routine systick_cb;

  uint32_t _reserved_2;

  isr_routine swi_cb;

  uint32_t _reserved_3;

  isr_routine tmr0_cb;
  isr_routine gpio_a_cb;
  isr_routine gpio_b_cb;
  isr_routine spi0_cb;
  isr_routine blel_cb;
  isr_routine bleb_cb;
  isr_routine usb_cb;

  uint32_t _reserved_4;

  isr_routine tmr1_cb;
  isr_routine tmr2_cb;
  isr_routine uart0_cb;
  isr_routine uart1_cb;
  isr_routine rtc_cb;
  isr_routine adc_cb;

  uint32_t _reserved_5;

  isr_routine pwmx_cb;
  isr_routine tmr3_cb;
  isr_routine uart2_cb;
  isr_routine uart3_cb;
  isr_routine wdog_bat_cb;
} isr_vector_t;

/** Reference to the global ISR vector. */
extern isr_vector_t isr_vector;

/** Default IRQ handler. This is weakly defined and can be overridden. */
void default_irq_handler(void);

/** Weakly defined interrput service routine vectors. These just alias to
 * default_irq_handler if not overridden. */
void irq_on_nmi(void);
void irq_on_exc(void);
void irq_on_systick(void);
void irq_on_swi(void);
void irq_on_tmr0(void);
void irq_on_gpio_a(void);
void irq_on_gpio_b(void);
void irq_on_spi0(void);
void irq_on_blel(void);
void irq_on_bleb(void);
void irq_on_usb(void);
void irq_on_tmr1(void);
void irq_on_tmr2(void);
void irq_on_uart0(void);
void irq_on_uart1(void);
void irq_on_rtc(void);
void irq_on_adc(void);
void irq_on_pwmx(void);
void irq_on_tmr3(void);
void irq_on_uart2(void);
void irq_on_uart3(void);
void irq_on_wdog_bat(void);