1 ;/******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
2 ;* File Name : startup_stm32f401xe.s
3 ;* Author : MCD Application Team
5 ;* Date : 18-February-2014
6 ;* Description : STM32F401xExx 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
13 ;* - Branches to main in the C library (which eventually
15 ;* After Reset the Cortex-M4 processor is in Thread mode,
16 ;* priority is Privileged, and the Stack is set to Main.
17 ;********************************************************************************
19 ;* Redistribution and use in source and binary forms, with or without modification,
20 ;* are permitted provided that the following conditions are met:
21 ;* 1. Redistributions of source code must retain the above copyright notice,
22 ;* this list of conditions and the following disclaimer.
23 ;* 2. Redistributions in binary form must reproduce the above copyright notice,
24 ;* this list of conditions and the following disclaimer in the documentation
25 ;* and/or other materials provided with the distribution.
26 ;* 3. Neither the name of STMicroelectronics nor the names of its contributors
27 ;* may be used to endorse or promote products derived from this software
28 ;* without specific prior written permission.
30 ;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
31 ;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
32 ;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
33 ;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
34 ;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
35 ;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
36 ;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
37 ;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
38 ;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39 ;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41 ;*******************************************************************************
44 ; The modules in this file are included in the libraries, and may be replaced
45 ; by any user-defined modules that define the PUBLIC symbol _program_start or
46 ; a user defined start symbol.
47 ; To override the cstartup defined in the library, simply add your modified
48 ; version to the workbench project.
50 ; The vector table is normally located at address 0.
51 ; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
52 ; The name "__vector_table" has special meaning for C-SPY:
53 ; it is where the SP start value is found, and the NVIC vector
54 ; table register (VTOR) is initialized to this address if != 0.
61 ;; Forward declaration of sections.
62 SECTION CSTACK:DATA:NOROOT(3)
64 SECTION .intvec:CODE:NOROOT(2)
66 EXTERN __iar_program_start
73 DCD Reset_Handler ; Reset Handler
75 DCD NMI_Handler ; NMI Handler
76 DCD HardFault_Handler ; Hard Fault Handler
77 DCD MemManage_Handler ; MPU Fault Handler
78 DCD BusFault_Handler ; Bus Fault Handler
79 DCD UsageFault_Handler ; Usage Fault Handler
84 DCD SVC_Handler ; SVCall Handler
85 DCD DebugMon_Handler ; Debug Monitor Handler
87 DCD PendSV_Handler ; PendSV Handler
88 DCD SysTick_Handler ; SysTick Handler
91 DCD WWDG_IRQHandler ; Window WatchDog
92 DCD PVD_IRQHandler ; PVD through EXTI Line detection
93 DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
94 DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
95 DCD FLASH_IRQHandler ; FLASH
96 DCD RCC_IRQHandler ; RCC
97 DCD EXTI0_IRQHandler ; EXTI Line0
98 DCD EXTI1_IRQHandler ; EXTI Line1
99 DCD EXTI2_IRQHandler ; EXTI Line2
100 DCD EXTI3_IRQHandler ; EXTI Line3
101 DCD EXTI4_IRQHandler ; EXTI Line4
102 DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0
103 DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1
104 DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2
105 DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3
106 DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4
107 DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5
108 DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6
109 DCD ADC_IRQHandler ; ADC1
114 DCD EXTI9_5_IRQHandler ; External Line[9:5]s
115 DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9
116 DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10
117 DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11
118 DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
119 DCD TIM2_IRQHandler ; TIM2
120 DCD TIM3_IRQHandler ; TIM3
121 DCD TIM4_IRQHandler ; TIM4
122 DCD I2C1_EV_IRQHandler ; I2C1 Event
123 DCD I2C1_ER_IRQHandler ; I2C1 Error
124 DCD I2C2_EV_IRQHandler ; I2C2 Event
125 DCD I2C2_ER_IRQHandler ; I2C2 Error
126 DCD SPI1_IRQHandler ; SPI1
127 DCD SPI2_IRQHandler ; SPI2
128 DCD USART1_IRQHandler ; USART1
129 DCD USART2_IRQHandler ; USART2
131 DCD EXTI15_10_IRQHandler ; External Line[15:10]s
132 DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line
133 DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line
138 DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7
140 DCD SDIO_IRQHandler ; SDIO
141 DCD TIM5_IRQHandler ; TIM5
142 DCD SPI3_IRQHandler ; SPI3
147 DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0
148 DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1
149 DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2
150 DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3
151 DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4
158 DCD OTG_FS_IRQHandler ; USB OTG FS
159 DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5
160 DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6
161 DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7
162 DCD USART6_IRQHandler ; USART6
163 DCD I2C3_EV_IRQHandler ; I2C3 event
164 DCD I2C3_ER_IRQHandler ; I2C3 error
172 DCD FPU_IRQHandler ; FPU
175 DCD SPI4_IRQHandler ; SPI4
177 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
179 ;; Default interrupt handlers.
182 PUBWEAK Reset_Handler
183 SECTION .text:CODE:REORDER(2)
188 LDR R0, =__iar_program_start
192 SECTION .text:CODE:REORDER(1)
196 PUBWEAK HardFault_Handler
197 SECTION .text:CODE:REORDER(1)
201 PUBWEAK MemManage_Handler
202 SECTION .text:CODE:REORDER(1)
206 PUBWEAK BusFault_Handler
207 SECTION .text:CODE:REORDER(1)
211 PUBWEAK UsageFault_Handler
212 SECTION .text:CODE:REORDER(1)
217 SECTION .text:CODE:REORDER(1)
221 PUBWEAK DebugMon_Handler
222 SECTION .text:CODE:REORDER(1)
226 PUBWEAK PendSV_Handler
227 SECTION .text:CODE:REORDER(1)
231 PUBWEAK SysTick_Handler
232 SECTION .text:CODE:REORDER(1)
236 PUBWEAK WWDG_IRQHandler
237 SECTION .text:CODE:REORDER(1)
241 PUBWEAK PVD_IRQHandler
242 SECTION .text:CODE:REORDER(1)
246 PUBWEAK TAMP_STAMP_IRQHandler
247 SECTION .text:CODE:REORDER(1)
248 TAMP_STAMP_IRQHandler
249 B TAMP_STAMP_IRQHandler
251 PUBWEAK RTC_WKUP_IRQHandler
252 SECTION .text:CODE:REORDER(1)
254 B RTC_WKUP_IRQHandler
256 PUBWEAK FLASH_IRQHandler
257 SECTION .text:CODE:REORDER(1)
261 PUBWEAK RCC_IRQHandler
262 SECTION .text:CODE:REORDER(1)
266 PUBWEAK EXTI0_IRQHandler
267 SECTION .text:CODE:REORDER(1)
271 PUBWEAK EXTI1_IRQHandler
272 SECTION .text:CODE:REORDER(1)
276 PUBWEAK EXTI2_IRQHandler
277 SECTION .text:CODE:REORDER(1)
281 PUBWEAK EXTI3_IRQHandler
282 SECTION .text:CODE:REORDER(1)
286 PUBWEAK EXTI4_IRQHandler
287 SECTION .text:CODE:REORDER(1)
291 PUBWEAK DMA1_Stream0_IRQHandler
292 SECTION .text:CODE:REORDER(1)
293 DMA1_Stream0_IRQHandler
294 B DMA1_Stream0_IRQHandler
296 PUBWEAK DMA1_Stream1_IRQHandler
297 SECTION .text:CODE:REORDER(1)
298 DMA1_Stream1_IRQHandler
299 B DMA1_Stream1_IRQHandler
301 PUBWEAK DMA1_Stream2_IRQHandler
302 SECTION .text:CODE:REORDER(1)
303 DMA1_Stream2_IRQHandler
304 B DMA1_Stream2_IRQHandler
306 PUBWEAK DMA1_Stream3_IRQHandler
307 SECTION .text:CODE:REORDER(1)
308 DMA1_Stream3_IRQHandler
309 B DMA1_Stream3_IRQHandler
311 PUBWEAK DMA1_Stream4_IRQHandler
312 SECTION .text:CODE:REORDER(1)
313 DMA1_Stream4_IRQHandler
314 B DMA1_Stream4_IRQHandler
316 PUBWEAK DMA1_Stream5_IRQHandler
317 SECTION .text:CODE:REORDER(1)
318 DMA1_Stream5_IRQHandler
319 B DMA1_Stream5_IRQHandler
321 PUBWEAK DMA1_Stream6_IRQHandler
322 SECTION .text:CODE:REORDER(1)
323 DMA1_Stream6_IRQHandler
324 B DMA1_Stream6_IRQHandler
326 PUBWEAK ADC_IRQHandler
327 SECTION .text:CODE:REORDER(1)
331 PUBWEAK EXTI9_5_IRQHandler
332 SECTION .text:CODE:REORDER(1)
336 PUBWEAK TIM1_BRK_TIM9_IRQHandler
337 SECTION .text:CODE:REORDER(1)
338 TIM1_BRK_TIM9_IRQHandler
339 B TIM1_BRK_TIM9_IRQHandler
341 PUBWEAK TIM1_UP_TIM10_IRQHandler
342 SECTION .text:CODE:REORDER(1)
343 TIM1_UP_TIM10_IRQHandler
344 B TIM1_UP_TIM10_IRQHandler
346 PUBWEAK TIM1_TRG_COM_TIM11_IRQHandler
347 SECTION .text:CODE:REORDER(1)
348 TIM1_TRG_COM_TIM11_IRQHandler
349 B TIM1_TRG_COM_TIM11_IRQHandler
351 PUBWEAK TIM1_CC_IRQHandler
352 SECTION .text:CODE:REORDER(1)
356 PUBWEAK TIM2_IRQHandler
357 SECTION .text:CODE:REORDER(1)
361 PUBWEAK TIM3_IRQHandler
362 SECTION .text:CODE:REORDER(1)
366 PUBWEAK TIM4_IRQHandler
367 SECTION .text:CODE:REORDER(1)
371 PUBWEAK I2C1_EV_IRQHandler
372 SECTION .text:CODE:REORDER(1)
376 PUBWEAK I2C1_ER_IRQHandler
377 SECTION .text:CODE:REORDER(1)
381 PUBWEAK I2C2_EV_IRQHandler
382 SECTION .text:CODE:REORDER(1)
386 PUBWEAK I2C2_ER_IRQHandler
387 SECTION .text:CODE:REORDER(1)
391 PUBWEAK SPI1_IRQHandler
392 SECTION .text:CODE:REORDER(1)
396 PUBWEAK SPI2_IRQHandler
397 SECTION .text:CODE:REORDER(1)
401 PUBWEAK USART1_IRQHandler
402 SECTION .text:CODE:REORDER(1)
406 PUBWEAK USART2_IRQHandler
407 SECTION .text:CODE:REORDER(1)
411 PUBWEAK EXTI15_10_IRQHandler
412 SECTION .text:CODE:REORDER(1)
414 B EXTI15_10_IRQHandler
416 PUBWEAK RTC_Alarm_IRQHandler
417 SECTION .text:CODE:REORDER(1)
419 B RTC_Alarm_IRQHandler
421 PUBWEAK OTG_FS_WKUP_IRQHandler
422 SECTION .text:CODE:REORDER(1)
423 OTG_FS_WKUP_IRQHandler
424 B OTG_FS_WKUP_IRQHandler
426 PUBWEAK DMA1_Stream7_IRQHandler
427 SECTION .text:CODE:REORDER(1)
428 DMA1_Stream7_IRQHandler
429 B DMA1_Stream7_IRQHandler
431 PUBWEAK SDIO_IRQHandler
432 SECTION .text:CODE:REORDER(1)
436 PUBWEAK TIM5_IRQHandler
437 SECTION .text:CODE:REORDER(1)
441 PUBWEAK SPI3_IRQHandler
442 SECTION .text:CODE:REORDER(1)
446 PUBWEAK DMA2_Stream0_IRQHandler
447 SECTION .text:CODE:REORDER(1)
448 DMA2_Stream0_IRQHandler
449 B DMA2_Stream0_IRQHandler
451 PUBWEAK DMA2_Stream1_IRQHandler
452 SECTION .text:CODE:REORDER(1)
453 DMA2_Stream1_IRQHandler
454 B DMA2_Stream1_IRQHandler
456 PUBWEAK DMA2_Stream2_IRQHandler
457 SECTION .text:CODE:REORDER(1)
458 DMA2_Stream2_IRQHandler
459 B DMA2_Stream2_IRQHandler
461 PUBWEAK DMA2_Stream3_IRQHandler
462 SECTION .text:CODE:REORDER(1)
463 DMA2_Stream3_IRQHandler
464 B DMA2_Stream3_IRQHandler
466 PUBWEAK DMA2_Stream4_IRQHandler
467 SECTION .text:CODE:REORDER(1)
468 DMA2_Stream4_IRQHandler
469 B DMA2_Stream4_IRQHandler
471 PUBWEAK OTG_FS_IRQHandler
472 SECTION .text:CODE:REORDER(1)
476 PUBWEAK DMA2_Stream5_IRQHandler
477 SECTION .text:CODE:REORDER(1)
478 DMA2_Stream5_IRQHandler
479 B DMA2_Stream5_IRQHandler
481 PUBWEAK DMA2_Stream6_IRQHandler
482 SECTION .text:CODE:REORDER(1)
483 DMA2_Stream6_IRQHandler
484 B DMA2_Stream6_IRQHandler
486 PUBWEAK DMA2_Stream7_IRQHandler
487 SECTION .text:CODE:REORDER(1)
488 DMA2_Stream7_IRQHandler
489 B DMA2_Stream7_IRQHandler
491 PUBWEAK USART6_IRQHandler
492 SECTION .text:CODE:REORDER(1)
496 PUBWEAK I2C3_EV_IRQHandler
497 SECTION .text:CODE:REORDER(1)
501 PUBWEAK I2C3_ER_IRQHandler
502 SECTION .text:CODE:REORDER(1)
506 PUBWEAK FPU_IRQHandler
507 SECTION .text:CODE:REORDER(1)
511 PUBWEAK SPI4_IRQHandler
512 SECTION .text:CODE:REORDER(1)
517 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/