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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
/**
* Handlers setup code for Cortex-M.
*/
typedef void (*ptr_func_t)();
// Undefined handler is pointing to this function, this stop MCU.
// This function name must by not mangled, so must be C,
// because alias("..") is working only with C code
void __stop() { while (1); }
// Handlers for Cortex-M core.
// These handler are with attribute 'weak' and can be overwritten
// by non-weak function, default is __stop() function
__attribute__((weak, alias("__stop"))) void RESET_handler();
__attribute__((weak, alias("__stop"))) void NMI_handler();
__attribute__((weak, alias("__stop"))) void HARDFAULT_handler();
__attribute__((weak, alias("__stop"))) void MEMMANAGE_handler();
__attribute__((weak, alias("__stop"))) void BUSFAULT_handler();
__attribute__((weak, alias("__stop"))) void USAGEFAULT_handler();
__attribute__((weak, alias("__stop"))) void SVCALL_handler();
__attribute__((weak, alias("__stop"))) void DEBUGMONITOR_handler();
__attribute__((weak, alias("__stop"))) void PENDSV_handler();
__attribute__((weak, alias("__stop"))) void SYSTICK_handler();
// Handlers for peripherals' interrupts
__attribute__((weak, alias("__stop"))) void WWDG_handler();
__attribute__((weak, alias("__stop"))) void PVD_VDDIO2_handler();
__attribute__((weak, alias("__stop"))) void RTC_handler();
__attribute__((weak, alias("__stop"))) void FLASH_handler();
__attribute__((weak, alias("__stop"))) void RCC_CRS_handler();
__attribute__((weak, alias("__stop"))) void EXTI0_1_handler();
__attribute__((weak, alias("__stop"))) void EXTI2_3_handler();
__attribute__((weak, alias("__stop"))) void EXTI4_15_handler();
__attribute__((weak, alias("__stop"))) void TSC_handler();
__attribute__((weak, alias("__stop"))) void DMA_0064_handler();
__attribute__((weak, alias("__stop"))) void DMA_DMA2_0068_handler();
__attribute__((weak, alias("__stop"))) void DMA_DMA2_006C_handler();
__attribute__((weak, alias("__stop"))) void ADC_COMP_handler();
__attribute__((weak, alias("__stop"))) void TIM1_0074_handler();
__attribute__((weak, alias("__stop"))) void TIM1_0078_handler();
__attribute__((weak, alias("__stop"))) void TIM2_handler();
__attribute__((weak, alias("__stop"))) void TIM3_handler();
__attribute__((weak, alias("__stop"))) void TIM6_DAC_handler();
__attribute__((weak, alias("__stop"))) void TIM7_handler();
__attribute__((weak, alias("__stop"))) void TIM14_handler();
__attribute__((weak, alias("__stop"))) void TIM15_handler();
__attribute__((weak, alias("__stop"))) void TIM16_handler();
__attribute__((weak, alias("__stop"))) void TIM17_handler();
__attribute__((weak, alias("__stop"))) void I2C1_handler();
__attribute__((weak, alias("__stop"))) void I2C2_handler();
__attribute__((weak, alias("__stop"))) void SPI1_handler();
__attribute__((weak, alias("__stop"))) void SPI2_handler();
__attribute__((weak, alias("__stop"))) void USART1_handler();
__attribute__((weak, alias("__stop"))) void USART2_handler();
__attribute__((weak, alias("__stop"))) void USART_00B3_handler();
__attribute__((weak, alias("__stop"))) void CEC_CAN_handler();
__attribute__((weak, alias("__stop"))) void USB_handler();
// Dummy handler (for unused vectors)
__attribute__((weak, alias("__stop"))) void DUMMY_handler();
// Vector table for handlers
// This array will be placed in ".vectors" section defined in linker script.
__attribute__((section(".vectors"), used)) ptr_func_t __isr_vectors[] = {
RESET_handler,
NMI_handler,
HARDFAULT_handler,
MEMMANAGE_handler,
BUSFAULT_handler,
USAGEFAULT_handler,
DUMMY_handler,
DUMMY_handler,
DUMMY_handler,
DUMMY_handler,
SVCALL_handler,
DEBUGMONITOR_handler,
DUMMY_handler,
PENDSV_handler,
SYSTICK_handler,
WWDG_handler,
PVD_VDDIO2_handler,
RTC_handler,
FLASH_handler,
RCC_CRS_handler,
EXTI0_1_handler,
EXTI2_3_handler,
EXTI4_15_handler,
TSC_handler,
DMA_0064_handler,
DMA_DMA2_0068_handler,
DMA_DMA2_006C_handler,
ADC_COMP_handler,
TIM1_0074_handler,
TIM1_0078_handler,
TIM2_handler,
TIM3_handler,
TIM6_DAC_handler,
TIM7_handler,
TIM14_handler,
TIM15_handler,
TIM16_handler,
TIM17_handler,
I2C1_handler,
I2C2_handler,
SPI1_handler,
SPI2_handler,
USART1_handler,
USART2_handler,
USART_00B3_handler,
CEC_CAN_handler,
USB_handler,
};
|