1;********************* (C) COPYRIGHT 2017 STMicroelectronics ********************
2;* File Name          : startup_stm32l151xb.s
3;* Author             : MCD Application Team
4;* Description        : STM32L151XB Devices vector 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
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-M3 processor is in Thread mode,
14;*                      priority is Privileged, and the Stack is set to Main.
15;********************************************************************************
16;*
17;* Copyright (c) 2017 STMicroelectronics. All rights reserved.
18;*
19;* This software component is licensed by ST under BSD 3-Clause license,
20;* the "License"; You may not use this file except in compliance with the
21;* License. You may obtain a copy of the License at:
22;*                        opensource.org/licenses/BSD-3-Clause
23;*
24;*******************************************************************************
25;* <<< Use Configuration Wizard in Context Menu >>>
26;
27; Amount of memory (in bytes) allocated for Stack
28; Tailor this value to your application needs
29; <h> Stack Configuration
30;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
31; </h>
32
33Stack_Size      EQU     0x00000400
34
35                AREA    STACK, NOINIT, READWRITE, ALIGN=3
36Stack_Mem       SPACE   Stack_Size
37__initial_sp
38
39
40; <h> Heap Configuration
41;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
42; </h>
43
44Heap_Size       EQU     0x00000000
45
46                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
47__heap_base
48Heap_Mem        SPACE   Heap_Size
49__heap_limit
50
51                PRESERVE8
52                THUMB
53
54
55; Vector Table Mapped to Address 0 at Reset
56                AREA    RESET, DATA, READONLY
57                EXPORT  __Vectors
58                EXPORT  __Vectors_End
59                EXPORT  __Vectors_Size
60
61__Vectors       DCD     __initial_sp              ; Top of Stack
62                DCD     Reset_Handler             ; Reset Handler
63                DCD     NMI_Handler               ; NMI Handler
64                DCD     HardFault_Handler         ; Hard Fault Handler
65                DCD     MemManage_Handler         ; MPU Fault Handler
66                DCD     BusFault_Handler          ; Bus Fault Handler
67                DCD     UsageFault_Handler        ; Usage Fault Handler
68                DCD     0                         ; Reserved
69                DCD     0                         ; Reserved
70                DCD     0                         ; Reserved
71                DCD     0                         ; Reserved
72                DCD     SVC_Handler               ; SVCall Handler
73                DCD     DebugMon_Handler          ; Debug Monitor Handler
74                DCD     0                         ; Reserved
75                DCD     PendSV_Handler            ; PendSV Handler
76                DCD     SysTick_Handler           ; SysTick Handler
77
78                ; External Interrupts
79                DCD     WWDG_IRQHandler           ; Window Watchdog
80                DCD     PVD_IRQHandler            ; PVD through EXTI Line detect
81                DCD     TAMPER_STAMP_IRQHandler   ; Tamper and Time Stamp
82                DCD     RTC_WKUP_IRQHandler       ; RTC Wakeup
83                DCD     FLASH_IRQHandler          ; FLASH
84                DCD     RCC_IRQHandler            ; RCC
85                DCD     EXTI0_IRQHandler          ; EXTI Line 0
86                DCD     EXTI1_IRQHandler          ; EXTI Line 1
87                DCD     EXTI2_IRQHandler          ; EXTI Line 2
88                DCD     EXTI3_IRQHandler          ; EXTI Line 3
89                DCD     EXTI4_IRQHandler          ; EXTI Line 4
90                DCD     DMA1_Channel1_IRQHandler  ; DMA1 Channel 1
91                DCD     DMA1_Channel2_IRQHandler  ; DMA1 Channel 2
92                DCD     DMA1_Channel3_IRQHandler  ; DMA1 Channel 3
93                DCD     DMA1_Channel4_IRQHandler  ; DMA1 Channel 4
94                DCD     DMA1_Channel5_IRQHandler  ; DMA1 Channel 5
95                DCD     DMA1_Channel6_IRQHandler  ; DMA1 Channel 6
96                DCD     DMA1_Channel7_IRQHandler  ; DMA1 Channel 7
97                DCD     ADC1_IRQHandler           ; ADC1
98                DCD     USB_HP_IRQHandler         ; USB High Priority
99                DCD     USB_LP_IRQHandler         ; USB Low  Priority
100                DCD     DAC_IRQHandler            ; DAC
101                DCD     COMP_IRQHandler           ; COMP through EXTI Line
102                DCD     EXTI9_5_IRQHandler        ; EXTI Line 9..5
103                DCD     0                         ; Reserved
104                DCD     TIM9_IRQHandler           ; TIM9
105                DCD     TIM10_IRQHandler          ; TIM10
106                DCD     TIM11_IRQHandler          ; TIM11
107                DCD     TIM2_IRQHandler           ; TIM2
108                DCD     TIM3_IRQHandler           ; TIM3
109                DCD     TIM4_IRQHandler           ; TIM4
110                DCD     I2C1_EV_IRQHandler        ; I2C1 Event
111                DCD     I2C1_ER_IRQHandler        ; I2C1 Error
112                DCD     I2C2_EV_IRQHandler        ; I2C2 Event
113                DCD     I2C2_ER_IRQHandler        ; I2C2 Error
114                DCD     SPI1_IRQHandler           ; SPI1
115                DCD     SPI2_IRQHandler           ; SPI2
116                DCD     USART1_IRQHandler         ; USART1
117                DCD     USART2_IRQHandler         ; USART2
118                DCD     USART3_IRQHandler         ; USART3
119                DCD     EXTI15_10_IRQHandler      ; EXTI Line 15..10
120                DCD     RTC_Alarm_IRQHandler      ; RTC Alarm through EXTI Line
121                DCD     USB_FS_WKUP_IRQHandler    ; USB FS Wakeup from suspend
122                DCD     TIM6_IRQHandler           ; TIM6
123                DCD     TIM7_IRQHandler           ; TIM7
124
125__Vectors_End
126
127__Vectors_Size  EQU  __Vectors_End - __Vectors
128
129                AREA    |.text|, CODE, READONLY
130
131; Reset handler routine
132Reset_Handler    PROC
133                 EXPORT  Reset_Handler             [WEAK]
134        IMPORT  __main
135        IMPORT  SystemInit
136                 LDR     R0, =SystemInit
137                 BLX     R0
138                 LDR     R0, =__main
139                 BX      R0
140                 ENDP
141
142; Dummy Exception Handlers (infinite loops which can be modified)
143
144NMI_Handler     PROC
145                EXPORT  NMI_Handler                [WEAK]
146                B       .
147                ENDP
148HardFault_Handler\
149                PROC
150                EXPORT  HardFault_Handler          [WEAK]
151                B       .
152                ENDP
153MemManage_Handler\
154                PROC
155                EXPORT  MemManage_Handler          [WEAK]
156                B       .
157                ENDP
158BusFault_Handler\
159                PROC
160                EXPORT  BusFault_Handler           [WEAK]
161                B       .
162                ENDP
163UsageFault_Handler\
164                PROC
165                EXPORT  UsageFault_Handler         [WEAK]
166                B       .
167                ENDP
168SVC_Handler     PROC
169                EXPORT  SVC_Handler                [WEAK]
170                B       .
171                ENDP
172DebugMon_Handler\
173                PROC
174                EXPORT  DebugMon_Handler           [WEAK]
175                B       .
176                ENDP
177PendSV_Handler  PROC
178                EXPORT  PendSV_Handler             [WEAK]
179                B       .
180                ENDP
181SysTick_Handler PROC
182                EXPORT  SysTick_Handler            [WEAK]
183                B       .
184                ENDP
185
186Default_Handler PROC
187
188                EXPORT  WWDG_IRQHandler            [WEAK]
189                EXPORT  PVD_IRQHandler             [WEAK]
190                EXPORT  TAMPER_STAMP_IRQHandler    [WEAK]
191                EXPORT  RTC_WKUP_IRQHandler        [WEAK]
192                EXPORT  FLASH_IRQHandler           [WEAK]
193                EXPORT  RCC_IRQHandler             [WEAK]
194                EXPORT  EXTI0_IRQHandler           [WEAK]
195                EXPORT  EXTI1_IRQHandler           [WEAK]
196                EXPORT  EXTI2_IRQHandler           [WEAK]
197                EXPORT  EXTI3_IRQHandler           [WEAK]
198                EXPORT  EXTI4_IRQHandler           [WEAK]
199                EXPORT  DMA1_Channel1_IRQHandler   [WEAK]
200                EXPORT  DMA1_Channel2_IRQHandler   [WEAK]
201                EXPORT  DMA1_Channel3_IRQHandler   [WEAK]
202                EXPORT  DMA1_Channel4_IRQHandler   [WEAK]
203                EXPORT  DMA1_Channel5_IRQHandler   [WEAK]
204                EXPORT  DMA1_Channel6_IRQHandler   [WEAK]
205                EXPORT  DMA1_Channel7_IRQHandler   [WEAK]
206                EXPORT  ADC1_IRQHandler            [WEAK]
207                EXPORT  USB_HP_IRQHandler          [WEAK]
208                EXPORT  USB_LP_IRQHandler          [WEAK]
209                EXPORT  DAC_IRQHandler             [WEAK]
210                EXPORT  COMP_IRQHandler            [WEAK]
211                EXPORT  EXTI9_5_IRQHandler         [WEAK]
212                EXPORT  TIM9_IRQHandler            [WEAK]
213                EXPORT  TIM10_IRQHandler           [WEAK]
214                EXPORT  TIM11_IRQHandler           [WEAK]
215                EXPORT  TIM2_IRQHandler            [WEAK]
216                EXPORT  TIM3_IRQHandler            [WEAK]
217                EXPORT  TIM4_IRQHandler            [WEAK]
218                EXPORT  I2C1_EV_IRQHandler         [WEAK]
219                EXPORT  I2C1_ER_IRQHandler         [WEAK]
220                EXPORT  I2C2_EV_IRQHandler         [WEAK]
221                EXPORT  I2C2_ER_IRQHandler         [WEAK]
222                EXPORT  SPI1_IRQHandler            [WEAK]
223                EXPORT  SPI2_IRQHandler            [WEAK]
224                EXPORT  USART1_IRQHandler          [WEAK]
225                EXPORT  USART2_IRQHandler          [WEAK]
226                EXPORT  USART3_IRQHandler          [WEAK]
227                EXPORT  EXTI15_10_IRQHandler       [WEAK]
228                EXPORT  RTC_Alarm_IRQHandler       [WEAK]
229                EXPORT  USB_FS_WKUP_IRQHandler     [WEAK]
230                EXPORT  TIM6_IRQHandler            [WEAK]
231                EXPORT  TIM7_IRQHandler            [WEAK]
232
233WWDG_IRQHandler
234PVD_IRQHandler
235TAMPER_STAMP_IRQHandler
236RTC_WKUP_IRQHandler
237FLASH_IRQHandler
238RCC_IRQHandler
239EXTI0_IRQHandler
240EXTI1_IRQHandler
241EXTI2_IRQHandler
242EXTI3_IRQHandler
243EXTI4_IRQHandler
244DMA1_Channel1_IRQHandler
245DMA1_Channel2_IRQHandler
246DMA1_Channel3_IRQHandler
247DMA1_Channel4_IRQHandler
248DMA1_Channel5_IRQHandler
249DMA1_Channel6_IRQHandler
250DMA1_Channel7_IRQHandler
251ADC1_IRQHandler
252USB_HP_IRQHandler
253USB_LP_IRQHandler
254DAC_IRQHandler
255COMP_IRQHandler
256EXTI9_5_IRQHandler
257TIM9_IRQHandler
258TIM10_IRQHandler
259TIM11_IRQHandler
260TIM2_IRQHandler
261TIM3_IRQHandler
262TIM4_IRQHandler
263I2C1_EV_IRQHandler
264I2C1_ER_IRQHandler
265I2C2_EV_IRQHandler
266I2C2_ER_IRQHandler
267SPI1_IRQHandler
268SPI2_IRQHandler
269USART1_IRQHandler
270USART2_IRQHandler
271USART3_IRQHandler
272EXTI15_10_IRQHandler
273RTC_Alarm_IRQHandler
274USB_FS_WKUP_IRQHandler
275TIM6_IRQHandler
276TIM7_IRQHandler
277
278                B       .
279
280                ENDP
281
282                ALIGN
283
284;*******************************************************************************
285; User Stack and Heap initialization
286;*******************************************************************************
287                 IF      :DEF:__MICROLIB
288
289                 EXPORT  __initial_sp
290                 EXPORT  __heap_base
291                 EXPORT  __heap_limit
292
293                 ELSE
294
295                 IMPORT  __use_two_region_memory
296                 EXPORT  __user_initial_stackheap
297
298__user_initial_stackheap
299
300                 LDR     R0, =  Heap_Mem
301                 LDR     R1, =(Stack_Mem + Stack_Size)
302                 LDR     R2, = (Heap_Mem +  Heap_Size)
303                 LDR     R3, = Stack_Mem
304                 BX      LR
305
306                 ALIGN
307
308                 ENDIF
309
310                 END
311
312;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****