/** * 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, };