]> begriffs open source - cmsis-dfp-stm32f4/blob - Source/Templates/arm/startup_stm32f412vx.s
Release v2.6.8
[cmsis-dfp-stm32f4] / Source / Templates / arm / startup_stm32f412vx.s
1 ;*******************************************************************************
2 ;* File Name          : startup_stm32f412vx.s
3 ;* Author             : MCD Application Team
4 ;* Description        : STM32F412Vx devices vector table for MDK-ARM toolchain. 
5 ;*                      This module performs:
6 ;*                      - Set the initial SP
7 ;*                      - Set the initial PC == Reset_Handler
8 ;*                      - Set the vector table entries with the exceptions ISR address
9 ;*                      - Branches to __main in the C library (which eventually
10 ;*                        calls main()).
11 ;*                      After Reset the CortexM4 processor is in Thread mode,
12 ;*                      priority is Privileged, and the Stack is set to Main.
13 ;*******************************************************************************
14 ;* @attention
15 ;*
16 ;* Copyright (c) 2017 STMicroelectronics.
17 ;* All rights reserved.
18 ;*
19 ;* This software is licensed under terms that can be found in the LICENSE file
20 ;* in the root directory of this software component.
21 ;* If no LICENSE file comes with this software, it is provided AS-IS.
22 ;*
23 ;*******************************************************************************
24 ;* <<< Use Configuration Wizard in Context Menu >>>
25 ;
26 ; Amount of memory (in bytes) allocated for Stack
27 ; Tailor this value to your application needs
28 ; <h> Stack Configuration
29 ;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
30 ; </h>
31
32 Stack_Size      EQU     0x00000400
33
34                 AREA    STACK, NOINIT, READWRITE, ALIGN=3
35 Stack_Mem       SPACE   Stack_Size
36 __initial_sp
37
38
39 ; <h> Heap Configuration
40 ;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
41 ; </h>
42
43 Heap_Size       EQU     0x00000200
44
45                 AREA    HEAP, NOINIT, READWRITE, ALIGN=3
46 __heap_base
47 Heap_Mem        SPACE   Heap_Size
48 __heap_limit
49
50                 PRESERVE8
51                 THUMB
52
53
54 ; Vector Table Mapped to Address 0 at Reset
55                 AREA    RESET, DATA, READONLY
56                 EXPORT  __Vectors
57                 EXPORT  __Vectors_End
58                 EXPORT  __Vectors_Size
59
60 __Vectors       DCD     __initial_sp               ; Top of Stack
61                 DCD     Reset_Handler              ; Reset Handler
62                 DCD     NMI_Handler                ; NMI Handler
63                 DCD     HardFault_Handler          ; Hard Fault Handler
64                 DCD     MemManage_Handler          ; MPU Fault Handler
65                 DCD     BusFault_Handler           ; Bus Fault Handler
66                 DCD     UsageFault_Handler         ; Usage Fault Handler
67                 DCD     0                          ; Reserved
68                 DCD     0                          ; Reserved
69                 DCD     0                          ; Reserved
70                 DCD     0                          ; Reserved
71                 DCD     SVC_Handler                ; SVCall Handler
72                 DCD     DebugMon_Handler           ; Debug Monitor Handler
73                 DCD     0                          ; Reserved
74                 DCD     PendSV_Handler             ; PendSV Handler
75                 DCD     SysTick_Handler            ; SysTick Handler
76
77                 ; External Interrupts
78                 DCD     WWDG_IRQHandler                   ; Window WatchDog
79                 DCD     PVD_IRQHandler                    ; PVD through EXTI Line detection
80                 DCD     TAMP_STAMP_IRQHandler             ; Tamper and TimeStamps through the EXTI line
81                 DCD     RTC_WKUP_IRQHandler               ; RTC Wakeup through the EXTI line
82                 DCD     FLASH_IRQHandler                  ; FLASH
83                 DCD     RCC_IRQHandler                    ; RCC
84                 DCD     EXTI0_IRQHandler                  ; EXTI Line0
85                 DCD     EXTI1_IRQHandler                  ; EXTI Line1
86                 DCD     EXTI2_IRQHandler                  ; EXTI Line2
87                 DCD     EXTI3_IRQHandler                  ; EXTI Line3
88                 DCD     EXTI4_IRQHandler                  ; EXTI Line4
89                 DCD     DMA1_Stream0_IRQHandler           ; DMA1 Stream 0
90                 DCD     DMA1_Stream1_IRQHandler           ; DMA1 Stream 1
91                 DCD     DMA1_Stream2_IRQHandler           ; DMA1 Stream 2
92                 DCD     DMA1_Stream3_IRQHandler           ; DMA1 Stream 3
93                 DCD     DMA1_Stream4_IRQHandler           ; DMA1 Stream 4
94                 DCD     DMA1_Stream5_IRQHandler           ; DMA1 Stream 5
95                 DCD     DMA1_Stream6_IRQHandler           ; DMA1 Stream 6
96                 DCD     ADC_IRQHandler                    ; ADC1, ADC2 and ADC3s
97                 DCD     CAN1_TX_IRQHandler                ; CAN1 TX
98                 DCD     CAN1_RX0_IRQHandler               ; CAN1 RX0
99                 DCD     CAN1_RX1_IRQHandler               ; CAN1 RX1
100                 DCD     CAN1_SCE_IRQHandler               ; CAN1 SCE
101                 DCD     EXTI9_5_IRQHandler                ; External Line[9:5]s
102                 DCD     TIM1_BRK_TIM9_IRQHandler          ; TIM1 Break and TIM9
103                 DCD     TIM1_UP_TIM10_IRQHandler          ; TIM1 Update and TIM10
104                 DCD     TIM1_TRG_COM_TIM11_IRQHandler     ; TIM1 Trigger and Commutation and TIM11
105                 DCD     TIM1_CC_IRQHandler                ; TIM1 Capture Compare
106                 DCD     TIM2_IRQHandler                   ; TIM2
107                 DCD     TIM3_IRQHandler                   ; TIM3
108                 DCD     TIM4_IRQHandler                   ; TIM4
109                 DCD     I2C1_EV_IRQHandler                ; I2C1 Event
110                 DCD     I2C1_ER_IRQHandler                ; I2C1 Error
111                 DCD     I2C2_EV_IRQHandler                ; I2C2 Event
112                 DCD     I2C2_ER_IRQHandler                ; I2C2 Error
113                 DCD     SPI1_IRQHandler                   ; SPI1
114                 DCD     SPI2_IRQHandler                   ; SPI2
115                 DCD     USART1_IRQHandler                 ; USART1
116                 DCD     USART2_IRQHandler                 ; USART2
117                 DCD     USART3_IRQHandler                 ; USART3
118                 DCD     EXTI15_10_IRQHandler              ; External Line[15:10]s
119                 DCD     RTC_Alarm_IRQHandler              ; RTC Alarm (A and B) through EXTI Line
120                 DCD     OTG_FS_WKUP_IRQHandler            ; USB OTG FS Wakeup through EXTI line
121                 DCD     TIM8_BRK_TIM12_IRQHandler         ; TIM8 Break and TIM12
122                 DCD     TIM8_UP_TIM13_IRQHandler          ; TIM8 Update and TIM13
123                 DCD     TIM8_TRG_COM_TIM14_IRQHandler     ; TIM8 Trigger and Commutation and TIM14
124                 DCD     TIM8_CC_IRQHandler                ; TIM8 Capture Compare
125                 DCD     DMA1_Stream7_IRQHandler           ; DMA1 Stream7
126                 DCD     0                                 ; Reserved
127                 DCD     SDIO_IRQHandler                   ; SDIO
128                 DCD     TIM5_IRQHandler                   ; TIM5
129                 DCD     SPI3_IRQHandler                   ; SPI3
130                 DCD     0                                 ; Reserved
131                 DCD     0                                 ; Reserved
132                 DCD     TIM6_IRQHandler                   ; TIM6
133                 DCD     TIM7_IRQHandler                   ; TIM7
134                 DCD     DMA2_Stream0_IRQHandler           ; DMA2 Stream 0
135                 DCD     DMA2_Stream1_IRQHandler           ; DMA2 Stream 1
136                 DCD     DMA2_Stream2_IRQHandler           ; DMA2 Stream 2
137                 DCD     DMA2_Stream3_IRQHandler           ; DMA2 Stream 3
138                 DCD     DMA2_Stream4_IRQHandler           ; DMA2 Stream 4
139                 DCD     DFSDM1_FLT0_IRQHandler            ; DFSDM1 Filter 0 global interrupt
140                 DCD     DFSDM1_FLT1_IRQHandler            ; DFSDM1 Filter 1 global interrupt
141                 DCD     CAN2_TX_IRQHandler                ; CAN2 TX
142                 DCD     CAN2_RX0_IRQHandler               ; CAN2 RX0
143                 DCD     CAN2_RX1_IRQHandler               ; CAN2 RX1
144                 DCD     CAN2_SCE_IRQHandler               ; CAN2 SCE
145                 DCD     OTG_FS_IRQHandler                 ; USB OTG FS
146                 DCD     DMA2_Stream5_IRQHandler           ; DMA2 Stream 5
147                 DCD     DMA2_Stream6_IRQHandler           ; DMA2 Stream 6
148                 DCD     DMA2_Stream7_IRQHandler           ; DMA2 Stream 7
149                 DCD     USART6_IRQHandler                 ; USART6
150                 DCD     I2C3_EV_IRQHandler                ; I2C3 event
151                 DCD     I2C3_ER_IRQHandler                ; I2C3 error
152                 DCD     0                                 ; Reserved
153                 DCD     0                                 ; Reserved
154                 DCD     0                                 ; Reserved
155                 DCD     0                                 ; Reserved
156                 DCD     0                                 ; Reserved
157                 DCD     0                                 ; Reserved
158                 DCD     RNG_IRQHandler                    ; RNG
159                 DCD     FPU_IRQHandler                    ; FPU
160                 DCD     0                                 ; Reserved
161                 DCD     0                                 ; Reserved
162                 DCD     SPI4_IRQHandler                   ; SPI4
163                 DCD     SPI5_IRQHandler                   ; SPI5
164                 DCD     0                                 ; Reserved
165                 DCD     0                                 ; Reserved
166                 DCD     0                                 ; Reserved
167                 DCD     0                                 ; Reserved
168                 DCD     0                                 ; Reserved
169                 DCD     0                                 ; Reserved
170                 DCD     QUADSPI_IRQHandler                ; QuadSPI
171                 DCD     0                                 ; Reserved
172                 DCD     0                                 ; Reserved
173                 DCD     FMPI2C1_EV_IRQHandler             ; FMPI2C1 Event
174                 DCD     FMPI2C1_ER_IRQHandler             ; FMPI2C1 Error
175
176 __Vectors_End
177
178 __Vectors_Size  EQU  __Vectors_End - __Vectors
179
180                 AREA    |.text|, CODE, READONLY
181
182 ; Reset handler
183 Reset_Handler    PROC
184                  EXPORT  Reset_Handler             [WEAK]
185         IMPORT  SystemInit
186         IMPORT  __main
187
188                  LDR     R0, =SystemInit
189                  BLX     R0
190                  LDR     R0, =__main
191                  BX      R0
192                  ENDP
193
194 ; Dummy Exception Handlers (infinite loops which can be modified)
195
196 NMI_Handler     PROC
197                 EXPORT  NMI_Handler                [WEAK]
198                 B       .
199                 ENDP
200 HardFault_Handler\
201                 PROC
202                 EXPORT  HardFault_Handler          [WEAK]
203                 B       .
204                 ENDP
205 MemManage_Handler\
206                 PROC
207                 EXPORT  MemManage_Handler          [WEAK]
208                 B       .
209                 ENDP
210 BusFault_Handler\
211                 PROC
212                 EXPORT  BusFault_Handler           [WEAK]
213                 B       .
214                 ENDP
215 UsageFault_Handler\
216                 PROC
217                 EXPORT  UsageFault_Handler         [WEAK]
218                 B       .
219                 ENDP
220 SVC_Handler     PROC
221                 EXPORT  SVC_Handler                [WEAK]
222                 B       .
223                 ENDP
224 DebugMon_Handler\
225                 PROC
226                 EXPORT  DebugMon_Handler           [WEAK]
227                 B       .
228                 ENDP
229 PendSV_Handler  PROC
230                 EXPORT  PendSV_Handler             [WEAK]
231                 B       .
232                 ENDP
233 SysTick_Handler PROC
234                 EXPORT  SysTick_Handler            [WEAK]
235                 B       .
236                 ENDP
237
238 Default_Handler PROC
239
240                 EXPORT  WWDG_IRQHandler                   [WEAK]
241                 EXPORT  PVD_IRQHandler                    [WEAK]
242                 EXPORT  TAMP_STAMP_IRQHandler             [WEAK]
243                 EXPORT  RTC_WKUP_IRQHandler               [WEAK]
244                 EXPORT  FLASH_IRQHandler                  [WEAK]
245                 EXPORT  RCC_IRQHandler                    [WEAK]
246                 EXPORT  EXTI0_IRQHandler                  [WEAK]
247                 EXPORT  EXTI1_IRQHandler                  [WEAK]
248                 EXPORT  EXTI2_IRQHandler                  [WEAK]
249                 EXPORT  EXTI3_IRQHandler                  [WEAK]
250                 EXPORT  EXTI4_IRQHandler                  [WEAK]
251                 EXPORT  DMA1_Stream0_IRQHandler           [WEAK]
252                 EXPORT  DMA1_Stream1_IRQHandler           [WEAK]
253                 EXPORT  DMA1_Stream2_IRQHandler           [WEAK]
254                 EXPORT  DMA1_Stream3_IRQHandler           [WEAK]
255                 EXPORT  DMA1_Stream4_IRQHandler           [WEAK]
256                 EXPORT  DMA1_Stream5_IRQHandler           [WEAK]
257                 EXPORT  DMA1_Stream6_IRQHandler           [WEAK]
258                 EXPORT  ADC_IRQHandler                    [WEAK]
259                 EXPORT  CAN1_TX_IRQHandler                [WEAK]
260                 EXPORT  CAN1_RX0_IRQHandler               [WEAK]
261                 EXPORT  CAN1_RX1_IRQHandler               [WEAK]
262                 EXPORT  CAN1_SCE_IRQHandler               [WEAK]
263                 EXPORT  EXTI9_5_IRQHandler                [WEAK]
264                 EXPORT  TIM1_BRK_TIM9_IRQHandler          [WEAK]
265                 EXPORT  TIM1_UP_TIM10_IRQHandler          [WEAK]
266                 EXPORT  TIM1_TRG_COM_TIM11_IRQHandler     [WEAK]
267                 EXPORT  TIM1_CC_IRQHandler                [WEAK]
268                 EXPORT  TIM2_IRQHandler                   [WEAK]
269                 EXPORT  TIM3_IRQHandler                   [WEAK]
270                 EXPORT  TIM4_IRQHandler                   [WEAK]
271                 EXPORT  I2C1_EV_IRQHandler                [WEAK]
272                 EXPORT  I2C1_ER_IRQHandler                [WEAK]
273                 EXPORT  I2C2_EV_IRQHandler                [WEAK]
274                 EXPORT  I2C2_ER_IRQHandler                [WEAK]
275                 EXPORT  SPI1_IRQHandler                   [WEAK]
276                 EXPORT  SPI2_IRQHandler                   [WEAK]
277                 EXPORT  USART1_IRQHandler                 [WEAK]
278                 EXPORT  USART2_IRQHandler                 [WEAK]
279                 EXPORT  USART3_IRQHandler                 [WEAK]
280                 EXPORT  EXTI15_10_IRQHandler              [WEAK]
281                 EXPORT  RTC_Alarm_IRQHandler              [WEAK]
282                 EXPORT  OTG_FS_WKUP_IRQHandler            [WEAK]
283                                 EXPORT  OTG_FS_IRQHandler                 [WEAK]
284                 EXPORT  TIM8_BRK_TIM12_IRQHandler         [WEAK]
285                 EXPORT  TIM8_UP_TIM13_IRQHandler          [WEAK]
286                 EXPORT  TIM8_TRG_COM_TIM14_IRQHandler     [WEAK]
287                 EXPORT  TIM8_CC_IRQHandler                [WEAK]
288                 EXPORT  DMA1_Stream7_IRQHandler           [WEAK]
289                 EXPORT  SDIO_IRQHandler                   [WEAK]
290                 EXPORT  TIM5_IRQHandler                   [WEAK]
291                 EXPORT  SPI3_IRQHandler                   [WEAK]
292                 EXPORT  TIM6_IRQHandler                   [WEAK]
293                 EXPORT  TIM7_IRQHandler                   [WEAK]
294                 EXPORT  DMA2_Stream0_IRQHandler           [WEAK]
295                 EXPORT  DMA2_Stream1_IRQHandler           [WEAK]
296                 EXPORT  DMA2_Stream2_IRQHandler           [WEAK]
297                 EXPORT  DMA2_Stream3_IRQHandler           [WEAK]
298                 EXPORT  DMA2_Stream4_IRQHandler           [WEAK]
299                 EXPORT  DMA2_Stream4_IRQHandler           [WEAK]
300                 EXPORT  DFSDM1_FLT0_IRQHandler            [WEAK]
301                 EXPORT  DFSDM1_FLT1_IRQHandler            [WEAK]
302                 EXPORT  CAN2_TX_IRQHandler                [WEAK]
303                 EXPORT  CAN2_RX0_IRQHandler               [WEAK]
304                 EXPORT  CAN2_RX1_IRQHandler               [WEAK]
305                 EXPORT  CAN2_SCE_IRQHandler               [WEAK]
306                 EXPORT  DMA2_Stream5_IRQHandler           [WEAK]
307                 EXPORT  DMA2_Stream6_IRQHandler           [WEAK]
308                 EXPORT  DMA2_Stream7_IRQHandler           [WEAK]
309                 EXPORT  USART6_IRQHandler                 [WEAK]
310                 EXPORT  I2C3_EV_IRQHandler                [WEAK]
311                 EXPORT  I2C3_ER_IRQHandler                [WEAK]
312                 EXPORT  RNG_IRQHandler                    [WEAK]
313                 EXPORT  FPU_IRQHandler                    [WEAK]
314                 EXPORT  SPI4_IRQHandler                   [WEAK]
315                 EXPORT  SPI5_IRQHandler                   [WEAK]
316                 EXPORT  QUADSPI_IRQHandler                [WEAK]
317                 EXPORT  FMPI2C1_EV_IRQHandler             [WEAK]
318                 EXPORT  FMPI2C1_ER_IRQHandler             [WEAK]
319
320 WWDG_IRQHandler
321 PVD_IRQHandler
322 TAMP_STAMP_IRQHandler
323 RTC_WKUP_IRQHandler
324 FLASH_IRQHandler
325 RCC_IRQHandler
326 EXTI0_IRQHandler
327 EXTI1_IRQHandler
328 EXTI2_IRQHandler
329 EXTI3_IRQHandler
330 EXTI4_IRQHandler
331 DMA1_Stream0_IRQHandler
332 DMA1_Stream1_IRQHandler
333 DMA1_Stream2_IRQHandler
334 DMA1_Stream3_IRQHandler
335 DMA1_Stream4_IRQHandler
336 DMA1_Stream5_IRQHandler
337 DMA1_Stream6_IRQHandler
338 ADC_IRQHandler
339 CAN1_TX_IRQHandler
340 CAN1_RX0_IRQHandler
341 CAN1_RX1_IRQHandler
342 CAN1_SCE_IRQHandler
343 EXTI9_5_IRQHandler
344 TIM1_BRK_TIM9_IRQHandler
345 TIM1_UP_TIM10_IRQHandler
346 TIM1_TRG_COM_TIM11_IRQHandler
347 TIM1_CC_IRQHandler
348 TIM2_IRQHandler
349 TIM3_IRQHandler
350 TIM4_IRQHandler
351 I2C1_EV_IRQHandler
352 I2C1_ER_IRQHandler
353 I2C2_EV_IRQHandler
354 I2C2_ER_IRQHandler
355 SPI1_IRQHandler
356 SPI2_IRQHandler
357 USART1_IRQHandler
358 USART2_IRQHandler
359 USART3_IRQHandler
360 EXTI15_10_IRQHandler
361 RTC_Alarm_IRQHandler
362 OTG_FS_WKUP_IRQHandler
363 TIM8_BRK_TIM12_IRQHandler
364 TIM8_UP_TIM13_IRQHandler
365 TIM8_TRG_COM_TIM14_IRQHandler
366 TIM8_CC_IRQHandler
367 DMA1_Stream7_IRQHandler
368 SDIO_IRQHandler
369 TIM5_IRQHandler
370 SPI3_IRQHandler
371 TIM6_IRQHandler
372 TIM7_IRQHandler
373 DMA2_Stream0_IRQHandler
374 DMA2_Stream1_IRQHandler
375 DMA2_Stream2_IRQHandler
376 DMA2_Stream3_IRQHandler
377 DMA2_Stream4_IRQHandler
378 DFSDM1_FLT0_IRQHandler
379 DFSDM1_FLT1_IRQHandler
380 CAN2_TX_IRQHandler
381 CAN2_RX0_IRQHandler
382 CAN2_RX1_IRQHandler
383 CAN2_SCE_IRQHandler
384 OTG_FS_IRQHandler
385 DMA2_Stream5_IRQHandler
386 DMA2_Stream6_IRQHandler
387 DMA2_Stream7_IRQHandler
388 USART6_IRQHandler
389 I2C3_EV_IRQHandler
390 I2C3_ER_IRQHandler
391 RNG_IRQHandler
392 FPU_IRQHandler
393 SPI4_IRQHandler
394 SPI5_IRQHandler
395 QUADSPI_IRQHandler
396 FMPI2C1_EV_IRQHandler
397 FMPI2C1_ER_IRQHandler
398
399                 B       .
400
401                 ENDP
402
403                 ALIGN
404
405 ;*******************************************************************************
406 ; User Stack and Heap initialization
407 ;*******************************************************************************
408                  IF      :DEF:__MICROLIB
409                 
410                  EXPORT  __initial_sp
411                  EXPORT  __heap_base
412                  EXPORT  __heap_limit
413                 
414                  ELSE
415                 
416                  IMPORT  __use_two_region_memory
417                  EXPORT  __user_initial_stackheap
418                  
419 __user_initial_stackheap
420
421                  LDR     R0, =  Heap_Mem
422                  LDR     R1, =(Stack_Mem + Stack_Size)
423                  LDR     R2, = (Heap_Mem +  Heap_Size)
424                  LDR     R3, = Stack_Mem
425                  BX      LR
426
427                  ALIGN
428
429                  ENDIF
430
431                  END