对于同一产品系列的 STM32,其基本架构是一样的,也使用相同的库函数,唯一的区别几乎就是存储容量。以 STM32F10X 系列为例,该系分为 STM32F100/101/102/103/105/107,因此统称为 STM32F10X 系列。
启动文件解析、链接脚本解析、使用 C 语言重写启动文件详见这一篇博客: 使用C语言实现STM32的启动文件
万能链接脚本
链接脚本中定义了入口函数,也即上电之后执行的第一个函数 Reset_Handler、定义了内存区域分配情况,以及手动去除一些标准库中的信息。
ST 官方并未在标准外设库中提供适用于各种型号的链接脚本,只有在项目实例中给出了零星几个型号项目的链接脚本。但是在 HAL 库中提供了如下链接脚本可供参考:
- STM32F100XB_FLASH.ld
- STM32F100XE_FLASH.ld
- STM32F101X6_FLASH.ld
- STM32F101XB_FLASH.ld
- STM32F101XE_FLASH.ld
- STM32F101XG_FLASH.ld
- STM32F102X6_FLASH.ld
- STM32F102XB_FLASH.ld
- STM32F103X6_FLASH.ld
- STM32F103XB_FLASH.ld
- STM32F103XE_FLASH.ld
- STM32F103XG_FLASH.ld
- STM32F105XC_FLASH.ld
- STM32F107XC_FLASH.ld
上述文件可以在 ST 官方提供的 STM32F1 系列 HAL 库中找到,路径为:STM32Cube_FW_F1_V1.8.7/Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/linker/
阅读上述链接脚本会发现,他们之间几乎完全相同,唯一的区别就是栈顶指针和 RAM、FLASH 区域的大小:- /* STM32F101X6_FLASH.ld */
- /* Highest address of the user mode stack */
- _estack = 0x200017FF; /* end of RAM */
- /* Generate a link error if heap and stack don't fit into RAM */
- _Min_Heap_Size = 0x200; /* required amount of heap */
- _Min_Stack_Size = 0x400; /* required amount of stack */
- /* Specify the memory areas */
- MEMORY
- {
- FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 32K
- RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 6K
- }
- /* STM32F103XB_FLASH.ld */
- /* Highest address of the user mode stack */
- _estack = 0x20004FFF; /* end of RAM */
- /* Generate a link error if heap and stack don't fit into RAM */
- _Min_Heap_Size = 0x200; /* required amount of heap */
- _Min_Stack_Size = 0x400; /* required amount of stack */
- /* Specify the memory areas */
- MEMORY
- {
- FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 128K
- RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
- }
复制代码 对此,我们希望实现一份“万能链接脚本”,实现之后可以无缝衔接到任何项目中而无需修改源代码,需要变更的参数通过项目配置来实现。对此,可以使用 GNU Linker Script 中的 PROVIDE 指令来实现。PROVIDE 指令可以为脚本内的变量提供默认值,同时也支持通过传入链接器参数 -Wl,--defsym=symbol=value 来覆盖默认值。借此,可以将 RAM、FLASH 大小设置为可以被覆盖的值。此外用户堆栈大小 _Min_Stack_Size 和 _Min_Heap_Size 也可以根据实际情况调整:- PROVIDE(_Ram_Size = 10K); /* RAM size, 默认 : 10K */
- PROVIDE(_Flash_Size = 32K); /* FLASH size, 默认 : 32K */
- PROVIDE(_Min_Heap_Size = 0); /* 堆大小, 默认 : 0 */
- PROVIDE(_Min_Stack_Size = 1K); /* 栈大小, 默认 : 1K */
- MEMORY
- {
- FLASH (rx) : ORIGIN = 0x08000000, LENGTH = _Flash_Size
- RAM (rwx) : ORIGIN = 0x20000000, LENGTH = _Ram_Size
- }
复制代码 栈顶指针 _estack 应当始终为 RAM 空间的结束为止,因为栈指针是从高地址向低地址增长的。将其定义在 MEMORY 区域之后,利用表达式动态计算其值,避免硬编码:- _estack = ORIGIN(RAM) + _Ram_Size;
复制代码 其余部分复制粘贴即可,不用修改。
使用例
将上述万能链接脚本作为某项目的链接脚本,默认 10K RAM/32K FLASH 是 STM32F103C6T6 的容量,添加链接器参数 -Wl,--defsym=_Ram_Size=20K -Wl,--defsym=_Flash_Size=64K ,就可以适配 20K RAM/64K FLASH 的 STM32F103C8T6 了。
万能启动文件
启动文件中使用 ARM 汇编做了三件事:实现函数 Reset_Handler、定义中断向量表,以及为各个中断函数提供默认实现和弱符号定义。
ST 官方为 STM32F10X 系列 MCU 提供了如下启动文件:
- startup_stm32f10x_cl.s
- startup_stm32f10x_hd.s
- startup_stm32f10x_hd_vl.s
- startup_stm32f10x_ld.s
- startup_stm32f10x_ld_vl.s
- startup_stm32f10x_md.s
- startup_stm32f10x_md_vl.s
- startup_stm32f10x_xl.s
上述文件可以在 ST 官方提供的 STM32F10X 系列标准外设库中找到,路径为 STM32F10x_StdPeriph_Lib_V3.6.0/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/TrueSTUDIO/
其命名规则为,常见的 F101、102、103 分为低容量(Low Density)、中容量(Medium Density)、高容量(High Density)三种,分别使用 ld、md、hd 后缀。
- F100 属于超值系列(Value Line),因此其启动文件有 vl 后缀,再根据容量不同,就有了 ld_vl、md_vl 和 hd_vl。
- F105/107 属于互联型(Connectivity Line),因此后缀为 cl。
- xl 代表超大容量产品,包括 F101 和 F103 的 ZF、ZG 版本,容量分别为 768K/80K 和 1M/80K。
阅读各个版本的启动文件可以发现,各种启动文件几乎完全相同,唯一区别就是 BootRAM 的值、中断向量表的大小以及中断函数名称不同。因此很容易就能想到使用 C 语言的条件编译功能,可以实现一份“万能启动文件”。
首先根据不同型号的宏定义,定义不同的 BootRAM 值:- /* Specific value for RAM boot mode */
- #if defined(STM32F10X_LD)
- #define BootRAM 0xF108F85F
- #elif defined(STM32F10X_LD_VL)
- #define BootRAM 0xF108F85F
- #elif defined(STM32F10X_MD)
- #define BootRAM 0xF108F85F
- #elif defined(STM32F10X_MD_VL)
- #define BootRAM 0xF108F85F
- #elif defined(STM32F10X_HD)
- #define BootRAM 0xF1E0F85F
- #elif defined(STM32F10X_HD_VL)
- #define BootRAM 0xF108F85F
- #elif defined(STM32F10X_XL)
- #define BootRAM 0xF1E0F85F
- #elif defined(STM32F10X_CL)
- #define BootRAM 0xF1E0F85F
- #endif
复制代码 然后是中断函数的声明:- // 这一部分是通用的中断函数,适用于任何型号,因此不用放在条件编译中
- /* System exception handlers */
- __attribute__((weak, alias("Default_Handler"))) void NMI_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void HardFault_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void MemManage_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void BusFault_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void UsageFault_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void SVC_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void DebugMon_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void PendSV_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void SysTick_Handler(void);
- // 这一部分是外设中断,根据型号不同有不同的名称
- /* Peripheral interrupt handlers */
- #if defined(STM32F10X_LD)
- // ...
- #elif defined(STM32F10X_LD_VL)
- #elif defined(STM32F10X_MD)
- #elif defined(STM32F10X_MD_VL)
- #elif defined(STM32F10X_HD)
- #elif defined(STM32F10X_HD_VL)
- #elif defined(STM32F10X_XL)
- #elif defined(STM32F10X_CL)
- #endif
复制代码 最后是中断向量表的定义:- /* Interrupt handler function pointer type definition */
- typedef void (*InterruptHandlerPtr_TypeDef)(void);
- /* The Vector Table */
- __attribute__((used, section(".isr_vector")))
- InterruptHandlerPtr_TypeDef g_pfnVectors[] = {
- /* Initial stack pointer */
- (InterruptHandlerPtr_TypeDef)(uintptr_t)_estack,
- /* Core exceptions */
- #if defined(STM32F10X_LD)
- // ...
- #elif defined(STM32F10X_LD_VL)
- #elif defined(STM32F10X_MD)
- #elif defined(STM32F10X_MD_VL)
- #elif defined(STM32F10X_HD)
- #elif defined(STM32F10X_HD_VL)
- #elif defined(STM32F10X_XL)
- #elif defined(STM32F10X_CL)
- #endif
- (InterruptHandlerPtr_TypeDef)BootRAM,
- };
复制代码 最后根据不同的启动文件中的函数不同填充上述条件编译框架,就得到了一份“万能启动文件”,适用于 STM32F10X 所有系列的 MCU。
附录
链接脚本
启动文件
- #include <stddef.h>
- #include <stdint.h>
- /* Symbols Defined in Linker Script */
- extern uint8_t _estack[]; /* Top of Stack Pointer */
- extern uint8_t _sidata[]; /* Start address for .data initialization values (in Flash) */
- extern uint8_t _sdata[]; /* Start address for .data section (in RAM) */
- extern uint8_t _edata[]; /* End address for .data section (in RAM) */
- extern uint8_t _sbss[]; /* Start address for .bss section (in RAM) */
- extern uint8_t _ebss[]; /* End address for .bss section (in RAM) */
- /* Specific value for RAM boot mode */
- #if defined(STM32F10X_LD)
- #define BootRAM 0xF108F85F
- #elif defined(STM32F10X_LD_VL)
- #define BootRAM 0xF108F85F
- #elif defined(STM32F10X_MD)
- #define BootRAM 0xF108F85F
- #elif defined(STM32F10X_MD_VL)
- #define BootRAM 0xF108F85F
- #elif defined(STM32F10X_HD)
- #define BootRAM 0xF1E0F85F
- #elif defined(STM32F10X_HD_VL)
- #define BootRAM 0xF108F85F
- #elif defined(STM32F10X_XL)
- #define BootRAM 0xF1E0F85F
- #elif defined(STM32F10X_CL)
- #define BootRAM 0xF1E0F85F
- #elif
- #error "Invalid device selected."
- #endif
- /* External function declarations */
- extern void SystemInit(void); /* Defined in system_stm32f10x.c */
- extern int main(void); /* Defined in main.c */
- extern void __libc_init_array(void); /* Newlib library initialization */
- /* Function prototypes */
- void Default_Handler(void);
- __attribute__((weak)) void Reset_Handler(void);
- /* Provide weak aliases for each Exception handler to the Default_Handler */
- /* System exception handlers */
- __attribute__((weak, alias("Default_Handler"))) void NMI_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void HardFault_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void MemManage_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void BusFault_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void UsageFault_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void SVC_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void DebugMon_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void PendSV_Handler(void);
- __attribute__((weak, alias("Default_Handler"))) void SysTick_Handler(void);
- /* Peripheral interrupt handlers */
- #if defined(STM32F10X_LD)
- __attribute__((weak, alias("Default_Handler"))) void WWDG_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void PVD_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TAMPER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void FLASH_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RCC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI0_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel6_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel7_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void ADC1_2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USB_HP_CAN1_TX_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USB_LP_CAN1_RX0_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN1_RX1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN1_SCE_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI9_5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_BRK_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_UP_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_TRG_COM_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_CC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM3_IRQHandler(void);
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void I2C1_EV_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C1_ER_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void SPI1_IRQHandler(void);
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void USART1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART2_IRQHandler(void);
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void EXTI15_10_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTCAlarm_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USBWakeUp_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* BootRAM */
- #elif defined(STM32F10X_LD_VL)
- __attribute__((weak, alias("Default_Handler"))) void WWDG_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void PVD_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TAMPER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void FLASH_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RCC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI0_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel6_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel7_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void ADC1_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void EXTI9_5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_BRK_TIM15_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_UP_TIM16_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_TRG_COM_TIM17_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_CC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM3_IRQHandler(void);
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void I2C1_EV_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C1_ER_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void SPI1_IRQHandler(void);
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void USART1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART2_IRQHandler(void);
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void EXTI15_10_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTCAlarm_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CEC_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void TIM6_DAC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM7_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* BootRAM */
- #elif defined(STM32F10X_MD)
- __attribute__((weak, alias("Default_Handler"))) void WWDG_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void PVD_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TAMPER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void FLASH_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RCC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI0_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel6_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel7_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void ADC1_2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USB_HP_CAN1_TX_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USB_LP_CAN1_RX0_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN1_RX1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN1_SCE_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI9_5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_BRK_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_UP_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_TRG_COM_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_CC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C1_EV_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C1_ER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C2_EV_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C2_ER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI15_10_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTCAlarm_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USBWakeUp_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* BootRAM */
- #elif defined(STM32F10X_MD_VL)
- __attribute__((weak, alias("Default_Handler"))) void WWDG_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void PVD_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TAMPER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void FLASH_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RCC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI0_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel6_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel7_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void ADC1_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void EXTI9_5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_BRK_TIM15_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_UP_TIM16_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_TRG_COM_TIM17_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_CC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C1_EV_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C1_ER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C2_EV_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C2_ER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI15_10_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTCAlarm_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CEC_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void TIM6_DAC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM7_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- #elif defined(STM32F10X_HD)
- __attribute__((weak, alias("Default_Handler"))) void WWDG_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void PVD_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TAMPER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void FLASH_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RCC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI0_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel6_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel7_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void ADC1_2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USB_HP_CAN1_TX_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USB_LP_CAN1_RX0_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN1_RX1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN1_SCE_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI9_5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_BRK_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_UP_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_TRG_COM_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_CC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C1_EV_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C1_ER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C2_EV_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C2_ER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI15_10_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTCAlarm_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USBWakeUp_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM8_BRK_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM8_UP_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM8_TRG_COM_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM8_CC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void ADC3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void FSMC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SDIO_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void UART4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void UART5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM6_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM7_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel4_5_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* BootRAM */
- #elif defined(STM32F10X_HD_VL)
- __attribute__((weak, alias("Default_Handler"))) void WWDG_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void PVD_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TAMPER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void FLASH_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RCC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI0_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel6_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel7_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void ADC1_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void EXTI9_5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_BRK_TIM15_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_UP_TIM16_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_TRG_COM_TIM17_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_CC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C1_EV_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C1_ER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C2_EV_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C2_ER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI15_10_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTCAlarm_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CEC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM12_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM13_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM14_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void TIM5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void UART4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void UART5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM6_DAC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM7_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel4_5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel5_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* BootRAM */
- #elif defined(STM32F10X_XL)
- __attribute__((weak, alias("Default_Handler"))) void WWDG_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void PVD_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TAMPER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void FLASH_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RCC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI0_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel6_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel7_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void ADC1_2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USB_HP_CAN1_TX_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USB_LP_CAN1_RX0_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN1_RX1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN1_SCE_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI9_5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_BRK_TIM9_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_UP_TIM10_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_TRG_COM_TIM11_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_CC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C1_EV_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C1_ER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C2_EV_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C2_ER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI15_10_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTCAlarm_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USBWakeUp_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM8_BRK_TIM12_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM8_UP_TIM13_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM8_TRG_COM_TIM14_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM8_CC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void ADC3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void FSMC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SDIO_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void UART4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void UART5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM6_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM7_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel4_5_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* BootRAM */
- #elif defined(STM32F10X_CL)
- __attribute__((weak, alias("Default_Handler"))) void WWDG_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void PVD_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TAMPER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void FLASH_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RCC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI0_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel6_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA1_Channel7_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void ADC1_2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN1_TX_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN1_RX0_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN1_RX1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN1_SCE_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI9_5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_BRK_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_UP_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_TRG_COM_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM1_CC_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C1_EV_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C1_ER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C2_EV_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void I2C2_ER_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void USART3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void EXTI15_10_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void RTCAlarm_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void OTG_FS_WKUP_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- __attribute__((weak, alias("Default_Handler"))) void TIM5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void SPI3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void UART4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void UART5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM6_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void TIM7_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel2_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel3_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel4_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void DMA2_Channel5_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void ETH_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void ETH_WKUP_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN2_TX_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN2_RX0_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN2_RX1_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void CAN2_SCE_IRQHandler(void);
- __attribute__((weak, alias("Default_Handler"))) void OTG_FS_IRQHandler(void);
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* Reversed */
- /* BootRAM */
- #endif
- /* Interrupt handler function pointer type definition */
- typedef void (*InterruptHandlerPtr_TypeDef)(void);
- /* The Vector Table */
- __attribute__((used, section(".isr_vector")))
- InterruptHandlerPtr_TypeDef g_pfnVectors[] = {
- /* Initial stack pointer */
- (InterruptHandlerPtr_TypeDef)(uintptr_t)_estack,
- /* Core exceptions */
- #if defined(STM32F10X_LD)
- Reset_Handler,
- NMI_Handler,
- HardFault_Handler,
- MemManage_Handler,
- BusFault_Handler,
- UsageFault_Handler,
- NULL,
- NULL,
- NULL,
- NULL,
- SVC_Handler,
- DebugMon_Handler,
- NULL,
- PendSV_Handler,
- SysTick_Handler,
- /* External interrupts */
- WWDG_IRQHandler,
- PVD_IRQHandler,
- TAMPER_IRQHandler,
- RTC_IRQHandler,
- FLASH_IRQHandler,
- RCC_IRQHandler,
- EXTI0_IRQHandler,
- EXTI1_IRQHandler,
- EXTI2_IRQHandler,
- EXTI3_IRQHandler,
- EXTI4_IRQHandler,
- DMA1_Channel1_IRQHandler,
- DMA1_Channel2_IRQHandler,
- DMA1_Channel3_IRQHandler,
- DMA1_Channel4_IRQHandler,
- DMA1_Channel5_IRQHandler,
- DMA1_Channel6_IRQHandler,
- DMA1_Channel7_IRQHandler,
- ADC1_2_IRQHandler,
- USB_HP_CAN1_TX_IRQHandler,
- USB_LP_CAN1_RX0_IRQHandler,
- CAN1_RX1_IRQHandler,
- CAN1_SCE_IRQHandler,
- EXTI9_5_IRQHandler,
- TIM1_BRK_IRQHandler,
- TIM1_UP_IRQHandler,
- TIM1_TRG_COM_IRQHandler,
- TIM1_CC_IRQHandler,
- TIM2_IRQHandler,
- TIM3_IRQHandler,
- NULL,
- I2C1_EV_IRQHandler,
- I2C1_ER_IRQHandler,
- NULL,
- NULL,
- SPI1_IRQHandler,
- NULL,
- USART1_IRQHandler,
- USART2_IRQHandler,
- NULL,
- EXTI15_10_IRQHandler,
- RTCAlarm_IRQHandler,
- USBWakeUp_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- #elif defined(STM32F10X_LD_VL)
- (InterruptHandlerPtr_TypeDef)(uintptr_t)_estack,
- Reset_Handler,
- NMI_Handler,
- HardFault_Handler,
- MemManage_Handler,
- BusFault_Handler,
- UsageFault_Handler,
- NULL,
- NULL,
- NULL,
- NULL,
- SVC_Handler,
- DebugMon_Handler,
- NULL,
- PendSV_Handler,
- SysTick_Handler,
- WWDG_IRQHandler,
- PVD_IRQHandler,
- TAMPER_IRQHandler,
- RTC_IRQHandler,
- FLASH_IRQHandler,
- RCC_IRQHandler,
- EXTI0_IRQHandler,
- EXTI1_IRQHandler,
- EXTI2_IRQHandler,
- EXTI3_IRQHandler,
- EXTI4_IRQHandler,
- DMA1_Channel1_IRQHandler,
- DMA1_Channel2_IRQHandler,
- DMA1_Channel3_IRQHandler,
- DMA1_Channel4_IRQHandler,
- DMA1_Channel5_IRQHandler,
- DMA1_Channel6_IRQHandler,
- DMA1_Channel7_IRQHandler,
- ADC1_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- EXTI9_5_IRQHandler,
- TIM1_BRK_TIM15_IRQHandler,
- TIM1_UP_TIM16_IRQHandler,
- TIM1_TRG_COM_TIM17_IRQHandler,
- TIM1_CC_IRQHandler,
- TIM2_IRQHandler,
- TIM3_IRQHandler,
- NULL,
- I2C1_EV_IRQHandler,
- I2C1_ER_IRQHandler,
- NULL,
- NULL,
- SPI1_IRQHandler,
- NULL,
- USART1_IRQHandler,
- USART2_IRQHandler,
- NULL,
- EXTI15_10_IRQHandler,
- RTCAlarm_IRQHandler,
- CEC_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- TIM6_DAC_IRQHandler,
- TIM7_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- #elif defined(STM32F10X_MD)
- Reset_Handler,
- NMI_Handler,
- HardFault_Handler,
- MemManage_Handler,
- BusFault_Handler,
- UsageFault_Handler,
- NULL,
- NULL,
- NULL,
- NULL,
- SVC_Handler,
- DebugMon_Handler,
- NULL,
- PendSV_Handler,
- SysTick_Handler,
- /* External interrupts */
- WWDG_IRQHandler,
- PVD_IRQHandler,
- TAMPER_IRQHandler,
- RTC_IRQHandler,
- FLASH_IRQHandler,
- RCC_IRQHandler,
- EXTI0_IRQHandler,
- EXTI1_IRQHandler,
- EXTI2_IRQHandler,
- EXTI3_IRQHandler,
- EXTI4_IRQHandler,
- DMA1_Channel1_IRQHandler,
- DMA1_Channel2_IRQHandler,
- DMA1_Channel3_IRQHandler,
- DMA1_Channel4_IRQHandler,
- DMA1_Channel5_IRQHandler,
- DMA1_Channel6_IRQHandler,
- DMA1_Channel7_IRQHandler,
- ADC1_2_IRQHandler,
- USB_HP_CAN1_TX_IRQHandler,
- USB_LP_CAN1_RX0_IRQHandler,
- CAN1_RX1_IRQHandler,
- CAN1_SCE_IRQHandler,
- EXTI9_5_IRQHandler,
- TIM1_BRK_IRQHandler,
- TIM1_UP_IRQHandler,
- TIM1_TRG_COM_IRQHandler,
- TIM1_CC_IRQHandler,
- TIM2_IRQHandler,
- TIM3_IRQHandler,
- TIM4_IRQHandler,
- I2C1_EV_IRQHandler,
- I2C1_ER_IRQHandler,
- I2C2_EV_IRQHandler,
- I2C2_ER_IRQHandler,
- SPI1_IRQHandler,
- SPI2_IRQHandler,
- USART1_IRQHandler,
- USART2_IRQHandler,
- USART3_IRQHandler,
- EXTI15_10_IRQHandler,
- RTCAlarm_IRQHandler,
- USBWakeUp_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- #elif defined(STM32F10X_MD_VL)
- Reset_Handler,
- NMI_Handler,
- HardFault_Handler,
- MemManage_Handler,
- BusFault_Handler,
- UsageFault_Handler,
- NULL,
- NULL,
- NULL,
- NULL,
- SVC_Handler,
- DebugMon_Handler,
- NULL,
- PendSV_Handler,
- SysTick_Handler,
- /* External interrupts */
- WWDG_IRQHandler,
- PVD_IRQHandler,
- TAMPER_IRQHandler,
- RTC_IRQHandler,
- FLASH_IRQHandler,
- RCC_IRQHandler,
- EXTI0_IRQHandler,
- EXTI1_IRQHandler,
- EXTI2_IRQHandler,
- EXTI3_IRQHandler,
- EXTI4_IRQHandler,
- DMA1_Channel1_IRQHandler,
- DMA1_Channel2_IRQHandler,
- DMA1_Channel3_IRQHandler,
- DMA1_Channel4_IRQHandler,
- DMA1_Channel5_IRQHandler,
- DMA1_Channel6_IRQHandler,
- DMA1_Channel7_IRQHandler,
- ADC1_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- EXTI9_5_IRQHandler,
- TIM1_BRK_TIM15_IRQHandler,
- TIM1_UP_TIM16_IRQHandler,
- TIM1_TRG_COM_TIM17_IRQHandler,
- TIM1_CC_IRQHandler,
- TIM2_IRQHandler,
- TIM3_IRQHandler,
- TIM4_IRQHandler,
- I2C1_EV_IRQHandler,
- I2C1_ER_IRQHandler,
- I2C2_EV_IRQHandler,
- I2C2_ER_IRQHandler,
- SPI1_IRQHandler,
- SPI2_IRQHandler,
- USART1_IRQHandler,
- USART2_IRQHandler,
- USART3_IRQHandler,
- EXTI15_10_IRQHandler,
- RTCAlarm_IRQHandler,
- CEC_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- TIM6_DAC_IRQHandler,
- TIM7_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- #elif defined(STM32F10X_HD)
- Reset_Handler,
- NMI_Handler,
- HardFault_Handler,
- MemManage_Handler,
- BusFault_Handler,
- UsageFault_Handler,
- NULL,
- NULL,
- NULL,
- NULL,
- SVC_Handler,
- DebugMon_Handler,
- NULL,
- PendSV_Handler,
- SysTick_Handler,
- /* External interrupts */
- WWDG_IRQHandler,
- PVD_IRQHandler,
- TAMPER_IRQHandler,
- RTC_IRQHandler,
- FLASH_IRQHandler,
- RCC_IRQHandler,
- EXTI0_IRQHandler,
- EXTI1_IRQHandler,
- EXTI2_IRQHandler,
- EXTI3_IRQHandler,
- EXTI4_IRQHandler,
- DMA1_Channel1_IRQHandler,
- DMA1_Channel2_IRQHandler,
- DMA1_Channel3_IRQHandler,
- DMA1_Channel4_IRQHandler,
- DMA1_Channel5_IRQHandler,
- DMA1_Channel6_IRQHandler,
- DMA1_Channel7_IRQHandler,
- ADC1_2_IRQHandler,
- USB_HP_CAN1_TX_IRQHandler,
- USB_LP_CAN1_RX0_IRQHandler,
- CAN1_RX1_IRQHandler,
- CAN1_SCE_IRQHandler,
- EXTI9_5_IRQHandler,
- TIM1_BRK_IRQHandler,
- TIM1_UP_IRQHandler,
- TIM1_TRG_COM_IRQHandler,
- TIM1_CC_IRQHandler,
- TIM2_IRQHandler,
- TIM3_IRQHandler,
- TIM4_IRQHandler,
- I2C1_EV_IRQHandler,
- I2C1_ER_IRQHandler,
- I2C2_EV_IRQHandler,
- I2C2_ER_IRQHandler,
- SPI1_IRQHandler,
- SPI2_IRQHandler,
- USART1_IRQHandler,
- USART2_IRQHandler,
- USART3_IRQHandler,
- EXTI15_10_IRQHandler,
- RTCAlarm_IRQHandler,
- USBWakeUp_IRQHandler,
- TIM8_BRK_IRQHandler,
- TIM8_UP_IRQHandler,
- TIM8_TRG_COM_IRQHandler,
- TIM8_CC_IRQHandler,
- ADC3_IRQHandler,
- FSMC_IRQHandler,
- SDIO_IRQHandler,
- TIM5_IRQHandler,
- SPI3_IRQHandler,
- UART4_IRQHandler,
- UART5_IRQHandler,
- TIM6_IRQHandler,
- TIM7_IRQHandler,
- DMA2_Channel1_IRQHandler,
- DMA2_Channel2_IRQHandler,
- DMA2_Channel3_IRQHandler,
- DMA2_Channel4_5_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- #elif defined(STM32F10X_HD_VL)
- Reset_Handler,
- NMI_Handler,
- HardFault_Handler,
- MemManage_Handler,
- BusFault_Handler,
- UsageFault_Handler,
- NULL,
- NULL,
- NULL,
- NULL,
- SVC_Handler,
- DebugMon_Handler,
- NULL,
- PendSV_Handler,
- SysTick_Handler,
- /* External interrupts */
- WWDG_IRQHandler,
- PVD_IRQHandler,
- TAMPER_IRQHandler,
- RTC_IRQHandler,
- FLASH_IRQHandler,
- RCC_IRQHandler,
- EXTI0_IRQHandler,
- EXTI1_IRQHandler,
- EXTI2_IRQHandler,
- EXTI3_IRQHandler,
- EXTI4_IRQHandler,
- DMA1_Channel1_IRQHandler,
- DMA1_Channel2_IRQHandler,
- DMA1_Channel3_IRQHandler,
- DMA1_Channel4_IRQHandler,
- DMA1_Channel5_IRQHandler,
- DMA1_Channel6_IRQHandler,
- DMA1_Channel7_IRQHandler,
- ADC1_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- EXTI9_5_IRQHandler,
- TIM1_BRK_TIM15_IRQHandler,
- TIM1_UP_TIM16_IRQHandler,
- TIM1_TRG_COM_TIM17_IRQHandler,
- TIM1_CC_IRQHandler,
- TIM2_IRQHandler,
- TIM3_IRQHandler,
- TIM4_IRQHandler,
- I2C1_EV_IRQHandler,
- I2C1_ER_IRQHandler,
- I2C2_EV_IRQHandler,
- I2C2_ER_IRQHandler,
- SPI1_IRQHandler,
- SPI2_IRQHandler,
- USART1_IRQHandler,
- USART2_IRQHandler,
- USART3_IRQHandler,
- EXTI15_10_IRQHandler,
- RTCAlarm_IRQHandler,
- CEC_IRQHandler,
- TIM12_IRQHandler,
- TIM13_IRQHandler,
- TIM14_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- TIM5_IRQHandler,
- SPI3_IRQHandler,
- UART4_IRQHandler,
- UART5_IRQHandler,
- TIM6_DAC_IRQHandler,
- TIM7_IRQHandler,
- DMA2_Channel1_IRQHandler,
- DMA2_Channel2_IRQHandler,
- DMA2_Channel3_IRQHandler,
- DMA2_Channel4_5_IRQHandler,
- DMA2_Channel5_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- #elif defined(STM32F10X_XL)
- Reset_Handler, /* Reset handler */
- NMI_Handler, /* Non Maskable Interrupt handler */
- HardFault_Handler, /* Hard Fault handler */
- MemManage_Handler, /* Memory Management Fault handler */
- BusFault_Handler, /* Bus Fault handler */
- UsageFault_Handler, /* Usage Fault handler */
- NULL, /* Reserved */
- NULL, /* Reserved */
- NULL, /* Reserved */
- NULL, /* Reserved */
- SVC_Handler, /* SVCall handler */
- DebugMon_Handler, /* Debug Monitor handler */
- NULL, /* Reserved */
- PendSV_Handler, /* PendSV handler */
- SysTick_Handler, /* SysTick handler */
- /* External interrupts */
- WWDG_IRQHandler,
- PVD_IRQHandler,
- TAMPER_IRQHandler,
- RTC_IRQHandler,
- FLASH_IRQHandler,
- RCC_IRQHandler,
- EXTI0_IRQHandler,
- EXTI1_IRQHandler,
- EXTI2_IRQHandler,
- EXTI3_IRQHandler,
- EXTI4_IRQHandler,
- DMA1_Channel1_IRQHandler,
- DMA1_Channel2_IRQHandler,
- DMA1_Channel3_IRQHandler,
- DMA1_Channel4_IRQHandler,
- DMA1_Channel5_IRQHandler,
- DMA1_Channel6_IRQHandler,
- DMA1_Channel7_IRQHandler,
- ADC1_2_IRQHandler,
- USB_HP_CAN1_TX_IRQHandler,
- USB_LP_CAN1_RX0_IRQHandler,
- CAN1_RX1_IRQHandler,
- CAN1_SCE_IRQHandler,
- EXTI9_5_IRQHandler,
- TIM1_BRK_TIM9_IRQHandler,
- TIM1_UP_TIM10_IRQHandler,
- TIM1_TRG_COM_TIM11_IRQHandler,
- TIM1_CC_IRQHandler,
- TIM2_IRQHandler,
- TIM3_IRQHandler,
- TIM4_IRQHandler,
- I2C1_EV_IRQHandler,
- I2C1_ER_IRQHandler,
- I2C2_EV_IRQHandler,
- I2C2_ER_IRQHandler,
- SPI1_IRQHandler,
- SPI2_IRQHandler,
- USART1_IRQHandler,
- USART2_IRQHandler,
- USART3_IRQHandler,
- EXTI15_10_IRQHandler,
- RTCAlarm_IRQHandler,
- USBWakeUp_IRQHandler,
- TIM8_BRK_TIM12_IRQHandler,
- TIM8_UP_TIM13_IRQHandler,
- TIM8_TRG_COM_TIM14_IRQHandler,
- TIM8_CC_IRQHandler,
- ADC3_IRQHandler,
- FSMC_IRQHandler,
- SDIO_IRQHandler,
- TIM5_IRQHandler,
- SPI3_IRQHandler,
- UART4_IRQHandler,
- UART5_IRQHandler,
- TIM6_IRQHandler,
- TIM7_IRQHandler,
- DMA2_Channel1_IRQHandler,
- DMA2_Channel2_IRQHandler,
- DMA2_Channel3_IRQHandler,
- DMA2_Channel4_5_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- #elif defined(STM32F10X_CL)
- Reset_Handler,
- NMI_Handler,
- HardFault_Handler,
- MemManage_Handler,
- BusFault_Handler,
- UsageFault_Handler,
- NULL,
- NULL,
- NULL,
- NULL,
- SVC_Handler,
- DebugMon_Handler,
- NULL,
- PendSV_Handler,
- SysTick_Handler,
- /* External interrupts */
- WWDG_IRQHandler,
- PVD_IRQHandler,
- TAMPER_IRQHandler,
- RTC_IRQHandler,
- FLASH_IRQHandler,
- RCC_IRQHandler,
- EXTI0_IRQHandler,
- EXTI1_IRQHandler,
- EXTI2_IRQHandler,
- EXTI3_IRQHandler,
- EXTI4_IRQHandler,
- DMA1_Channel1_IRQHandler,
- DMA1_Channel2_IRQHandler,
- DMA1_Channel3_IRQHandler,
- DMA1_Channel4_IRQHandler,
- DMA1_Channel5_IRQHandler,
- DMA1_Channel6_IRQHandler,
- DMA1_Channel7_IRQHandler,
- ADC1_2_IRQHandler,
- CAN1_TX_IRQHandler,
- CAN1_RX0_IRQHandler,
- CAN1_RX1_IRQHandler,
- CAN1_SCE_IRQHandler,
- EXTI9_5_IRQHandler,
- TIM1_BRK_IRQHandler,
- TIM1_UP_IRQHandler,
- TIM1_TRG_COM_IRQHandler,
- TIM1_CC_IRQHandler,
- TIM2_IRQHandler,
- TIM3_IRQHandler,
- TIM4_IRQHandler,
- I2C1_EV_IRQHandler,
- I2C1_ER_IRQHandler,
- I2C2_EV_IRQHandler,
- I2C2_ER_IRQHandler,
- SPI1_IRQHandler,
- SPI2_IRQHandler,
- USART1_IRQHandler,
- USART2_IRQHandler,
- USART3_IRQHandler,
- EXTI15_10_IRQHandler,
- RTCAlarm_IRQHandler,
- OTG_FS_WKUP_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- TIM5_IRQHandler,
- SPI3_IRQHandler,
- UART4_IRQHandler,
- UART5_IRQHandler,
- TIM6_IRQHandler,
- TIM7_IRQHandler,
- DMA2_Channel1_IRQHandler,
- DMA2_Channel2_IRQHandler,
- DMA2_Channel3_IRQHandler,
- DMA2_Channel4_IRQHandler,
- DMA2_Channel5_IRQHandler,
- ETH_IRQHandler,
- ETH_WKUP_IRQHandler,
- CAN2_TX_IRQHandler,
- CAN2_RX0_IRQHandler,
- CAN2_RX1_IRQHandler,
- CAN2_SCE_IRQHandler,
- OTG_FS_IRQHandler,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- #endif
- (InterruptHandlerPtr_TypeDef)BootRAM,
- };
- /**
- * @brief An infinite loop function.
- *
- */
- __attribute__((noreturn)) static void Infinite_Loop(void)
- {
- while (1) {
- /* Infinite loop */
- }
- }
- /**
- * @brief The default interrupt handler.
- *
- * @param None
- * @return None
- *
- * @note This function is called when an interrupt is triggered that is not handled by any other interrupt handler.
- */
- void Default_Handler(void)
- {
- Infinite_Loop();
- }
- /**
- * @brief Copy the data segment initializers from flash to SRAM
- * @param None
- * @retval None
- */
- static void CopyDataInit(void)
- {
- volatile const uint32_t *src_begin = (void *)_sidata;
- const uint32_t *data_end = (void *)_edata;
- volatile uint32_t *data_begin = (void *)_sdata;
- while (data_begin < data_end) {
- *data_begin = *src_begin;
- data_begin++;
- src_begin++;
- }
- }
- /**
- * @brief Zero fill the bss segment
- * @param None
- * @retval None
- */
- static void FillZerobss(void)
- {
- volatile uint32_t *bss_begin = (void *)_sbss;
- const uint32_t *bss_end = (void *)_ebss;
- while (bss_begin < bss_end) {
- *bss_begin = 0x00;
- bss_begin++;
- }
- }
- /**
- * @brief This is the code that gets called when the processor first
- * starts execution following a reset event. Only the absolutely
- * necessary set is performed, after which the application
- * supplied main() routine is called.
- * @param None
- * @retval None
- */
- __attribute__((noreturn)) void Reset_Handler(void)
- {
- /* Copy the data segment initializers from flash to SRAM */
- CopyDataInit();
- /* Zero fill the bss segment */
- FillZerobss();
- /* Call the clock system initialization function */
- SystemInit();
- /* Call static constructors */
- __libc_init_array();
- /* Call the application's entry point */
- main();
- /* Should never reach here */
- Infinite_Loop();
- }
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |