]> begriffs open source - cmsis-dfp-stm32f4/blob - Source/Templates/iar/startup_stm32f401xe.s
Release v2.6.6
[cmsis-dfp-stm32f4] / Source / Templates / iar / startup_stm32f401xe.s
1 ;********************************************************************************
2 ;* File Name          : startup_stm32f401xe.s
3 ;* Author             : MCD Application Team
4 ;* Description        : STM32F401xExx 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 
9 ;*                        address.
10 ;*                      - Configure the system clock
11 ;*                      - Branches to main in the C library (which eventually
12 ;*                        calls main()).
13 ;*                      After Reset the Cortex-M4 processor is in Thread mode,
14 ;*                      priority is Privileged, and the Stack is set to Main.
15 ;********************************************************************************
16 ;* @attention
17 ;*
18 ;* <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
19 ;* All rights reserved.</center></h2>
20 ;*
21 ;* This software component is licensed by ST under BSD 3-Clause license,
22 ;* the "License"; You may not use this file except in compliance with the
23 ;* License. You may obtain a copy of the License at:
24 ;*                        opensource.org/licenses/BSD-3-Clause
25 ;*
26 ;*******************************************************************************
27 ;
28 ;
29 ; The modules in this file are included in the libraries, and may be replaced
30 ; by any user-defined modules that define the PUBLIC symbol _program_start or
31 ; a user defined start symbol.
32 ; To override the cstartup defined in the library, simply add your modified
33 ; version to the workbench project.
34 ;
35 ; The vector table is normally located at address 0.
36 ; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
37 ; The name "__vector_table" has special meaning for C-SPY:
38 ; it is where the SP start value is found, and the NVIC vector
39 ; table register (VTOR) is initialized to this address if != 0.
40 ;
41 ; Cortex-M version
42 ;
43
44         MODULE  ?cstartup
45
46         ;; Forward declaration of sections.
47         SECTION CSTACK:DATA:NOROOT(3)
48
49         SECTION .intvec:CODE:NOROOT(2)
50
51         EXTERN  __iar_program_start
52         EXTERN  SystemInit
53         PUBLIC  __vector_table
54
55         DATA
56 __vector_table
57         DCD     sfe(CSTACK)
58         DCD     Reset_Handler             ; Reset Handler
59
60         DCD     NMI_Handler               ; NMI Handler
61         DCD     HardFault_Handler         ; Hard Fault Handler
62         DCD     MemManage_Handler         ; MPU Fault Handler
63         DCD     BusFault_Handler          ; Bus Fault Handler
64         DCD     UsageFault_Handler        ; Usage Fault Handler
65         DCD     0                         ; Reserved
66         DCD     0                         ; Reserved
67         DCD     0                         ; Reserved
68         DCD     0                         ; Reserved
69         DCD     SVC_Handler               ; SVCall Handler
70         DCD     DebugMon_Handler          ; Debug Monitor Handler
71         DCD     0                         ; Reserved
72         DCD     PendSV_Handler            ; PendSV Handler
73         DCD     SysTick_Handler           ; SysTick Handler
74
75          ; External Interrupts
76         DCD     WWDG_IRQHandler                   ; Window WatchDog
77         DCD     PVD_IRQHandler                    ; PVD through EXTI Line detection
78         DCD     TAMP_STAMP_IRQHandler             ; Tamper and TimeStamps through the EXTI line
79         DCD     RTC_WKUP_IRQHandler               ; RTC Wakeup through the EXTI line
80         DCD     FLASH_IRQHandler                  ; FLASH
81         DCD     RCC_IRQHandler                    ; RCC
82         DCD     EXTI0_IRQHandler                  ; EXTI Line0
83         DCD     EXTI1_IRQHandler                  ; EXTI Line1
84         DCD     EXTI2_IRQHandler                  ; EXTI Line2
85         DCD     EXTI3_IRQHandler                  ; EXTI Line3
86         DCD     EXTI4_IRQHandler                  ; EXTI Line4
87         DCD     DMA1_Stream0_IRQHandler           ; DMA1 Stream 0
88         DCD     DMA1_Stream1_IRQHandler           ; DMA1 Stream 1
89         DCD     DMA1_Stream2_IRQHandler           ; DMA1 Stream 2
90         DCD     DMA1_Stream3_IRQHandler           ; DMA1 Stream 3
91         DCD     DMA1_Stream4_IRQHandler           ; DMA1 Stream 4
92         DCD     DMA1_Stream5_IRQHandler           ; DMA1 Stream 5
93         DCD     DMA1_Stream6_IRQHandler           ; DMA1 Stream 6
94         DCD     ADC_IRQHandler                    ; ADC1
95         DCD     0                                 ; Reserved
96         DCD     0                                 ; Reserved
97         DCD     0                                 ; Reserved
98         DCD     0                                 ; Reserved
99         DCD     EXTI9_5_IRQHandler                ; External Line[9:5]s
100         DCD     TIM1_BRK_TIM9_IRQHandler          ; TIM1 Break and TIM9
101         DCD     TIM1_UP_TIM10_IRQHandler          ; TIM1 Update and TIM10
102         DCD     TIM1_TRG_COM_TIM11_IRQHandler     ; TIM1 Trigger and Commutation and TIM11
103         DCD     TIM1_CC_IRQHandler                ; TIM1 Capture Compare
104         DCD     TIM2_IRQHandler                   ; TIM2
105         DCD     TIM3_IRQHandler                   ; TIM3
106         DCD     TIM4_IRQHandler                   ; TIM4
107         DCD     I2C1_EV_IRQHandler                ; I2C1 Event
108         DCD     I2C1_ER_IRQHandler                ; I2C1 Error
109         DCD     I2C2_EV_IRQHandler                ; I2C2 Event
110         DCD     I2C2_ER_IRQHandler                ; I2C2 Error
111         DCD     SPI1_IRQHandler                   ; SPI1
112         DCD     SPI2_IRQHandler                   ; SPI2
113         DCD     USART1_IRQHandler                 ; USART1
114         DCD     USART2_IRQHandler                 ; USART2
115         DCD     0                                 ; Reserved
116         DCD     EXTI15_10_IRQHandler              ; External Line[15:10]s
117         DCD     RTC_Alarm_IRQHandler              ; RTC Alarm (A and B) through EXTI Line
118         DCD     OTG_FS_WKUP_IRQHandler            ; USB OTG FS Wakeup through EXTI line
119         DCD     0                                 ; Reserved
120         DCD     0                                 ; Reserved
121         DCD     0                                 ; Reserved
122         DCD     0                                 ; Reserved
123         DCD     DMA1_Stream7_IRQHandler           ; DMA1 Stream7
124         DCD     0                                 ; Reserved
125         DCD     SDIO_IRQHandler                   ; SDIO
126         DCD     TIM5_IRQHandler                   ; TIM5
127         DCD     SPI3_IRQHandler                   ; SPI3
128         DCD     0                                 ; Reserved
129         DCD     0                                 ; Reserved
130         DCD     0                                 ; Reserved
131         DCD     0                                 ; Reserved
132         DCD     DMA2_Stream0_IRQHandler           ; DMA2 Stream 0
133         DCD     DMA2_Stream1_IRQHandler           ; DMA2 Stream 1
134         DCD     DMA2_Stream2_IRQHandler           ; DMA2 Stream 2
135         DCD     DMA2_Stream3_IRQHandler           ; DMA2 Stream 3
136         DCD     DMA2_Stream4_IRQHandler           ; DMA2 Stream 4
137         DCD     0                                 ; Reserved
138         DCD     0                                 ; Reserved
139         DCD     0                                 ; Reserved
140         DCD     0                                 ; Reserved
141         DCD     0                                 ; Reserved
142         DCD     0                                 ; Reserved
143         DCD     OTG_FS_IRQHandler                 ; USB OTG FS
144         DCD     DMA2_Stream5_IRQHandler           ; DMA2 Stream 5
145         DCD     DMA2_Stream6_IRQHandler           ; DMA2 Stream 6
146         DCD     DMA2_Stream7_IRQHandler           ; DMA2 Stream 7
147         DCD     USART6_IRQHandler                 ; USART6
148         DCD     I2C3_EV_IRQHandler                ; I2C3 event
149         DCD     I2C3_ER_IRQHandler                ; I2C3 error
150         DCD     0                                 ; Reserved
151         DCD     0                                 ; Reserved
152         DCD     0                                 ; Reserved
153         DCD     0                                 ; Reserved
154         DCD     0                                 ; Reserved
155         DCD     0                                 ; Reserved
156         DCD     0                                 ; Reserved
157         DCD     FPU_IRQHandler                    ; FPU
158         DCD     0                                 ; Reserved
159         DCD     0                                 ; Reserved
160         DCD     SPI4_IRQHandler                   ; SPI4
161     
162 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
163 ;;
164 ;; Default interrupt handlers.
165 ;;
166         THUMB
167         PUBWEAK Reset_Handler
168         SECTION .text:CODE:REORDER:NOROOT(2)
169 Reset_Handler
170
171         LDR     R0, =SystemInit
172         BLX     R0
173         LDR     R0, =__iar_program_start
174         BX      R0
175
176         PUBWEAK NMI_Handler
177         SECTION .text:CODE:REORDER:NOROOT(1)
178 NMI_Handler
179         B NMI_Handler
180
181         PUBWEAK HardFault_Handler
182         SECTION .text:CODE:REORDER:NOROOT(1)
183 HardFault_Handler
184         B HardFault_Handler
185
186         PUBWEAK MemManage_Handler
187         SECTION .text:CODE:REORDER:NOROOT(1)
188 MemManage_Handler
189         B MemManage_Handler
190
191         PUBWEAK BusFault_Handler
192         SECTION .text:CODE:REORDER:NOROOT(1)
193 BusFault_Handler
194         B BusFault_Handler
195
196         PUBWEAK UsageFault_Handler
197         SECTION .text:CODE:REORDER:NOROOT(1)
198 UsageFault_Handler
199         B UsageFault_Handler
200
201         PUBWEAK SVC_Handler
202         SECTION .text:CODE:REORDER:NOROOT(1)
203 SVC_Handler
204         B SVC_Handler
205
206         PUBWEAK DebugMon_Handler
207         SECTION .text:CODE:REORDER:NOROOT(1)
208 DebugMon_Handler
209         B DebugMon_Handler
210
211         PUBWEAK PendSV_Handler
212         SECTION .text:CODE:REORDER:NOROOT(1)
213 PendSV_Handler
214         B PendSV_Handler
215
216         PUBWEAK SysTick_Handler
217         SECTION .text:CODE:REORDER:NOROOT(1)
218 SysTick_Handler
219         B SysTick_Handler
220
221         PUBWEAK WWDG_IRQHandler
222         SECTION .text:CODE:REORDER:NOROOT(1)
223 WWDG_IRQHandler  
224         B WWDG_IRQHandler
225
226         PUBWEAK PVD_IRQHandler
227         SECTION .text:CODE:REORDER:NOROOT(1)
228 PVD_IRQHandler  
229         B PVD_IRQHandler
230
231         PUBWEAK TAMP_STAMP_IRQHandler
232         SECTION .text:CODE:REORDER:NOROOT(1)
233 TAMP_STAMP_IRQHandler  
234         B TAMP_STAMP_IRQHandler
235
236         PUBWEAK RTC_WKUP_IRQHandler
237         SECTION .text:CODE:REORDER:NOROOT(1)
238 RTC_WKUP_IRQHandler  
239         B RTC_WKUP_IRQHandler
240
241         PUBWEAK FLASH_IRQHandler
242         SECTION .text:CODE:REORDER:NOROOT(1)
243 FLASH_IRQHandler  
244         B FLASH_IRQHandler
245
246         PUBWEAK RCC_IRQHandler
247         SECTION .text:CODE:REORDER:NOROOT(1)
248 RCC_IRQHandler  
249         B RCC_IRQHandler
250
251         PUBWEAK EXTI0_IRQHandler
252         SECTION .text:CODE:REORDER:NOROOT(1)
253 EXTI0_IRQHandler  
254         B EXTI0_IRQHandler
255
256         PUBWEAK EXTI1_IRQHandler
257         SECTION .text:CODE:REORDER:NOROOT(1)
258 EXTI1_IRQHandler  
259         B EXTI1_IRQHandler
260
261         PUBWEAK EXTI2_IRQHandler
262         SECTION .text:CODE:REORDER:NOROOT(1)
263 EXTI2_IRQHandler  
264         B EXTI2_IRQHandler
265
266         PUBWEAK EXTI3_IRQHandler
267         SECTION .text:CODE:REORDER:NOROOT(1)
268 EXTI3_IRQHandler
269         B EXTI3_IRQHandler
270
271         PUBWEAK EXTI4_IRQHandler
272         SECTION .text:CODE:REORDER:NOROOT(1)
273 EXTI4_IRQHandler  
274         B EXTI4_IRQHandler
275
276         PUBWEAK DMA1_Stream0_IRQHandler
277         SECTION .text:CODE:REORDER:NOROOT(1)
278 DMA1_Stream0_IRQHandler  
279         B DMA1_Stream0_IRQHandler
280
281         PUBWEAK DMA1_Stream1_IRQHandler
282         SECTION .text:CODE:REORDER:NOROOT(1)
283 DMA1_Stream1_IRQHandler  
284         B DMA1_Stream1_IRQHandler
285
286         PUBWEAK DMA1_Stream2_IRQHandler
287         SECTION .text:CODE:REORDER:NOROOT(1)
288 DMA1_Stream2_IRQHandler  
289         B DMA1_Stream2_IRQHandler
290
291         PUBWEAK DMA1_Stream3_IRQHandler
292         SECTION .text:CODE:REORDER:NOROOT(1)
293 DMA1_Stream3_IRQHandler  
294         B DMA1_Stream3_IRQHandler
295
296         PUBWEAK DMA1_Stream4_IRQHandler
297         SECTION .text:CODE:REORDER:NOROOT(1)
298 DMA1_Stream4_IRQHandler  
299         B DMA1_Stream4_IRQHandler
300
301         PUBWEAK DMA1_Stream5_IRQHandler
302         SECTION .text:CODE:REORDER:NOROOT(1)
303 DMA1_Stream5_IRQHandler  
304         B DMA1_Stream5_IRQHandler
305
306         PUBWEAK DMA1_Stream6_IRQHandler
307         SECTION .text:CODE:REORDER:NOROOT(1)
308 DMA1_Stream6_IRQHandler  
309         B DMA1_Stream6_IRQHandler
310
311         PUBWEAK ADC_IRQHandler
312         SECTION .text:CODE:REORDER:NOROOT(1)
313 ADC_IRQHandler  
314         B ADC_IRQHandler
315
316         PUBWEAK EXTI9_5_IRQHandler
317         SECTION .text:CODE:REORDER:NOROOT(1) 
318 EXTI9_5_IRQHandler  
319         B EXTI9_5_IRQHandler
320
321         PUBWEAK TIM1_BRK_TIM9_IRQHandler
322         SECTION .text:CODE:REORDER:NOROOT(1)
323 TIM1_BRK_TIM9_IRQHandler  
324         B TIM1_BRK_TIM9_IRQHandler
325
326         PUBWEAK TIM1_UP_TIM10_IRQHandler
327         SECTION .text:CODE:REORDER:NOROOT(1)
328 TIM1_UP_TIM10_IRQHandler  
329         B TIM1_UP_TIM10_IRQHandler
330
331         PUBWEAK TIM1_TRG_COM_TIM11_IRQHandler
332         SECTION .text:CODE:REORDER:NOROOT(1)
333 TIM1_TRG_COM_TIM11_IRQHandler  
334         B TIM1_TRG_COM_TIM11_IRQHandler
335         
336         PUBWEAK TIM1_CC_IRQHandler
337         SECTION .text:CODE:REORDER:NOROOT(1)
338 TIM1_CC_IRQHandler  
339         B TIM1_CC_IRQHandler
340
341         PUBWEAK TIM2_IRQHandler
342         SECTION .text:CODE:REORDER:NOROOT(1)
343 TIM2_IRQHandler  
344         B TIM2_IRQHandler
345
346         PUBWEAK TIM3_IRQHandler
347         SECTION .text:CODE:REORDER:NOROOT(1)
348 TIM3_IRQHandler  
349         B TIM3_IRQHandler
350
351         PUBWEAK TIM4_IRQHandler
352         SECTION .text:CODE:REORDER:NOROOT(1)
353 TIM4_IRQHandler  
354         B TIM4_IRQHandler
355
356         PUBWEAK I2C1_EV_IRQHandler
357         SECTION .text:CODE:REORDER:NOROOT(1) 
358 I2C1_EV_IRQHandler  
359         B I2C1_EV_IRQHandler
360
361         PUBWEAK I2C1_ER_IRQHandler
362         SECTION .text:CODE:REORDER:NOROOT(1) 
363 I2C1_ER_IRQHandler  
364         B I2C1_ER_IRQHandler
365
366         PUBWEAK I2C2_EV_IRQHandler
367         SECTION .text:CODE:REORDER:NOROOT(1) 
368 I2C2_EV_IRQHandler  
369         B I2C2_EV_IRQHandler
370
371         PUBWEAK I2C2_ER_IRQHandler
372         SECTION .text:CODE:REORDER:NOROOT(1) 
373 I2C2_ER_IRQHandler  
374         B I2C2_ER_IRQHandler
375
376         PUBWEAK SPI1_IRQHandler
377         SECTION .text:CODE:REORDER:NOROOT(1)
378 SPI1_IRQHandler  
379         B SPI1_IRQHandler
380
381         PUBWEAK SPI2_IRQHandler
382         SECTION .text:CODE:REORDER:NOROOT(1)
383 SPI2_IRQHandler  
384         B SPI2_IRQHandler
385
386         PUBWEAK USART1_IRQHandler
387         SECTION .text:CODE:REORDER:NOROOT(1)
388 USART1_IRQHandler  
389         B USART1_IRQHandler
390
391         PUBWEAK USART2_IRQHandler
392         SECTION .text:CODE:REORDER:NOROOT(1)
393 USART2_IRQHandler  
394         B USART2_IRQHandler
395
396         PUBWEAK EXTI15_10_IRQHandler
397         SECTION .text:CODE:REORDER:NOROOT(1) 
398 EXTI15_10_IRQHandler  
399         B EXTI15_10_IRQHandler
400
401         PUBWEAK RTC_Alarm_IRQHandler
402         SECTION .text:CODE:REORDER:NOROOT(1) 
403 RTC_Alarm_IRQHandler  
404         B RTC_Alarm_IRQHandler
405
406         PUBWEAK OTG_FS_WKUP_IRQHandler
407         SECTION .text:CODE:REORDER:NOROOT(1)
408 OTG_FS_WKUP_IRQHandler  
409         B OTG_FS_WKUP_IRQHandler
410
411         PUBWEAK DMA1_Stream7_IRQHandler
412         SECTION .text:CODE:REORDER:NOROOT(1)
413 DMA1_Stream7_IRQHandler  
414         B DMA1_Stream7_IRQHandler
415
416         PUBWEAK SDIO_IRQHandler
417         SECTION .text:CODE:REORDER:NOROOT(1)
418 SDIO_IRQHandler  
419         B SDIO_IRQHandler
420
421         PUBWEAK TIM5_IRQHandler
422         SECTION .text:CODE:REORDER:NOROOT(1)
423 TIM5_IRQHandler  
424         B TIM5_IRQHandler
425
426         PUBWEAK SPI3_IRQHandler
427         SECTION .text:CODE:REORDER:NOROOT(1)
428 SPI3_IRQHandler  
429         B SPI3_IRQHandler
430
431         PUBWEAK DMA2_Stream0_IRQHandler
432         SECTION .text:CODE:REORDER:NOROOT(1)
433 DMA2_Stream0_IRQHandler  
434         B DMA2_Stream0_IRQHandler
435
436         PUBWEAK DMA2_Stream1_IRQHandler
437         SECTION .text:CODE:REORDER:NOROOT(1)
438 DMA2_Stream1_IRQHandler  
439         B DMA2_Stream1_IRQHandler
440
441         PUBWEAK DMA2_Stream2_IRQHandler
442         SECTION .text:CODE:REORDER:NOROOT(1)
443 DMA2_Stream2_IRQHandler  
444         B DMA2_Stream2_IRQHandler
445
446         PUBWEAK DMA2_Stream3_IRQHandler
447         SECTION .text:CODE:REORDER:NOROOT(1)
448 DMA2_Stream3_IRQHandler  
449         B DMA2_Stream3_IRQHandler
450
451         PUBWEAK DMA2_Stream4_IRQHandler
452         SECTION .text:CODE:REORDER:NOROOT(1)
453 DMA2_Stream4_IRQHandler  
454         B DMA2_Stream4_IRQHandler
455
456         PUBWEAK OTG_FS_IRQHandler
457         SECTION .text:CODE:REORDER:NOROOT(1)
458 OTG_FS_IRQHandler  
459         B OTG_FS_IRQHandler
460
461         PUBWEAK DMA2_Stream5_IRQHandler
462         SECTION .text:CODE:REORDER:NOROOT(1)
463 DMA2_Stream5_IRQHandler  
464         B DMA2_Stream5_IRQHandler
465
466         PUBWEAK DMA2_Stream6_IRQHandler
467         SECTION .text:CODE:REORDER:NOROOT(1)
468 DMA2_Stream6_IRQHandler  
469         B DMA2_Stream6_IRQHandler
470
471         PUBWEAK DMA2_Stream7_IRQHandler
472         SECTION .text:CODE:REORDER:NOROOT(1)
473 DMA2_Stream7_IRQHandler  
474         B DMA2_Stream7_IRQHandler
475
476         PUBWEAK USART6_IRQHandler
477         SECTION .text:CODE:REORDER:NOROOT(1)
478 USART6_IRQHandler  
479         B USART6_IRQHandler
480
481         PUBWEAK I2C3_EV_IRQHandler
482         SECTION .text:CODE:REORDER:NOROOT(1) 
483 I2C3_EV_IRQHandler  
484         B I2C3_EV_IRQHandler
485
486         PUBWEAK I2C3_ER_IRQHandler
487         SECTION .text:CODE:REORDER:NOROOT(1) 
488 I2C3_ER_IRQHandler  
489         B I2C3_ER_IRQHandler
490
491         PUBWEAK FPU_IRQHandler
492         SECTION .text:CODE:REORDER:NOROOT(1)
493 FPU_IRQHandler  
494         B FPU_IRQHandler
495
496         PUBWEAK SPI4_IRQHandler
497         SECTION .text:CODE:REORDER:NOROOT(1)
498 SPI4_IRQHandler  
499         B SPI4_IRQHandler
500         
501         END
502 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/