1 ;/******************** (C) COPYRIGHT 2013 STMicroelectronics ********************
2 ;* File Name : startup_stm32f40xx.s
3 ;* Author : MCD Application Team
5 ;* Date : 20-February-2013
6 ;* Description : STM32F40xx/41xx devices vector table for EWARM toolchain.
7 ;* This module performs:
8 ;* - Set the initial SP
9 ;* - Set the initial PC == _iar_program_start,
10 ;* - Set the vector table entries with the exceptions ISR
12 ;* - Configure the system clock and the external SRAM mounted on
13 ;* STM324xG-EVAL board to be used as data memory (optional,
14 ;* to be enabled by user)
15 ;* - Branches to main in the C library (which eventually
17 ;* After Reset the Cortex-M4 processor is in Thread mode,
18 ;* priority is Privileged, and the Stack is set to Main.
19 ;********************************************************************************
21 ;* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
22 ;* You may not use this file except in compliance with the License.
23 ;* You may obtain a copy of the License at:
25 ;* http://www.st.com/software_license_agreement_liberty_v2
27 ;* Unless required by applicable law or agreed to in writing, software
28 ;* distributed under the License is distributed on an "AS IS" BASIS,
29 ;* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
30 ;* See the License for the specific language governing permissions and
31 ;* limitations under the License.
33 ;*******************************************************************************/
36 ; The modules in this file are included in the libraries, and may be replaced
37 ; by any user-defined modules that define the PUBLIC symbol _program_start or
38 ; a user defined start symbol.
39 ; To override the cstartup defined in the library, simply add your modified
40 ; version to the workbench project.
42 ; The vector table is normally located at address 0.
43 ; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
44 ; The name "__vector_table" has special meaning for C-SPY:
45 ; it is where the SP start value is found, and the NVIC vector
46 ; table register (VTOR) is initialized to this address if != 0.
53 ;; Forward declaration of sections.
54 SECTION CSTACK:DATA:NOROOT(3)
56 SECTION .intvec:CODE:NOROOT(2)
58 EXTERN __iar_program_start
65 DCD Reset_Handler ; Reset Handler
67 DCD NMI_Handler ; NMI Handler
68 DCD HardFault_Handler ; Hard Fault Handler
69 DCD MemManage_Handler ; MPU Fault Handler
70 DCD BusFault_Handler ; Bus Fault Handler
71 DCD UsageFault_Handler ; Usage Fault Handler
76 DCD SVC_Handler ; SVCall Handler
77 DCD DebugMon_Handler ; Debug Monitor Handler
79 DCD PendSV_Handler ; PendSV Handler
80 DCD SysTick_Handler ; SysTick Handler
83 DCD WWDG_IRQHandler ; Window WatchDog
84 DCD PVD_IRQHandler ; PVD through EXTI Line detection
85 DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
86 DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
87 DCD FLASH_IRQHandler ; FLASH
88 DCD RCC_IRQHandler ; RCC
89 DCD EXTI0_IRQHandler ; EXTI Line0
90 DCD EXTI1_IRQHandler ; EXTI Line1
91 DCD EXTI2_IRQHandler ; EXTI Line2
92 DCD EXTI3_IRQHandler ; EXTI Line3
93 DCD EXTI4_IRQHandler ; EXTI Line4
94 DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0
95 DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1
96 DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2
97 DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3
98 DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4
99 DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5
100 DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6
101 DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s
102 DCD CAN1_TX_IRQHandler ; CAN1 TX
103 DCD CAN1_RX0_IRQHandler ; CAN1 RX0
104 DCD CAN1_RX1_IRQHandler ; CAN1 RX1
105 DCD CAN1_SCE_IRQHandler ; CAN1 SCE
106 DCD EXTI9_5_IRQHandler ; External Line[9:5]s
107 DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9
108 DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10
109 DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11
110 DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
111 DCD TIM2_IRQHandler ; TIM2
112 DCD TIM3_IRQHandler ; TIM3
113 DCD TIM4_IRQHandler ; TIM4
114 DCD I2C1_EV_IRQHandler ; I2C1 Event
115 DCD I2C1_ER_IRQHandler ; I2C1 Error
116 DCD I2C2_EV_IRQHandler ; I2C2 Event
117 DCD I2C2_ER_IRQHandler ; I2C2 Error
118 DCD SPI1_IRQHandler ; SPI1
119 DCD SPI2_IRQHandler ; SPI2
120 DCD USART1_IRQHandler ; USART1
121 DCD USART2_IRQHandler ; USART2
122 DCD USART3_IRQHandler ; USART3
123 DCD EXTI15_10_IRQHandler ; External Line[15:10]s
124 DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line
125 DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line
126 DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12
127 DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13
128 DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14
129 DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare
130 DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7
131 DCD FSMC_IRQHandler ; FSMC
132 DCD SDIO_IRQHandler ; SDIO
133 DCD TIM5_IRQHandler ; TIM5
134 DCD SPI3_IRQHandler ; SPI3
135 DCD UART4_IRQHandler ; UART4
136 DCD UART5_IRQHandler ; UART5
137 DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors
138 DCD TIM7_IRQHandler ; TIM7
139 DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0
140 DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1
141 DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2
142 DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3
143 DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4
144 DCD ETH_IRQHandler ; Ethernet
145 DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line
146 DCD CAN2_TX_IRQHandler ; CAN2 TX
147 DCD CAN2_RX0_IRQHandler ; CAN2 RX0
148 DCD CAN2_RX1_IRQHandler ; CAN2 RX1
149 DCD CAN2_SCE_IRQHandler ; CAN2 SCE
150 DCD OTG_FS_IRQHandler ; USB OTG FS
151 DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5
152 DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6
153 DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7
154 DCD USART6_IRQHandler ; USART6
155 DCD I2C3_EV_IRQHandler ; I2C3 event
156 DCD I2C3_ER_IRQHandler ; I2C3 error
157 DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out
158 DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In
159 DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI
160 DCD OTG_HS_IRQHandler ; USB OTG HS
161 DCD DCMI_IRQHandler ; DCMI
162 DCD CRYP_IRQHandler ; CRYP crypto
163 DCD HASH_RNG_IRQHandler ; Hash and Rng
164 DCD FPU_IRQHandler ; FPU
166 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
168 ;; Default interrupt handlers.
171 PUBWEAK Reset_Handler
172 SECTION .text:CODE:REORDER:NOROOT(2)
177 LDR R0, =__iar_program_start
181 SECTION .text:CODE:REORDER:NOROOT(1)
185 PUBWEAK HardFault_Handler
186 SECTION .text:CODE:REORDER:NOROOT(1)
190 PUBWEAK MemManage_Handler
191 SECTION .text:CODE:REORDER:NOROOT(1)
195 PUBWEAK BusFault_Handler
196 SECTION .text:CODE:REORDER:NOROOT(1)
200 PUBWEAK UsageFault_Handler
201 SECTION .text:CODE:REORDER:NOROOT(1)
206 SECTION .text:CODE:REORDER:NOROOT(1)
210 PUBWEAK DebugMon_Handler
211 SECTION .text:CODE:REORDER:NOROOT(1)
215 PUBWEAK PendSV_Handler
216 SECTION .text:CODE:REORDER:NOROOT(1)
220 PUBWEAK SysTick_Handler
221 SECTION .text:CODE:REORDER:NOROOT(1)
225 PUBWEAK WWDG_IRQHandler
226 SECTION .text:CODE:REORDER:NOROOT(1)
230 PUBWEAK PVD_IRQHandler
231 SECTION .text:CODE:REORDER:NOROOT(1)
235 PUBWEAK TAMP_STAMP_IRQHandler
236 SECTION .text:CODE:REORDER:NOROOT(1)
237 TAMP_STAMP_IRQHandler
238 B TAMP_STAMP_IRQHandler
240 PUBWEAK RTC_WKUP_IRQHandler
241 SECTION .text:CODE:REORDER:NOROOT(1)
243 B RTC_WKUP_IRQHandler
245 PUBWEAK FLASH_IRQHandler
246 SECTION .text:CODE:REORDER:NOROOT(1)
250 PUBWEAK RCC_IRQHandler
251 SECTION .text:CODE:REORDER:NOROOT(1)
255 PUBWEAK EXTI0_IRQHandler
256 SECTION .text:CODE:REORDER:NOROOT(1)
260 PUBWEAK EXTI1_IRQHandler
261 SECTION .text:CODE:REORDER:NOROOT(1)
265 PUBWEAK EXTI2_IRQHandler
266 SECTION .text:CODE:REORDER:NOROOT(1)
270 PUBWEAK EXTI3_IRQHandler
271 SECTION .text:CODE:REORDER:NOROOT(1)
275 PUBWEAK EXTI4_IRQHandler
276 SECTION .text:CODE:REORDER:NOROOT(1)
280 PUBWEAK DMA1_Stream0_IRQHandler
281 SECTION .text:CODE:REORDER:NOROOT(1)
282 DMA1_Stream0_IRQHandler
283 B DMA1_Stream0_IRQHandler
285 PUBWEAK DMA1_Stream1_IRQHandler
286 SECTION .text:CODE:REORDER:NOROOT(1)
287 DMA1_Stream1_IRQHandler
288 B DMA1_Stream1_IRQHandler
290 PUBWEAK DMA1_Stream2_IRQHandler
291 SECTION .text:CODE:REORDER:NOROOT(1)
292 DMA1_Stream2_IRQHandler
293 B DMA1_Stream2_IRQHandler
295 PUBWEAK DMA1_Stream3_IRQHandler
296 SECTION .text:CODE:REORDER:NOROOT(1)
297 DMA1_Stream3_IRQHandler
298 B DMA1_Stream3_IRQHandler
300 PUBWEAK DMA1_Stream4_IRQHandler
301 SECTION .text:CODE:REORDER:NOROOT(1)
302 DMA1_Stream4_IRQHandler
303 B DMA1_Stream4_IRQHandler
305 PUBWEAK DMA1_Stream5_IRQHandler
306 SECTION .text:CODE:REORDER:NOROOT(1)
307 DMA1_Stream5_IRQHandler
308 B DMA1_Stream5_IRQHandler
310 PUBWEAK DMA1_Stream6_IRQHandler
311 SECTION .text:CODE:REORDER:NOROOT(1)
312 DMA1_Stream6_IRQHandler
313 B DMA1_Stream6_IRQHandler
315 PUBWEAK ADC_IRQHandler
316 SECTION .text:CODE:REORDER:NOROOT(1)
320 PUBWEAK CAN1_TX_IRQHandler
321 SECTION .text:CODE:REORDER:NOROOT(1)
325 PUBWEAK CAN1_RX0_IRQHandler
326 SECTION .text:CODE:REORDER:NOROOT(1)
328 B CAN1_RX0_IRQHandler
330 PUBWEAK CAN1_RX1_IRQHandler
331 SECTION .text:CODE:REORDER:NOROOT(1)
333 B CAN1_RX1_IRQHandler
335 PUBWEAK CAN1_SCE_IRQHandler
336 SECTION .text:CODE:REORDER:NOROOT(1)
338 B CAN1_SCE_IRQHandler
340 PUBWEAK EXTI9_5_IRQHandler
341 SECTION .text:CODE:REORDER:NOROOT(1)
345 PUBWEAK TIM1_BRK_TIM9_IRQHandler
346 SECTION .text:CODE:REORDER:NOROOT(1)
347 TIM1_BRK_TIM9_IRQHandler
348 B TIM1_BRK_TIM9_IRQHandler
350 PUBWEAK TIM1_UP_TIM10_IRQHandler
351 SECTION .text:CODE:REORDER:NOROOT(1)
352 TIM1_UP_TIM10_IRQHandler
353 B TIM1_UP_TIM10_IRQHandler
355 PUBWEAK TIM1_TRG_COM_TIM11_IRQHandler
356 SECTION .text:CODE:REORDER:NOROOT(1)
357 TIM1_TRG_COM_TIM11_IRQHandler
358 B TIM1_TRG_COM_TIM11_IRQHandler
360 PUBWEAK TIM1_CC_IRQHandler
361 SECTION .text:CODE:REORDER:NOROOT(1)
365 PUBWEAK TIM2_IRQHandler
366 SECTION .text:CODE:REORDER:NOROOT(1)
370 PUBWEAK TIM3_IRQHandler
371 SECTION .text:CODE:REORDER:NOROOT(1)
375 PUBWEAK TIM4_IRQHandler
376 SECTION .text:CODE:REORDER:NOROOT(1)
380 PUBWEAK I2C1_EV_IRQHandler
381 SECTION .text:CODE:REORDER:NOROOT(1)
385 PUBWEAK I2C1_ER_IRQHandler
386 SECTION .text:CODE:REORDER:NOROOT(1)
390 PUBWEAK I2C2_EV_IRQHandler
391 SECTION .text:CODE:REORDER:NOROOT(1)
395 PUBWEAK I2C2_ER_IRQHandler
396 SECTION .text:CODE:REORDER:NOROOT(1)
400 PUBWEAK SPI1_IRQHandler
401 SECTION .text:CODE:REORDER:NOROOT(1)
405 PUBWEAK SPI2_IRQHandler
406 SECTION .text:CODE:REORDER:NOROOT(1)
410 PUBWEAK USART1_IRQHandler
411 SECTION .text:CODE:REORDER:NOROOT(1)
415 PUBWEAK USART2_IRQHandler
416 SECTION .text:CODE:REORDER:NOROOT(1)
420 PUBWEAK USART3_IRQHandler
421 SECTION .text:CODE:REORDER:NOROOT(1)
425 PUBWEAK EXTI15_10_IRQHandler
426 SECTION .text:CODE:REORDER:NOROOT(1)
428 B EXTI15_10_IRQHandler
430 PUBWEAK RTC_Alarm_IRQHandler
431 SECTION .text:CODE:REORDER:NOROOT(1)
433 B RTC_Alarm_IRQHandler
435 PUBWEAK OTG_FS_WKUP_IRQHandler
436 SECTION .text:CODE:REORDER:NOROOT(1)
437 OTG_FS_WKUP_IRQHandler
438 B OTG_FS_WKUP_IRQHandler
440 PUBWEAK TIM8_BRK_TIM12_IRQHandler
441 SECTION .text:CODE:REORDER:NOROOT(1)
442 TIM8_BRK_TIM12_IRQHandler
443 B TIM8_BRK_TIM12_IRQHandler
445 PUBWEAK TIM8_UP_TIM13_IRQHandler
446 SECTION .text:CODE:REORDER:NOROOT(1)
447 TIM8_UP_TIM13_IRQHandler
448 B TIM8_UP_TIM13_IRQHandler
450 PUBWEAK TIM8_TRG_COM_TIM14_IRQHandler
451 SECTION .text:CODE:REORDER:NOROOT(1)
452 TIM8_TRG_COM_TIM14_IRQHandler
453 B TIM8_TRG_COM_TIM14_IRQHandler
455 PUBWEAK TIM8_CC_IRQHandler
456 SECTION .text:CODE:REORDER:NOROOT(1)
460 PUBWEAK DMA1_Stream7_IRQHandler
461 SECTION .text:CODE:REORDER:NOROOT(1)
462 DMA1_Stream7_IRQHandler
463 B DMA1_Stream7_IRQHandler
465 PUBWEAK FSMC_IRQHandler
466 SECTION .text:CODE:REORDER:NOROOT(1)
470 PUBWEAK SDIO_IRQHandler
471 SECTION .text:CODE:REORDER:NOROOT(1)
475 PUBWEAK TIM5_IRQHandler
476 SECTION .text:CODE:REORDER:NOROOT(1)
480 PUBWEAK SPI3_IRQHandler
481 SECTION .text:CODE:REORDER:NOROOT(1)
485 PUBWEAK UART4_IRQHandler
486 SECTION .text:CODE:REORDER:NOROOT(1)
490 PUBWEAK UART5_IRQHandler
491 SECTION .text:CODE:REORDER:NOROOT(1)
495 PUBWEAK TIM6_DAC_IRQHandler
496 SECTION .text:CODE:REORDER:NOROOT(1)
498 B TIM6_DAC_IRQHandler
500 PUBWEAK TIM7_IRQHandler
501 SECTION .text:CODE:REORDER:NOROOT(1)
505 PUBWEAK DMA2_Stream0_IRQHandler
506 SECTION .text:CODE:REORDER:NOROOT(1)
507 DMA2_Stream0_IRQHandler
508 B DMA2_Stream0_IRQHandler
510 PUBWEAK DMA2_Stream1_IRQHandler
511 SECTION .text:CODE:REORDER:NOROOT(1)
512 DMA2_Stream1_IRQHandler
513 B DMA2_Stream1_IRQHandler
515 PUBWEAK DMA2_Stream2_IRQHandler
516 SECTION .text:CODE:REORDER:NOROOT(1)
517 DMA2_Stream2_IRQHandler
518 B DMA2_Stream2_IRQHandler
520 PUBWEAK DMA2_Stream3_IRQHandler
521 SECTION .text:CODE:REORDER:NOROOT(1)
522 DMA2_Stream3_IRQHandler
523 B DMA2_Stream3_IRQHandler
525 PUBWEAK DMA2_Stream4_IRQHandler
526 SECTION .text:CODE:REORDER:NOROOT(1)
527 DMA2_Stream4_IRQHandler
528 B DMA2_Stream4_IRQHandler
530 PUBWEAK ETH_IRQHandler
531 SECTION .text:CODE:REORDER:NOROOT(1)
535 PUBWEAK ETH_WKUP_IRQHandler
536 SECTION .text:CODE:REORDER:NOROOT(1)
538 B ETH_WKUP_IRQHandler
540 PUBWEAK CAN2_TX_IRQHandler
541 SECTION .text:CODE:REORDER:NOROOT(1)
545 PUBWEAK CAN2_RX0_IRQHandler
546 SECTION .text:CODE:REORDER:NOROOT(1)
548 B CAN2_RX0_IRQHandler
550 PUBWEAK CAN2_RX1_IRQHandler
551 SECTION .text:CODE:REORDER:NOROOT(1)
553 B CAN2_RX1_IRQHandler
555 PUBWEAK CAN2_SCE_IRQHandler
556 SECTION .text:CODE:REORDER:NOROOT(1)
558 B CAN2_SCE_IRQHandler
560 PUBWEAK OTG_FS_IRQHandler
561 SECTION .text:CODE:REORDER:NOROOT(1)
565 PUBWEAK DMA2_Stream5_IRQHandler
566 SECTION .text:CODE:REORDER:NOROOT(1)
567 DMA2_Stream5_IRQHandler
568 B DMA2_Stream5_IRQHandler
570 PUBWEAK DMA2_Stream6_IRQHandler
571 SECTION .text:CODE:REORDER:NOROOT(1)
572 DMA2_Stream6_IRQHandler
573 B DMA2_Stream6_IRQHandler
575 PUBWEAK DMA2_Stream7_IRQHandler
576 SECTION .text:CODE:REORDER:NOROOT(1)
577 DMA2_Stream7_IRQHandler
578 B DMA2_Stream7_IRQHandler
580 PUBWEAK USART6_IRQHandler
581 SECTION .text:CODE:REORDER:NOROOT(1)
585 PUBWEAK I2C3_EV_IRQHandler
586 SECTION .text:CODE:REORDER:NOROOT(1)
590 PUBWEAK I2C3_ER_IRQHandler
591 SECTION .text:CODE:REORDER:NOROOT(1)
595 PUBWEAK OTG_HS_EP1_OUT_IRQHandler
596 SECTION .text:CODE:REORDER:NOROOT(1)
597 OTG_HS_EP1_OUT_IRQHandler
598 B OTG_HS_EP1_OUT_IRQHandler
600 PUBWEAK OTG_HS_EP1_IN_IRQHandler
601 SECTION .text:CODE:REORDER:NOROOT(1)
602 OTG_HS_EP1_IN_IRQHandler
603 B OTG_HS_EP1_IN_IRQHandler
605 PUBWEAK OTG_HS_WKUP_IRQHandler
606 SECTION .text:CODE:REORDER:NOROOT(1)
607 OTG_HS_WKUP_IRQHandler
608 B OTG_HS_WKUP_IRQHandler
610 PUBWEAK OTG_HS_IRQHandler
611 SECTION .text:CODE:REORDER:NOROOT(1)
615 PUBWEAK DCMI_IRQHandler
616 SECTION .text:CODE:REORDER:NOROOT(1)
620 PUBWEAK CRYP_IRQHandler
621 SECTION .text:CODE:REORDER:NOROOT(1)
625 PUBWEAK HASH_RNG_IRQHandler
626 SECTION .text:CODE:REORDER:NOROOT(1)
628 B HASH_RNG_IRQHandler
630 PUBWEAK FPU_IRQHandler
631 SECTION .text:CODE:REORDER:NOROOT(1)
636 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/