1 ;********************************************************************************
2 ;* File Name : startup_stm32f412rx.s
3 ;* Author : MCD Application Team
4 ;* Description : STM32F412Rx devices vector table for EWARM toolchain.
5 ;* This module performs:
6 ;* - Set the initial SP
7 ;* - Set the initial PC == _iar_program_start,
8 ;* - Set the vector table entries with the exceptions ISR
10 ;* - Configure the system clock
11 ;* - Branches to main in the C library (which eventually
13 ;* After Reset the Cortex-M4 processor is in Thread mode,
14 ;* priority is Privileged, and the Stack is set to Main.
15 ;*******************************************************************************
18 ;* Copyright (c) 2017 STMicroelectronics.
19 ;* All rights reserved.
21 ;* This software is licensed under terms that can be found in the LICENSE file
22 ;* in the root directory of this software component.
23 ;* If no LICENSE file comes with this software, it is provided AS-IS.
25 ;*******************************************************************************
28 ; The modules in this file are included in the libraries, and may be replaced
29 ; by any user-defined modules that define the PUBLIC symbol _program_start or
30 ; a user defined start symbol.
31 ; To override the cstartup defined in the library, simply add your modified
32 ; version to the workbench project.
34 ; The vector table is normally located at address 0.
35 ; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
36 ; The name "__vector_table" has special meaning for C-SPY:
37 ; it is where the SP start value is found, and the NVIC vector
38 ; table register (VTOR) is initialized to this address if != 0.
45 ;; Forward declaration of sections.
46 SECTION CSTACK:DATA:NOROOT(3)
48 SECTION .intvec:CODE:NOROOT(2)
50 EXTERN __iar_program_start
57 DCD Reset_Handler ; Reset Handler
59 DCD NMI_Handler ; NMI Handler
60 DCD HardFault_Handler ; Hard Fault Handler
61 DCD MemManage_Handler ; MPU Fault Handler
62 DCD BusFault_Handler ; Bus Fault Handler
63 DCD UsageFault_Handler ; Usage Fault Handler
68 DCD SVC_Handler ; SVCall Handler
69 DCD DebugMon_Handler ; Debug Monitor Handler
71 DCD PendSV_Handler ; PendSV Handler
72 DCD SysTick_Handler ; SysTick Handler
75 DCD WWDG_IRQHandler ; Window WatchDog
76 DCD PVD_IRQHandler ; PVD through EXTI Line detection
77 DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
78 DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
79 DCD FLASH_IRQHandler ; FLASH
80 DCD RCC_IRQHandler ; RCC
81 DCD EXTI0_IRQHandler ; EXTI Line0
82 DCD EXTI1_IRQHandler ; EXTI Line1
83 DCD EXTI2_IRQHandler ; EXTI Line2
84 DCD EXTI3_IRQHandler ; EXTI Line3
85 DCD EXTI4_IRQHandler ; EXTI Line4
86 DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0
87 DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1
88 DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2
89 DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3
90 DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4
91 DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5
92 DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6
93 DCD ADC_IRQHandler ; ADC1
94 DCD CAN1_TX_IRQHandler ; CAN1 TX
95 DCD CAN1_RX0_IRQHandler ; CAN1 RX0
96 DCD CAN1_RX1_IRQHandler ; CAN1 RX1
97 DCD CAN1_SCE_IRQHandler ; CAN1 SCE
98 DCD EXTI9_5_IRQHandler ; External Line[9:5]s
99 DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9
100 DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10
101 DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11
102 DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
103 DCD TIM2_IRQHandler ; TIM2
104 DCD TIM3_IRQHandler ; TIM3
105 DCD TIM4_IRQHandler ; TIM4
106 DCD I2C1_EV_IRQHandler ; I2C1 Event
107 DCD I2C1_ER_IRQHandler ; I2C1 Error
108 DCD I2C2_EV_IRQHandler ; I2C2 Event
109 DCD I2C2_ER_IRQHandler ; I2C2 Error
110 DCD SPI1_IRQHandler ; SPI1
111 DCD SPI2_IRQHandler ; SPI2
112 DCD USART1_IRQHandler ; USART1
113 DCD USART2_IRQHandler ; USART2
114 DCD USART3_IRQHandler ; USART3
115 DCD EXTI15_10_IRQHandler ; External Line[15:10]s
116 DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line
117 DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line
118 DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12
119 DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13
120 DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14
121 DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare
122 DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7
124 DCD SDIO_IRQHandler ; SDIO
125 DCD TIM5_IRQHandler ; TIM5
126 DCD SPI3_IRQHandler ; SPI3
129 DCD TIM6_IRQHandler ; TIM6
130 DCD TIM7_IRQHandler ; TIM7
131 DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0
132 DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1
133 DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2
134 DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3
135 DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4
136 DCD DFSDM1_FLT0_IRQHandler ; DFSDM1 Filter0
137 DCD DFSDM1_FLT1_IRQHandler ; DFSDM1 Filter1
138 DCD CAN2_TX_IRQHandler ; CAN2 TX
139 DCD CAN2_RX0_IRQHandler ; CAN2 RX0
140 DCD CAN2_RX1_IRQHandler ; CAN2 RX1
141 DCD CAN2_SCE_IRQHandler ; CAN2 SCE
142 DCD OTG_FS_IRQHandler ; USB OTG FS
143 DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5
144 DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6
145 DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7
146 DCD USART6_IRQHandler ; USART6
147 DCD I2C3_EV_IRQHandler ; I2C3 event
148 DCD I2C3_ER_IRQHandler ; I2C3 error
155 DCD RNG_IRQHandler ; RNG
156 DCD FPU_IRQHandler ; FPU
159 DCD SPI4_IRQHandler ; SPI4
160 DCD SPI5_IRQHandler ; SPI5
167 DCD QUADSPI_IRQHandler ; QuadSPI
170 DCD FMPI2C1_EV_IRQHandler ; FMPI2C1 Event
171 DCD FMPI2C1_ER_IRQHandler ; FMPI2C1 Error
173 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
175 ;; Default interrupt handlers.
178 PUBWEAK Reset_Handler
179 SECTION .text:CODE:REORDER:NOROOT(2)
184 LDR R0, =__iar_program_start
188 SECTION .text:CODE:REORDER:NOROOT(1)
192 PUBWEAK HardFault_Handler
193 SECTION .text:CODE:REORDER:NOROOT(1)
197 PUBWEAK MemManage_Handler
198 SECTION .text:CODE:REORDER:NOROOT(1)
202 PUBWEAK BusFault_Handler
203 SECTION .text:CODE:REORDER:NOROOT(1)
207 PUBWEAK UsageFault_Handler
208 SECTION .text:CODE:REORDER:NOROOT(1)
213 SECTION .text:CODE:REORDER:NOROOT(1)
217 PUBWEAK DebugMon_Handler
218 SECTION .text:CODE:REORDER:NOROOT(1)
222 PUBWEAK PendSV_Handler
223 SECTION .text:CODE:REORDER:NOROOT(1)
227 PUBWEAK SysTick_Handler
228 SECTION .text:CODE:REORDER:NOROOT(1)
232 PUBWEAK WWDG_IRQHandler
233 SECTION .text:CODE:REORDER:NOROOT(1)
237 PUBWEAK PVD_IRQHandler
238 SECTION .text:CODE:REORDER:NOROOT(1)
242 PUBWEAK TAMP_STAMP_IRQHandler
243 SECTION .text:CODE:REORDER:NOROOT(1)
244 TAMP_STAMP_IRQHandler
245 B TAMP_STAMP_IRQHandler
247 PUBWEAK RTC_WKUP_IRQHandler
248 SECTION .text:CODE:REORDER:NOROOT(1)
250 B RTC_WKUP_IRQHandler
252 PUBWEAK FLASH_IRQHandler
253 SECTION .text:CODE:REORDER:NOROOT(1)
257 PUBWEAK RCC_IRQHandler
258 SECTION .text:CODE:REORDER:NOROOT(1)
262 PUBWEAK EXTI0_IRQHandler
263 SECTION .text:CODE:REORDER:NOROOT(1)
267 PUBWEAK EXTI1_IRQHandler
268 SECTION .text:CODE:REORDER:NOROOT(1)
272 PUBWEAK EXTI2_IRQHandler
273 SECTION .text:CODE:REORDER:NOROOT(1)
277 PUBWEAK EXTI3_IRQHandler
278 SECTION .text:CODE:REORDER:NOROOT(1)
282 PUBWEAK EXTI4_IRQHandler
283 SECTION .text:CODE:REORDER:NOROOT(1)
287 PUBWEAK DMA1_Stream0_IRQHandler
288 SECTION .text:CODE:REORDER:NOROOT(1)
289 DMA1_Stream0_IRQHandler
290 B DMA1_Stream0_IRQHandler
292 PUBWEAK DMA1_Stream1_IRQHandler
293 SECTION .text:CODE:REORDER:NOROOT(1)
294 DMA1_Stream1_IRQHandler
295 B DMA1_Stream1_IRQHandler
297 PUBWEAK DMA1_Stream2_IRQHandler
298 SECTION .text:CODE:REORDER:NOROOT(1)
299 DMA1_Stream2_IRQHandler
300 B DMA1_Stream2_IRQHandler
302 PUBWEAK DMA1_Stream3_IRQHandler
303 SECTION .text:CODE:REORDER:NOROOT(1)
304 DMA1_Stream3_IRQHandler
305 B DMA1_Stream3_IRQHandler
307 PUBWEAK DMA1_Stream4_IRQHandler
308 SECTION .text:CODE:REORDER:NOROOT(1)
309 DMA1_Stream4_IRQHandler
310 B DMA1_Stream4_IRQHandler
312 PUBWEAK DMA1_Stream5_IRQHandler
313 SECTION .text:CODE:REORDER:NOROOT(1)
314 DMA1_Stream5_IRQHandler
315 B DMA1_Stream5_IRQHandler
317 PUBWEAK DMA1_Stream6_IRQHandler
318 SECTION .text:CODE:REORDER:NOROOT(1)
319 DMA1_Stream6_IRQHandler
320 B DMA1_Stream6_IRQHandler
322 PUBWEAK ADC_IRQHandler
323 SECTION .text:CODE:REORDER:NOROOT(1)
327 PUBWEAK CAN1_TX_IRQHandler
328 SECTION .text:CODE:REORDER:NOROOT(1)
332 PUBWEAK CAN1_RX0_IRQHandler
333 SECTION .text:CODE:REORDER:NOROOT(1)
335 B CAN1_RX0_IRQHandler
337 PUBWEAK CAN1_RX1_IRQHandler
338 SECTION .text:CODE:REORDER:NOROOT(1)
340 B CAN1_RX1_IRQHandler
342 PUBWEAK CAN1_SCE_IRQHandler
343 SECTION .text:CODE:REORDER:NOROOT(1)
345 B CAN1_SCE_IRQHandler
347 PUBWEAK EXTI9_5_IRQHandler
348 SECTION .text:CODE:REORDER:NOROOT(1)
352 PUBWEAK TIM1_BRK_TIM9_IRQHandler
353 SECTION .text:CODE:REORDER:NOROOT(1)
354 TIM1_BRK_TIM9_IRQHandler
355 B TIM1_BRK_TIM9_IRQHandler
357 PUBWEAK TIM1_UP_TIM10_IRQHandler
358 SECTION .text:CODE:REORDER:NOROOT(1)
359 TIM1_UP_TIM10_IRQHandler
360 B TIM1_UP_TIM10_IRQHandler
362 PUBWEAK TIM1_TRG_COM_TIM11_IRQHandler
363 SECTION .text:CODE:REORDER:NOROOT(1)
364 TIM1_TRG_COM_TIM11_IRQHandler
365 B TIM1_TRG_COM_TIM11_IRQHandler
367 PUBWEAK TIM1_CC_IRQHandler
368 SECTION .text:CODE:REORDER:NOROOT(1)
372 PUBWEAK TIM2_IRQHandler
373 SECTION .text:CODE:REORDER:NOROOT(1)
377 PUBWEAK TIM3_IRQHandler
378 SECTION .text:CODE:REORDER:NOROOT(1)
382 PUBWEAK TIM4_IRQHandler
383 SECTION .text:CODE:REORDER:NOROOT(1)
387 PUBWEAK I2C1_EV_IRQHandler
388 SECTION .text:CODE:REORDER:NOROOT(1)
392 PUBWEAK I2C1_ER_IRQHandler
393 SECTION .text:CODE:REORDER:NOROOT(1)
397 PUBWEAK I2C2_EV_IRQHandler
398 SECTION .text:CODE:REORDER:NOROOT(1)
402 PUBWEAK I2C2_ER_IRQHandler
403 SECTION .text:CODE:REORDER:NOROOT(1)
407 PUBWEAK SPI1_IRQHandler
408 SECTION .text:CODE:REORDER:NOROOT(1)
412 PUBWEAK SPI2_IRQHandler
413 SECTION .text:CODE:REORDER:NOROOT(1)
417 PUBWEAK USART1_IRQHandler
418 SECTION .text:CODE:REORDER:NOROOT(1)
422 PUBWEAK USART2_IRQHandler
423 SECTION .text:CODE:REORDER:NOROOT(1)
427 PUBWEAK USART3_IRQHandler
428 SECTION .text:CODE:REORDER:NOROOT(1)
432 PUBWEAK EXTI15_10_IRQHandler
433 SECTION .text:CODE:REORDER:NOROOT(1)
435 B EXTI15_10_IRQHandler
437 PUBWEAK RTC_Alarm_IRQHandler
438 SECTION .text:CODE:REORDER:NOROOT(1)
440 B RTC_Alarm_IRQHandler
442 PUBWEAK OTG_FS_WKUP_IRQHandler
443 SECTION .text:CODE:REORDER:NOROOT(1)
444 OTG_FS_WKUP_IRQHandler
445 B OTG_FS_WKUP_IRQHandler
447 PUBWEAK TIM8_BRK_TIM12_IRQHandler
448 SECTION .text:CODE:REORDER:NOROOT(1)
449 TIM8_BRK_TIM12_IRQHandler
450 B TIM8_BRK_TIM12_IRQHandler
452 PUBWEAK TIM8_UP_TIM13_IRQHandler
453 SECTION .text:CODE:REORDER:NOROOT(1)
454 TIM8_UP_TIM13_IRQHandler
455 B TIM8_UP_TIM13_IRQHandler
457 PUBWEAK TIM8_TRG_COM_TIM14_IRQHandler
458 SECTION .text:CODE:REORDER:NOROOT(1)
459 TIM8_TRG_COM_TIM14_IRQHandler
460 B TIM8_TRG_COM_TIM14_IRQHandler
462 PUBWEAK TIM8_CC_IRQHandler
463 SECTION .text:CODE:REORDER:NOROOT(1)
467 PUBWEAK DMA1_Stream7_IRQHandler
468 SECTION .text:CODE:REORDER:NOROOT(1)
469 DMA1_Stream7_IRQHandler
470 B DMA1_Stream7_IRQHandler
473 PUBWEAK SDIO_IRQHandler
474 SECTION .text:CODE:REORDER:NOROOT(1)
478 PUBWEAK TIM5_IRQHandler
479 SECTION .text:CODE:REORDER:NOROOT(1)
483 PUBWEAK SPI3_IRQHandler
484 SECTION .text:CODE:REORDER:NOROOT(1)
488 PUBWEAK TIM6_IRQHandler
489 SECTION .text:CODE:REORDER:NOROOT(1)
493 PUBWEAK TIM7_IRQHandler
494 SECTION .text:CODE:REORDER:NOROOT(1)
498 PUBWEAK DMA2_Stream0_IRQHandler
499 SECTION .text:CODE:REORDER:NOROOT(1)
500 DMA2_Stream0_IRQHandler
501 B DMA2_Stream0_IRQHandler
503 PUBWEAK DMA2_Stream1_IRQHandler
504 SECTION .text:CODE:REORDER:NOROOT(1)
505 DMA2_Stream1_IRQHandler
506 B DMA2_Stream1_IRQHandler
508 PUBWEAK DMA2_Stream2_IRQHandler
509 SECTION .text:CODE:REORDER:NOROOT(1)
510 DMA2_Stream2_IRQHandler
511 B DMA2_Stream2_IRQHandler
513 PUBWEAK DMA2_Stream3_IRQHandler
514 SECTION .text:CODE:REORDER:NOROOT(1)
515 DMA2_Stream3_IRQHandler
516 B DMA2_Stream3_IRQHandler
518 PUBWEAK DMA2_Stream4_IRQHandler
519 SECTION .text:CODE:REORDER:NOROOT(1)
520 DMA2_Stream4_IRQHandler
521 B DMA2_Stream4_IRQHandler
523 PUBWEAK DFSDM1_FLT0_IRQHandler
524 SECTION .text:CODE:REORDER:NOROOT(1)
525 DFSDM1_FLT0_IRQHandler
526 B DFSDM1_FLT0_IRQHandler
528 PUBWEAK DFSDM1_FLT1_IRQHandler
529 SECTION .text:CODE:REORDER:NOROOT(1)
530 DFSDM1_FLT1_IRQHandler
531 B DFSDM1_FLT1_IRQHandler
533 PUBWEAK CAN2_TX_IRQHandler
534 SECTION .text:CODE:REORDER:NOROOT(1)
538 PUBWEAK CAN2_RX0_IRQHandler
539 SECTION .text:CODE:REORDER:NOROOT(1)
541 B CAN2_RX0_IRQHandler
543 PUBWEAK CAN2_RX1_IRQHandler
544 SECTION .text:CODE:REORDER:NOROOT(1)
546 B CAN2_RX1_IRQHandler
548 PUBWEAK CAN2_SCE_IRQHandler
549 SECTION .text:CODE:REORDER:NOROOT(1)
551 B CAN2_SCE_IRQHandler
553 PUBWEAK OTG_FS_IRQHandler
554 SECTION .text:CODE:REORDER:NOROOT(1)
558 PUBWEAK DMA2_Stream5_IRQHandler
559 SECTION .text:CODE:REORDER:NOROOT(1)
560 DMA2_Stream5_IRQHandler
561 B DMA2_Stream5_IRQHandler
563 PUBWEAK DMA2_Stream6_IRQHandler
564 SECTION .text:CODE:REORDER:NOROOT(1)
565 DMA2_Stream6_IRQHandler
566 B DMA2_Stream6_IRQHandler
568 PUBWEAK DMA2_Stream7_IRQHandler
569 SECTION .text:CODE:REORDER:NOROOT(1)
570 DMA2_Stream7_IRQHandler
571 B DMA2_Stream7_IRQHandler
573 PUBWEAK USART6_IRQHandler
574 SECTION .text:CODE:REORDER:NOROOT(1)
578 PUBWEAK I2C3_EV_IRQHandler
579 SECTION .text:CODE:REORDER:NOROOT(1)
583 PUBWEAK I2C3_ER_IRQHandler
584 SECTION .text:CODE:REORDER:NOROOT(1)
588 PUBWEAK RNG_IRQHandler
589 SECTION .text:CODE:REORDER:NOROOT(1)
593 PUBWEAK FPU_IRQHandler
594 SECTION .text:CODE:REORDER:NOROOT(1)
598 PUBWEAK SPI4_IRQHandler
599 SECTION .text:CODE:REORDER:NOROOT(1)
603 PUBWEAK SPI5_IRQHandler
604 SECTION .text:CODE:REORDER:NOROOT(1)
608 PUBWEAK QUADSPI_IRQHandler
609 SECTION .text:CODE:REORDER:NOROOT(1)
613 PUBWEAK FMPI2C1_EV_IRQHandler
614 SECTION .text:CODE:REORDER:NOROOT(1)
615 FMPI2C1_EV_IRQHandler
616 B FMPI2C1_EV_IRQHandler
618 PUBWEAK FMPI2C1_ER_IRQHandler
619 SECTION .text:CODE:REORDER:NOROOT(1)
620 FMPI2C1_ER_IRQHandler
621 B FMPI2C1_ER_IRQHandler