1/********************************** (C) COPYRIGHT ******************************* 2* File Name : startup_ch32f10x.s 3* Author : WCH 4* Version : V1.0.0 5* Date : 2020/11/01 6* Description : CH32F10x vector table for GCC toolchain. 7*******************************************************************************/ 8 9 .syntax unified 10 .cpu cortex-m3 11 .fpu softvfp 12 .thumb 13 14.global g_pfnVectors 15.global Default_Handler 16 17/* start address for the initialization values of the .data section. 18defined in linker script */ 19.word _sidata 20/* start address for the .data section. defined in linker script */ 21.word _sdata 22/* end address for the .data section. defined in linker script */ 23.word _edata 24/* start address for the .bss section. defined in linker script */ 25.word _sbss 26/* end address for the .bss section. defined in linker script */ 27.word _ebss 28 29/******************************************************************************* 30 Reset handler 31*******************************************************************************/ 32 .section .text.Reset_Handler 33 .weak Reset_Handler 34 .type Reset_Handler, %function 35Reset_Handler: 36 37/* Copy the data segment initializers from flash to SRAM */ 38 movs r1, #0 39 b LoopCopyDataInit 40 41CopyDataInit: 42 ldr r3, =_sidata 43 ldr r3, [r3, r1] 44 str r3, [r0, r1] 45 adds r1, r1, #4 46 47LoopCopyDataInit: 48 ldr r0, =_sdata 49 ldr r3, =_edata 50 adds r2, r0, r1 51 cmp r2, r3 52 bcc CopyDataInit 53 ldr r2, =_sbss 54 b LoopFillZerobss 55/* Zero fill the bss segment. */ 56FillZerobss: 57 movs r3, #0 58 str r3, [r2], #4 59 60LoopFillZerobss: 61 ldr r3, = _ebss 62 cmp r2, r3 63 bcc FillZerobss 64/* Call the clock system intitialization function.*/ 65 bl SystemInit 66/* Call the application's entry point.*/ 67 bl main 68 bx lr 69.size Reset_Handler, .-Reset_Handler 70 71/******************************************************************************* 72 This simply enters an infinite loop. 73*******************************************************************************/ 74 .section .text.Default_Handler,"ax",%progbits 75Default_Handler: 76Infinite_Loop: 77 b Infinite_Loop 78 .size Default_Handler, .-Default_Handler 79 80/******************************************************************************* 81 Vector Table Mapped to Address 0 at Reset. 82*******************************************************************************/ 83 .section .isr_vector,"a",%progbits 84 .type g_pfnVectors, %object 85 .size g_pfnVectors, .-g_pfnVectors 86 87g_pfnVectors: 88 .word _estack 89 .word Reset_Handler 90 .word NMI_Handler 91 .word HardFault_Handler 92 .word MemManage_Handler 93 .word BusFault_Handler 94 .word UsageFault_Handler 95 .word 0 96 .word 0 97 .word 0 98 .word 0 99 .word SVC_Handler 100 .word DebugMon_Handler 101 .word 0 102 .word PendSV_Handler 103 .word SysTick_Handler 104 105/******************************************************************************* 106 External Interrupts 107*******************************************************************************/ 108 .word WWDG_IRQHandler 109 .word PVD_IRQHandler 110 .word TAMPER_IRQHandler 111 .word RTC_IRQHandler 112 .word FLASH_IRQHandler 113 .word RCC_IRQHandler 114 .word EXTI0_IRQHandler 115 .word EXTI1_IRQHandler 116 .word EXTI2_IRQHandler 117 .word EXTI3_IRQHandler 118 .word EXTI4_IRQHandler 119 .word DMA1_Channel1_IRQHandler 120 .word DMA1_Channel2_IRQHandler 121 .word DMA1_Channel3_IRQHandler 122 .word DMA1_Channel4_IRQHandler 123 .word DMA1_Channel5_IRQHandler 124 .word DMA1_Channel6_IRQHandler 125 .word DMA1_Channel7_IRQHandler 126 .word ADC1_2_IRQHandler 127 .word USB_HP_CAN1_TX_IRQHandler 128 .word USB_LP_CAN1_RX0_IRQHandler 129 .word CAN1_RX1_IRQHandler 130 .word CAN1_SCE_IRQHandler 131 .word EXTI9_5_IRQHandler 132 .word TIM1_BRK_IRQHandler 133 .word TIM1_UP_IRQHandler 134 .word TIM1_TRG_COM_IRQHandler 135 .word TIM1_CC_IRQHandler 136 .word TIM2_IRQHandler 137 .word TIM3_IRQHandler 138 .word TIM4_IRQHandler 139 .word I2C1_EV_IRQHandler 140 .word I2C1_ER_IRQHandler 141 .word I2C2_EV_IRQHandler 142 .word I2C2_ER_IRQHandler 143 .word SPI1_IRQHandler 144 .word SPI2_IRQHandler 145 .word USART1_IRQHandler 146 .word USART2_IRQHandler 147 .word USART3_IRQHandler 148 .word EXTI15_10_IRQHandler 149 .word RTCAlarm_IRQHandler 150 .word USBWakeUp_IRQHandler 151 .word USBHD_IRQHandler 152 153/******************************************************************************* 154 Dummy Exception Handlers (infinite loops which can be modified) 155*******************************************************************************/ 156 .weak NMI_Handler 157 .thumb_set NMI_Handler,Default_Handler 158 159 .weak HardFault_Handler 160 .thumb_set HardFault_Handler,Default_Handler 161 162 .weak MemManage_Handler 163 .thumb_set MemManage_Handler,Default_Handler 164 165 .weak BusFault_Handler 166 .thumb_set BusFault_Handler,Default_Handler 167 168 .weak UsageFault_Handler 169 .thumb_set UsageFault_Handler,Default_Handler 170 171 .weak SVC_Handler 172 .thumb_set SVC_Handler,Default_Handler 173 174 .weak DebugMon_Handler 175 .thumb_set DebugMon_Handler,Default_Handler 176 177 .weak PendSV_Handler 178 .thumb_set PendSV_Handler,Default_Handler 179 180 .weak SysTick_Handler 181 .thumb_set SysTick_Handler,Default_Handler 182 183 .weak WWDG_IRQHandler 184 .thumb_set WWDG_IRQHandler,Default_Handler 185 186 .weak PVD_IRQHandler 187 .thumb_set PVD_IRQHandler,Default_Handler 188 189 .weak TAMPER_IRQHandler 190 .thumb_set TAMPER_IRQHandler,Default_Handler 191 192 .weak RTC_IRQHandler 193 .thumb_set RTC_IRQHandler,Default_Handler 194 195 .weak FLASH_IRQHandler 196 .thumb_set FLASH_IRQHandler,Default_Handler 197 198 .weak RCC_IRQHandler 199 .thumb_set RCC_IRQHandler,Default_Handler 200 201 .weak EXTI0_IRQHandler 202 .thumb_set EXTI0_IRQHandler,Default_Handler 203 204 .weak EXTI1_IRQHandler 205 .thumb_set EXTI1_IRQHandler,Default_Handler 206 207 .weak EXTI2_IRQHandler 208 .thumb_set EXTI2_IRQHandler,Default_Handler 209 210 .weak EXTI3_IRQHandler 211 .thumb_set EXTI3_IRQHandler,Default_Handler 212 213 .weak EXTI4_IRQHandler 214 .thumb_set EXTI4_IRQHandler,Default_Handler 215 216 .weak DMA1_Channel1_IRQHandler 217 .thumb_set DMA1_Channel1_IRQHandler,Default_Handler 218 219 .weak DMA1_Channel2_IRQHandler 220 .thumb_set DMA1_Channel2_IRQHandler,Default_Handler 221 222 .weak DMA1_Channel3_IRQHandler 223 .thumb_set DMA1_Channel3_IRQHandler,Default_Handler 224 225 .weak DMA1_Channel4_IRQHandler 226 .thumb_set DMA1_Channel4_IRQHandler,Default_Handler 227 228 .weak DMA1_Channel5_IRQHandler 229 .thumb_set DMA1_Channel5_IRQHandler,Default_Handler 230 231 .weak DMA1_Channel6_IRQHandler 232 .thumb_set DMA1_Channel6_IRQHandler,Default_Handler 233 234 .weak DMA1_Channel7_IRQHandler 235 .thumb_set DMA1_Channel7_IRQHandler,Default_Handler 236 237 .weak ADC1_2_IRQHandler 238 .thumb_set ADC1_2_IRQHandler,Default_Handler 239 240 .weak USB_HP_CAN1_TX_IRQHandler 241 .thumb_set USB_HP_CAN1_TX_IRQHandler,Default_Handler 242 243 .weak USB_LP_CAN1_RX0_IRQHandler 244 .thumb_set USB_LP_CAN1_RX0_IRQHandler,Default_Handler 245 246 .weak CAN1_RX1_IRQHandler 247 .thumb_set CAN1_RX1_IRQHandler,Default_Handler 248 249 .weak CAN1_SCE_IRQHandler 250 .thumb_set CAN1_SCE_IRQHandler,Default_Handler 251 252 .weak EXTI9_5_IRQHandler 253 .thumb_set EXTI9_5_IRQHandler,Default_Handler 254 255 .weak TIM1_BRK_IRQHandler 256 .thumb_set TIM1_BRK_IRQHandler,Default_Handler 257 258 .weak TIM1_UP_IRQHandler 259 .thumb_set TIM1_UP_IRQHandler,Default_Handler 260 261 .weak TIM1_TRG_COM_IRQHandler 262 .thumb_set TIM1_TRG_COM_IRQHandler,Default_Handler 263 264 .weak TIM1_CC_IRQHandler 265 .thumb_set TIM1_CC_IRQHandler,Default_Handler 266 267 .weak TIM2_IRQHandler 268 .thumb_set TIM2_IRQHandler,Default_Handler 269 270 .weak TIM3_IRQHandler 271 .thumb_set TIM3_IRQHandler,Default_Handler 272 273 .weak TIM4_IRQHandler 274 .thumb_set TIM4_IRQHandler,Default_Handler 275 276 .weak I2C1_EV_IRQHandler 277 .thumb_set I2C1_EV_IRQHandler,Default_Handler 278 279 .weak I2C1_ER_IRQHandler 280 .thumb_set I2C1_ER_IRQHandler,Default_Handler 281 282 .weak I2C2_EV_IRQHandler 283 .thumb_set I2C2_EV_IRQHandler,Default_Handler 284 285 .weak I2C2_ER_IRQHandler 286 .thumb_set I2C2_ER_IRQHandler,Default_Handler 287 288 .weak SPI1_IRQHandler 289 .thumb_set SPI1_IRQHandler,Default_Handler 290 291 .weak SPI2_IRQHandler 292 .thumb_set SPI2_IRQHandler,Default_Handler 293 294 .weak USART1_IRQHandler 295 .thumb_set USART1_IRQHandler,Default_Handler 296 297 .weak USART2_IRQHandler 298 .thumb_set USART2_IRQHandler,Default_Handler 299 300 .weak USART3_IRQHandler 301 .thumb_set USART3_IRQHandler,Default_Handler 302 303 .weak EXTI15_10_IRQHandler 304 .thumb_set EXTI15_10_IRQHandler,Default_Handler 305 306 .weak RTCAlarm_IRQHandler 307 .thumb_set RTCAlarm_IRQHandler,Default_Handler 308 309 .weak USBWakeUp_IRQHandler 310 .thumb_set USBWakeUp_IRQHandler,Default_Handler 311 312 .weak USBHD_IRQHandler 313 .thumb_set USBHD_IRQHandler,Default_Handler 314