Add all interrupt/exception handlers with default alias
This commit is contained in:
148
src/startup.c
148
src/startup.c
@@ -17,6 +17,7 @@ void init_memory(void) {
|
||||
}
|
||||
}
|
||||
|
||||
// Interrupt and exception vectors
|
||||
void reset(void) {
|
||||
(void)init_memory();
|
||||
|
||||
@@ -26,9 +27,150 @@ void reset(void) {
|
||||
for (;;) (void) 0;
|
||||
}
|
||||
|
||||
|
||||
void nmi(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void hard_fault(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void mem_manage(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void bus_fault(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void usage_fault(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void sv_call(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void x(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void debug_monitor(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void pend_sv(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void systick(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void wwdg(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void pvd(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void tamp_stamp(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void rtc_wkup(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void flash(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void rcc(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void exti0(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void exti1(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void exti2(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void exti3(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void exti4(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma1_stream0(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma1_stream1(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma1_stream2(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma1_stream3(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma1_stream4(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma1_stream5(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma1_stream6(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void adc(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void exti9_5(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void tim1_brk_tim9(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void tim1_up_tim10(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void tim1_trg_com_tim11(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void tim1_cc(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void tim2(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void tim3(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void tim4(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void i2c1_ev(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void i2c1_er(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void i2c2_ev(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void i2c2_er(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void spi1(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void spi2(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void usart1(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void usart2(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void exti15_10(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void rtc_alarm(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void otg_fs_wkup(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma1_stream7(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void sdio(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void tim5(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void spi3(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma2_stream0(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma2_stream1(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma2_stream2(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma2_stream3(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma2_stream4(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void otg_fs(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma2_stream5(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma2_stream6(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void dma2_stream7(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void usart6(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void i2c3_ev(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void i2c3_er(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void fpu(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void spi4(void) __attribute__ ((weak, alias("default_handler")));
|
||||
void spi5(void) __attribute__ ((weak, alias("default_handler")));
|
||||
|
||||
void default_handler(void) {
|
||||
for (;;) (void) 0;
|
||||
}
|
||||
|
||||
// Create minimal interrupt vector table
|
||||
// 16 standard and 86 STM32F411xC/E-specific handlers
|
||||
// 16 standard and 86 STM32F411xC/E-specific handlers of 32bit size each
|
||||
void (*const interrupt_vector_table[16 + 86])(void) __attribute__((section(".isr_vector"))) = {
|
||||
stack_start, // Defined in link.ld
|
||||
reset
|
||||
stack_start, // Defined in link.ld
|
||||
reset, // Reset
|
||||
nmi, // Non maskable interrupt, Clock Security System
|
||||
hard_fault, // All class of fault
|
||||
mem_manage, // Memory management
|
||||
bus_fault, // Pre-fetch fault, memory access fault
|
||||
usage_fault, // Undefined instruction or illegal state
|
||||
0, 0, 0, 0, // Reserved
|
||||
sv_call, // System Service call via SWI instruction
|
||||
debug_monitor, // Debug Monitor
|
||||
0, // Reserved
|
||||
pend_sv, // Pendable request for system service
|
||||
systick, // System tick timer
|
||||
wwdg, // Window Watchdog interrupt
|
||||
pvd, // EXTI Line 16 interrupt / PVD through EXTI line detection interrupt
|
||||
tamp_stamp, // EXTI Line 21 interrupt / Tamper and TimeStamp interrupts through the EXTI line
|
||||
rtc_wkup, // EXTI Line 22 interrupt / RTC Wakeup interrupt through the EXTI line
|
||||
flash, // Flash global interrupt
|
||||
rcc, // RCC global interrupt
|
||||
exti0, // EXTI Line0 interrupt
|
||||
exti1, // EXTI Line1 interrupt
|
||||
exti2, // EXTI Line2 interrupt
|
||||
exti3, // EXTI Line3 interrupt
|
||||
exti4, // EXTI Line4 interrupt
|
||||
dma1_stream0, // DMA1 Stream0 global interrupt
|
||||
dma1_stream1, // DMA1 Stream1 global interrupt
|
||||
dma1_stream2, // DMA1 Stream2 global interrupt
|
||||
dma1_stream3, // DMA1 Stream3 global interrupt
|
||||
dma1_stream4, // DMA1 Stream4 global interrupt
|
||||
dma1_stream5, // DMA1 Stream5 global interrupt
|
||||
dma1_stream6, // DMA1 Stream6 global interrupt
|
||||
adc, // ADC1 global interrupts
|
||||
exti9_5, // EXTI Line[9:5] interrupts
|
||||
tim1_brk_tim9, // TIM1 Break interrupt and TIM9 global interrupt
|
||||
tim1_up_tim10, // TIM1 Update interrupt and TIM10 global interrupt
|
||||
tim1_trg_com_tim11, // TIM1 Trigger and Commutation interrupts and TIM11 global interrupt
|
||||
tim1_cc, // TIM1 Capture Compare interrupt
|
||||
tim2, // TIM2 global interrupt
|
||||
tim3, // TIM3 global interrupt
|
||||
tim4, // TIM4 global interrupt
|
||||
i2c1_ev, // I2C1 event interrupt
|
||||
i2c1_er, // I2C1 error interrupt
|
||||
i2c2_ev, // I2C2 event interrupt
|
||||
i2c2_er, // I2C2 error interrupt
|
||||
spi1, // SPI1 global interrupt
|
||||
spi2, // SPI2 global interrupt
|
||||
usart1, // USART1 global interrupt
|
||||
usart2, // USART2 global interrupt
|
||||
exti15_10, // EXTI Line[15:10] interrupts
|
||||
rtc_alarm, // EXTI Line 17 interrupt / RTC Alarms (A and B) through EXTI line interrupt
|
||||
otg_fs_wkup, // EXTI Line 18 interrupt / USB On-The-Go FS Wakeup through EXTI line interrupt
|
||||
dma1_stream7, // MA1 Stream7 global interrupt
|
||||
sdio, // SDIO global interrupt
|
||||
tim5, // TIM5 global interrupt
|
||||
spi3, // SPI3 global interrupt
|
||||
dma2_stream0, // DMA2 Stream0 global interrupt
|
||||
dma2_stream1, // DMA2 Stream1 global interrupt
|
||||
dma2_stream2, // DMA2 Stream2 global interrupt
|
||||
dma2_stream3, // DMA2 Stream3 global interrupt
|
||||
dma2_stream4, // DMA2 Stream4 global interrupt
|
||||
otg_fs, // USB On The Go FS global interrupt
|
||||
dma2_stream5, // DMA2 Stream5 global interrupt
|
||||
dma2_stream6, // DMA2 Stream6 global interrupt
|
||||
dma2_stream7, // DMA2 Stream7 global interrupt
|
||||
usart6, // USART6 global interrupt
|
||||
i2c3_ev, // I2C3 event interrupt
|
||||
i2c3_er, // I2C3 error interrupt
|
||||
fpu, // FPU global interrupt
|
||||
spi4, // SPI4 global interrupt
|
||||
spi5 // SPI5 global interrupt
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user