1;/******************** (C) COPYRIGHT 2009 STMicroelectronics ********************
2;* File Name          : startup_stm32f10x_hd.s
3;* Author             : MCD Application Team
4;* Version            : V3.1.2
5;* Date               : 09/28/2009
6;* Description        : STM32F10x High Density Devices vector table for EWARM5.x
7;*                      toolchain.
8;*                      This module performs:
9;*                      - Set the initial SP
10;*                      - Set the initial PC == __iar_program_start,
11;*                      - Set the vector table entries with the exceptions ISR address,
12;*                      - Configure external SRAM mounted on STM3210E-EVAL board
13;*                       to be used as data memory (optional, to be enabled by user)
14;*                      After Reset the Cortex-M3 processor is in Thread mode,
15;*                      priority is Privileged, and the Stack is set to Main.
16;********************************************************************************
17;* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
18;* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
19;* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
20;* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
21;* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
22;* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
23;*******************************************************************************/
24;
25;
26; The modules in this file are included in the libraries, and may be replaced
27; by any user-defined modules that define the PUBLIC symbol _program_start or
28; a user defined start symbol.
29; To override the cstartup defined in the library, simply add your modified
30; version to the workbench project.
31;
32; The vector table is normally located at address 0.
33; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
34; The name "__vector_table" has special meaning for C-SPY:
35; it is where the SP start value is found, and the NVIC vector
36; table register (VTOR) is initialized to this address if != 0.
37;
38; Cortex-M version
39;
40
41    MODULE  ?cstartup
42
43  ;; ICODE is the same segment as cstartup. By placing __low_level_init
44  ;; in the same segment, we make sure it can be reached with BL. */
45
46    SECTION	   CSTACK:DATA:NOROOT(3)
47    SECTION .icode:CODE:NOROOT(2)
48    PUBLIC  __low_level_init
49
50       PUBWEAK SystemInit_ExtMemCtl
51       SECTION .text:CODE:REORDER(2)
52        THUMB
53SystemInit_ExtMemCtl
54        BX LR
55
56__low_level_init:
57
58  ;;  Initialize hardware.
59                LDR  R0, = SystemInit_ExtMemCtl ; initialize external memory controller
60                MOV  R11, LR
61                BLX  R0
62                LDR  R1, =sfe(CSTACK)        ; restore original stack pointer
63                MSR  MSP, R1
64                MOV  R0,#1
65   ;; Return with BX to be independent of mode of caller
66                BX    R11
67
68        ;; Forward declaration of sections.
69        SECTION .intvec:CODE:NOROOT(2)
70
71        EXTERN  __iar_program_start
72        PUBLIC  __vector_table
73
74        DATA
75__intial_sp      EQU     0x20000400
76__vector_table
77        DCD     __intial_sp
78        DCD     __iar_program_start
79
80        DCD     NMI_Handler               ; NMI Handler
81        DCD     HardFault_Handler         ; Hard Fault Handler
82        DCD     MemManage_Handler         ; MPU Fault Handler
83        DCD     BusFault_Handler          ; Bus Fault Handler
84        DCD     UsageFault_Handler        ; Usage Fault Handler
85        DCD     0                         ; Reserved
86        DCD     0                         ; Reserved
87        DCD     0                         ; Reserved
88        DCD     0                         ; Reserved
89        DCD     SVC_Handler               ; SVCall Handler
90        DCD     DebugMon_Handler          ; Debug Monitor Handler
91        DCD     0                         ; Reserved
92        DCD     PendSV_Handler            ; PendSV Handler
93        DCD     SysTick_Handler           ; SysTick Handler
94
95         ; External Interrupts
96        DCD     WWDG_IRQHandler           ; Window Watchdog
97        DCD     PVD_IRQHandler            ; PVD through EXTI Line detect
98        DCD     TAMPER_IRQHandler         ; Tamper
99        DCD     RTC_IRQHandler            ; RTC
100        DCD     FLASH_IRQHandler          ; Flash
101        DCD     RCC_IRQHandler            ; RCC
102        DCD     EXTI0_IRQHandler          ; EXTI Line 0
103        DCD     EXTI1_IRQHandler          ; EXTI Line 1
104        DCD     EXTI2_IRQHandler          ; EXTI Line 2
105        DCD     EXTI3_IRQHandler          ; EXTI Line 3
106        DCD     EXTI4_IRQHandler          ; EXTI Line 4
107        DCD     DMA1_Channel1_IRQHandler  ; DMA1 Channel 1
108        DCD     DMA1_Channel2_IRQHandler  ; DMA1 Channel 2
109        DCD     DMA1_Channel3_IRQHandler  ; DMA1 Channel 3
110        DCD     DMA1_Channel4_IRQHandler  ; DMA1 Channel 4
111        DCD     DMA1_Channel5_IRQHandler  ; DMA1 Channel 5
112        DCD     DMA1_Channel6_IRQHandler  ; DMA1 Channel 6
113        DCD     DMA1_Channel7_IRQHandler  ; DMA1 Channel 7
114        DCD     ADC1_2_IRQHandler         ; ADC1 & ADC2
115        DCD     USB_HP_CAN1_TX_IRQHandler  ; USB High Priority or CAN1 TX
116        DCD     USB_LP_CAN1_RX0_IRQHandler ; USB Low  Priority or CAN1 RX0
117        DCD     CAN1_RX1_IRQHandler       ; CAN1 RX1
118        DCD     CAN1_SCE_IRQHandler       ; CAN1 SCE
119        DCD     EXTI9_5_IRQHandler        ; EXTI Line 9..5
120        DCD     TIM1_BRK_IRQHandler       ; TIM1 Break
121        DCD     TIM1_UP_IRQHandler        ; TIM1 Update
122        DCD     TIM1_TRG_COM_IRQHandler   ; TIM1 Trigger and Commutation
123        DCD     TIM1_CC_IRQHandler        ; TIM1 Capture Compare
124        DCD     TIM2_IRQHandler           ; TIM2
125        DCD     TIM3_IRQHandler           ; TIM3
126        DCD     TIM4_IRQHandler           ; TIM4
127        DCD     I2C1_EV_IRQHandler        ; I2C1 Event
128        DCD     I2C1_ER_IRQHandler        ; I2C1 Error
129        DCD     I2C2_EV_IRQHandler        ; I2C2 Event
130        DCD     I2C2_ER_IRQHandler        ; I2C2 Error
131        DCD     SPI1_IRQHandler           ; SPI1
132        DCD     SPI2_IRQHandler           ; SPI2
133        DCD     USART1_IRQHandler         ; USART1
134        DCD     USART2_IRQHandler         ; USART2
135        DCD     USART3_IRQHandler         ; USART3
136        DCD     EXTI15_10_IRQHandler      ; EXTI Line 15..10
137        DCD     RTCAlarm_IRQHandler       ; RTC Alarm through EXTI Line
138        DCD     USBWakeUp_IRQHandler      ; USB Wakeup from suspend
139        DCD     TIM8_BRK_IRQHandler       ; TIM8 Break
140        DCD     TIM8_UP_IRQHandler        ; TIM8 Update
141        DCD     TIM8_TRG_COM_IRQHandler   ; TIM8 Trigger and Commutation
142        DCD     TIM8_CC_IRQHandler        ; TIM8 Capture Compare
143        DCD     ADC3_IRQHandler           ; ADC3
144        DCD     FSMC_IRQHandler           ; FSMC
145        DCD     SDIO_IRQHandler           ; SDIO
146        DCD     TIM5_IRQHandler           ; TIM5
147        DCD     SPI3_IRQHandler           ; SPI3
148        DCD     UART4_IRQHandler          ; UART4
149        DCD     UART5_IRQHandler          ; UART5
150        DCD     TIM6_IRQHandler           ; TIM6
151        DCD     TIM7_IRQHandler           ; TIM7
152        DCD     DMA2_Channel1_IRQHandler  ; DMA2 Channel1
153        DCD     DMA2_Channel2_IRQHandler  ; DMA2 Channel2
154        DCD     DMA2_Channel3_IRQHandler  ; DMA2 Channel3
155        DCD     DMA2_Channel4_5_IRQHandler ; DMA2 Channel4 & Channel5
156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
157;;
158;; Default interrupt handlers.
159;;
160        THUMB
161
162        PUBWEAK NMI_Handler
163        SECTION .text:CODE:REORDER(1)
164NMI_Handler
165        B NMI_Handler
166
167        PUBWEAK HardFault_Handler
168        SECTION .text:CODE:REORDER(1)
169HardFault_Handler
170        B HardFault_Handler
171
172        PUBWEAK MemManage_Handler
173        SECTION .text:CODE:REORDER(1)
174MemManage_Handler
175        B MemManage_Handler
176
177        PUBWEAK BusFault_Handler
178        SECTION .text:CODE:REORDER(1)
179BusFault_Handler
180        B BusFault_Handler
181
182        PUBWEAK UsageFault_Handler
183        SECTION .text:CODE:REORDER(1)
184UsageFault_Handler
185        B UsageFault_Handler
186
187        PUBWEAK SVC_Handler
188        SECTION .text:CODE:REORDER(1)
189SVC_Handler
190        B SVC_Handler
191
192        PUBWEAK DebugMon_Handler
193        SECTION .text:CODE:REORDER(1)
194DebugMon_Handler
195        B DebugMon_Handler
196
197        PUBWEAK PendSV_Handler
198        SECTION .text:CODE:REORDER(1)
199PendSV_Handler
200        B PendSV_Handler
201
202        PUBWEAK SysTick_Handler
203        SECTION .text:CODE:REORDER(1)
204SysTick_Handler
205        B SysTick_Handler
206
207        PUBWEAK WWDG_IRQHandler
208        SECTION .text:CODE:REORDER(1)
209WWDG_IRQHandler
210        B WWDG_IRQHandler
211
212        PUBWEAK PVD_IRQHandler
213        SECTION .text:CODE:REORDER(1)
214PVD_IRQHandler
215        B PVD_IRQHandler
216
217        PUBWEAK TAMPER_IRQHandler
218        SECTION .text:CODE:REORDER(1)
219TAMPER_IRQHandler
220        B TAMPER_IRQHandler
221
222        PUBWEAK RTC_IRQHandler
223        SECTION .text:CODE:REORDER(1)
224RTC_IRQHandler
225        B RTC_IRQHandler
226
227        PUBWEAK FLASH_IRQHandler
228        SECTION .text:CODE:REORDER(1)
229FLASH_IRQHandler
230        B FLASH_IRQHandler
231
232        PUBWEAK RCC_IRQHandler
233        SECTION .text:CODE:REORDER(1)
234RCC_IRQHandler
235        B RCC_IRQHandler
236
237        PUBWEAK EXTI0_IRQHandler
238        SECTION .text:CODE:REORDER(1)
239EXTI0_IRQHandler
240        B EXTI0_IRQHandler
241
242        PUBWEAK EXTI1_IRQHandler
243        SECTION .text:CODE:REORDER(1)
244EXTI1_IRQHandler
245        B EXTI1_IRQHandler
246
247        PUBWEAK EXTI2_IRQHandler
248        SECTION .text:CODE:REORDER(1)
249EXTI2_IRQHandler
250        B EXTI2_IRQHandler
251
252        PUBWEAK EXTI3_IRQHandler
253        SECTION .text:CODE:REORDER(1)
254EXTI3_IRQHandler
255        B EXTI3_IRQHandler
256
257        PUBWEAK EXTI4_IRQHandler
258        SECTION .text:CODE:REORDER(1)
259EXTI4_IRQHandler
260        B EXTI4_IRQHandler
261
262        PUBWEAK DMA1_Channel1_IRQHandler
263        SECTION .text:CODE:REORDER(1)
264DMA1_Channel1_IRQHandler
265        B DMA1_Channel1_IRQHandler
266
267        PUBWEAK DMA1_Channel2_IRQHandler
268        SECTION .text:CODE:REORDER(1)
269DMA1_Channel2_IRQHandler
270        B DMA1_Channel2_IRQHandler
271
272        PUBWEAK DMA1_Channel3_IRQHandler
273        SECTION .text:CODE:REORDER(1)
274DMA1_Channel3_IRQHandler
275        B DMA1_Channel3_IRQHandler
276
277        PUBWEAK DMA1_Channel4_IRQHandler
278        SECTION .text:CODE:REORDER(1)
279DMA1_Channel4_IRQHandler
280        B DMA1_Channel4_IRQHandler
281
282        PUBWEAK DMA1_Channel5_IRQHandler
283        SECTION .text:CODE:REORDER(1)
284DMA1_Channel5_IRQHandler
285        B DMA1_Channel5_IRQHandler
286
287        PUBWEAK DMA1_Channel6_IRQHandler
288        SECTION .text:CODE:REORDER(1)
289DMA1_Channel6_IRQHandler
290        B DMA1_Channel6_IRQHandler
291
292        PUBWEAK DMA1_Channel7_IRQHandler
293        SECTION .text:CODE:REORDER(1)
294DMA1_Channel7_IRQHandler
295        B DMA1_Channel7_IRQHandler
296
297        PUBWEAK ADC1_2_IRQHandler
298        SECTION .text:CODE:REORDER(1)
299ADC1_2_IRQHandler
300        B ADC1_2_IRQHandler
301
302        PUBWEAK USB_HP_CAN1_TX_IRQHandler
303        SECTION .text:CODE:REORDER(1)
304USB_HP_CAN1_TX_IRQHandler
305        B USB_HP_CAN1_TX_IRQHandler
306
307        PUBWEAK USB_LP_CAN1_RX0_IRQHandler
308        SECTION .text:CODE:REORDER(1)
309USB_LP_CAN1_RX0_IRQHandler
310        B USB_LP_CAN1_RX0_IRQHandler
311
312        PUBWEAK CAN1_RX1_IRQHandler
313        SECTION .text:CODE:REORDER(1)
314CAN1_RX1_IRQHandler
315        B CAN1_RX1_IRQHandler
316
317        PUBWEAK CAN1_SCE_IRQHandler
318        SECTION .text:CODE:REORDER(1)
319CAN1_SCE_IRQHandler
320        B CAN1_SCE_IRQHandler
321
322        PUBWEAK EXTI9_5_IRQHandler
323        SECTION .text:CODE:REORDER(1)
324EXTI9_5_IRQHandler
325        B EXTI9_5_IRQHandler
326
327        PUBWEAK TIM1_BRK_IRQHandler
328        SECTION .text:CODE:REORDER(1)
329TIM1_BRK_IRQHandler
330        B TIM1_BRK_IRQHandler
331
332        PUBWEAK TIM1_UP_IRQHandler
333        SECTION .text:CODE:REORDER(1)
334TIM1_UP_IRQHandler
335        B TIM1_UP_IRQHandler
336
337        PUBWEAK TIM1_TRG_COM_IRQHandler
338        SECTION .text:CODE:REORDER(1)
339TIM1_TRG_COM_IRQHandler
340        B TIM1_TRG_COM_IRQHandler
341
342        PUBWEAK TIM1_CC_IRQHandler
343        SECTION .text:CODE:REORDER(1)
344TIM1_CC_IRQHandler
345        B TIM1_CC_IRQHandler
346
347        PUBWEAK TIM2_IRQHandler
348        SECTION .text:CODE:REORDER(1)
349TIM2_IRQHandler
350        B TIM2_IRQHandler
351
352        PUBWEAK TIM3_IRQHandler
353        SECTION .text:CODE:REORDER(1)
354TIM3_IRQHandler
355        B TIM3_IRQHandler
356
357        PUBWEAK TIM4_IRQHandler
358        SECTION .text:CODE:REORDER(1)
359TIM4_IRQHandler
360        B TIM4_IRQHandler
361
362        PUBWEAK I2C1_EV_IRQHandler
363        SECTION .text:CODE:REORDER(1)
364I2C1_EV_IRQHandler
365        B I2C1_EV_IRQHandler
366
367        PUBWEAK I2C1_ER_IRQHandler
368        SECTION .text:CODE:REORDER(1)
369I2C1_ER_IRQHandler
370        B I2C1_ER_IRQHandler
371
372        PUBWEAK I2C2_EV_IRQHandler
373        SECTION .text:CODE:REORDER(1)
374I2C2_EV_IRQHandler
375        B I2C2_EV_IRQHandler
376
377        PUBWEAK I2C2_ER_IRQHandler
378        SECTION .text:CODE:REORDER(1)
379I2C2_ER_IRQHandler
380        B I2C2_ER_IRQHandler
381
382        PUBWEAK SPI1_IRQHandler
383        SECTION .text:CODE:REORDER(1)
384SPI1_IRQHandler
385        B SPI1_IRQHandler
386
387        PUBWEAK SPI2_IRQHandler
388        SECTION .text:CODE:REORDER(1)
389SPI2_IRQHandler
390        B SPI2_IRQHandler
391
392        PUBWEAK USART1_IRQHandler
393        SECTION .text:CODE:REORDER(1)
394USART1_IRQHandler
395        B USART1_IRQHandler
396
397        PUBWEAK USART2_IRQHandler
398        SECTION .text:CODE:REORDER(1)
399USART2_IRQHandler
400        B USART2_IRQHandler
401
402        PUBWEAK USART3_IRQHandler
403        SECTION .text:CODE:REORDER(1)
404USART3_IRQHandler
405        B USART3_IRQHandler
406
407        PUBWEAK EXTI15_10_IRQHandler
408        SECTION .text:CODE:REORDER(1)
409EXTI15_10_IRQHandler
410        B EXTI15_10_IRQHandler
411
412        PUBWEAK RTCAlarm_IRQHandler
413        SECTION .text:CODE:REORDER(1)
414RTCAlarm_IRQHandler
415        B RTCAlarm_IRQHandler
416
417        PUBWEAK USBWakeUp_IRQHandler
418        SECTION .text:CODE:REORDER(1)
419USBWakeUp_IRQHandler
420        B USBWakeUp_IRQHandler
421
422        PUBWEAK TIM8_BRK_IRQHandler
423        SECTION .text:CODE:REORDER(1)
424TIM8_BRK_IRQHandler
425        B TIM8_BRK_IRQHandler
426
427        PUBWEAK TIM8_UP_IRQHandler
428        SECTION .text:CODE:REORDER(1)
429TIM8_UP_IRQHandler
430        B TIM8_UP_IRQHandler
431
432        PUBWEAK TIM8_TRG_COM_IRQHandler
433        SECTION .text:CODE:REORDER(1)
434TIM8_TRG_COM_IRQHandler
435        B TIM8_TRG_COM_IRQHandler
436
437        PUBWEAK TIM8_CC_IRQHandler
438        SECTION .text:CODE:REORDER(1)
439TIM8_CC_IRQHandler
440        B TIM8_CC_IRQHandler
441
442        PUBWEAK ADC3_IRQHandler
443        SECTION .text:CODE:REORDER(1)
444ADC3_IRQHandler
445        B ADC3_IRQHandler
446
447        PUBWEAK FSMC_IRQHandler
448        SECTION .text:CODE:REORDER(1)
449FSMC_IRQHandler
450        B FSMC_IRQHandler
451
452        PUBWEAK SDIO_IRQHandler
453        SECTION .text:CODE:REORDER(1)
454SDIO_IRQHandler
455        B SDIO_IRQHandler
456
457        PUBWEAK TIM5_IRQHandler
458        SECTION .text:CODE:REORDER(1)
459TIM5_IRQHandler
460        B TIM5_IRQHandler
461
462        PUBWEAK SPI3_IRQHandler
463        SECTION .text:CODE:REORDER(1)
464SPI3_IRQHandler
465        B SPI3_IRQHandler
466
467        PUBWEAK UART4_IRQHandler
468        SECTION .text:CODE:REORDER(1)
469UART4_IRQHandler
470        B UART4_IRQHandler
471
472        PUBWEAK UART5_IRQHandler
473        SECTION .text:CODE:REORDER(1)
474UART5_IRQHandler
475        B UART5_IRQHandler
476
477        PUBWEAK TIM6_IRQHandler
478        SECTION .text:CODE:REORDER(1)
479TIM6_IRQHandler
480        B TIM6_IRQHandler
481
482        PUBWEAK TIM7_IRQHandler
483        SECTION .text:CODE:REORDER(1)
484TIM7_IRQHandler
485        B TIM7_IRQHandler
486
487        PUBWEAK DMA2_Channel1_IRQHandler
488        SECTION .text:CODE:REORDER(1)
489DMA2_Channel1_IRQHandler
490        B DMA2_Channel1_IRQHandler
491
492        PUBWEAK DMA2_Channel2_IRQHandler
493        SECTION .text:CODE:REORDER(1)
494DMA2_Channel2_IRQHandler
495        B DMA2_Channel2_IRQHandler
496
497        PUBWEAK DMA2_Channel3_IRQHandler
498        SECTION .text:CODE:REORDER(1)
499DMA2_Channel3_IRQHandler
500        B DMA2_Channel3_IRQHandler
501
502        PUBWEAK DMA2_Channel4_5_IRQHandler
503        SECTION .text:CODE:REORDER(1)
504DMA2_Channel4_5_IRQHandler
505        B DMA2_Channel4_5_IRQHandler
506
507
508        END
509
510/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/
511