1 ;
******************** (C
) COPYRIGHT
2016 STMicroelectronics
********************
2 ;
* File Name
: startup_stm32f303x8.s
3 ;
* Author
: MCD Application Team
4 ;
* Description
: STM32F303x6
/x8 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
11 ;
* After Reset the CortexM4 processor is in Thread mode
,
12 ;
* priority is Privileged
, and the Stack is set to Main.
14 ;
*******************************************************************************
16 ;
* Redistribution
and use in source
and binary forms
, with
or without modification
,
17 ;
* are permitted provided that the following conditions are met
:
18 ;
* 1. Redistributions of source code must retain the above copyright notice,
19 ;
* this list of conditions
and the following disclaimer.
20 ;
* 2. Redistributions in binary form must reproduce the above copyright notice,
21 ;
* this list of conditions
and the following disclaimer in the documentation
22 ;
* and/or other materials provided with the distribution.
23 ;
* 3. Neither the name of STMicroelectronics nor the names of its contributors
24 ;
* may
be used to endorse
or promote products derived from this software
25 ;
* without specific prior written permission.
27 ;
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS
AND CONTRIBUTORS
"AS IS"
28 ;
* AND ANY EXPRESS
OR IMPLIED WARRANTIES
, INCLUDING
, BUT
NOT LIMITED TO
, THE
29 ;
* IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR
A PARTICULAR PURPOSE ARE
30 ;
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
OR CONTRIBUTORS
BE LIABLE
31 ;
* FOR ANY DIRECT
, INDIRECT
, INCIDENTAL
, SPECIAL
, EXEMPLARY
, OR CONSEQUENTIAL
32 ;
* DAMAGES
(INCLUDING
, BUT
NOT LIMITED TO
, PROCUREMENT OF SUBSTITUTE GOODS
OR
33 ;
* SERVICES; LOSS OF USE
, DATA
, OR PROFITS;
OR BUSINESS INTERRUPTION
) HOWEVER
34 ;
* CAUSED
AND ON ANY THEORY OF LIABILITY
, WHETHER IN CONTRACT
, STRICT LIABILITY
,
35 ;
* OR TORT
(INCLUDING NEGLIGENCE
OR OTHERWISE
) ARISING IN ANY WAY OUT OF THE USE
36 ;
* OF THIS SOFTWARE
, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 ;
*******************************************************************************
40 ; Amount of memory
(in bytes
) allocated for Stack
41 ; Tailor this value to your application needs
42 ;
<h
> Stack Configuration
43 ;
<o
> Stack Size
(in Bytes
) <0x0-0xFFFFFFFF:8>
46 Stack_Size EQU
0x00000400
48 AREA STACK
, NOINIT
, READWRITE
, ALIGN
=3
49 Stack_Mem SPACE Stack_Size
53 ;
<h
> Heap Configuration
54 ;
<o
> Heap Size
(in Bytes
) <0x0-0xFFFFFFFF:8>
57 Heap_Size EQU
0x00000200
59 AREA HEAP
, NOINIT
, READWRITE
, ALIGN
=3
61 Heap_Mem SPACE Heap_Size
68 ; Vector Table Mapped to Address
0 at Reset
69 AREA RESET
, DATA
, READONLY
74 __Vectors DCD __initial_sp ; Top of Stack
75 DCD Reset_Handler ; Reset Handler
76 DCD NMI_Handler ; NMI Handler
77 DCD HardFault_Handler ; Hard Fault Handler
78 DCD MemManage_Handler ; MPU Fault Handler
79 DCD BusFault_Handler ; Bus Fault Handler
80 DCD UsageFault_Handler ; Usage Fault Handler
85 DCD SVC_Handler ; SVCall Handler
86 DCD DebugMon_Handler ; Debug Monitor Handler
88 DCD PendSV_Handler ; PendSV Handler
89 DCD SysTick_Handler ; SysTick Handler
92 DCD WWDG_IRQHandler ; Window WatchDog
93 DCD PVD_IRQHandler ; PVD through EXTI Line detection
94 DCD TAMP_STAMP_IRQHandler ; Tamper
and TimeStamps through the EXTI line
95 DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
96 DCD FLASH_IRQHandler ; FLASH
97 DCD RCC_IRQHandler ; RCC
98 DCD EXTI0_IRQHandler ; EXTI Line0
99 DCD EXTI1_IRQHandler ; EXTI Line1
100 DCD EXTI2_TSC_IRQHandler ; EXTI Line2
and Touch Sense controller
101 DCD EXTI3_IRQHandler ; EXTI Line3
102 DCD EXTI4_IRQHandler ; EXTI Line4
103 DCD DMA1_Channel1_IRQHandler ; DMA1 Channel
1
104 DCD DMA1_Channel2_IRQHandler ; DMA1 Channel
2
105 DCD DMA1_Channel3_IRQHandler ; DMA1 Channel
3
106 DCD DMA1_Channel4_IRQHandler ; DMA1 Channel
4
107 DCD DMA1_Channel5_IRQHandler ; DMA1 Channel
5
108 DCD DMA1_Channel6_IRQHandler ; DMA1 Channel
6
109 DCD DMA1_Channel7_IRQHandler ; DMA1 Channel
7
110 DCD ADC1_2_IRQHandler ; ADC1
and ADC2
111 DCD CAN_TX_IRQHandler ; CAN TX
112 DCD CAN_RX0_IRQHandler ; CAN RX0
113 DCD CAN_RX1_IRQHandler ; CAN RX1
114 DCD CAN_SCE_IRQHandler ; CAN SCE
115 DCD EXTI9_5_IRQHandler ; External Line
[9:5]s
116 DCD TIM1_BRK_TIM15_IRQHandler ; TIM1 Break
and TIM15
117 DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update
and TIM16
118 DCD TIM1_TRG_COM_TIM17_IRQHandler ; TIM1 Trigger
and Commutation
and TIM17
119 DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
120 DCD TIM2_IRQHandler ; TIM2
121 DCD TIM3_IRQHandler ; TIM3
123 DCD I2C1_EV_IRQHandler ; I2C1 Event
and EXTI Line
23
124 DCD I2C1_ER_IRQHandler ; I2C1 Error
127 DCD SPI1_IRQHandler ; SPI1
129 DCD USART1_IRQHandler ; USART1
and EXTI Line
25
130 DCD USART2_IRQHandler ; USART2
and EXTI Line
26
131 DCD USART3_IRQHandler ; USART3
and EXTI Line
28
132 DCD EXTI15_10_IRQHandler ; External Line
[15:10]s
133 DCD RTC_Alarm_IRQHandler ; RTC Alarm
(A and B) through EXTI Line
146 DCD TIM6_DAC1_IRQHandler ; TIM6
and DAC1 underrun errors
147 DCD TIM7_DAC2_IRQHandler ; TIM7
and DAC2 underrun errors
156 DCD COMP2_IRQHandler ; COMP2
157 DCD COMP4_6_IRQHandler ; COMP4
and COMP6
173 DCD FPU_IRQHandler ; FPU
177 __Vectors_Size EQU __Vectors_End
- __Vectors
179 AREA |
.text|, CODE, READONLY
183 EXPORT Reset_Handler
[WEAK
]
193 ; Dummy Exception Handlers
(infinite loops which can
be modified
)
196 EXPORT NMI_Handler
[WEAK
]
201 EXPORT HardFault_Handler
[WEAK
]
206 EXPORT MemManage_Handler
[WEAK
]
211 EXPORT BusFault_Handler
[WEAK
]
216 EXPORT UsageFault_Handler
[WEAK
]
220 EXPORT SVC_Handler
[WEAK
]
225 EXPORT DebugMon_Handler
[WEAK
]
229 EXPORT PendSV_Handler
[WEAK
]
233 EXPORT SysTick_Handler
[WEAK
]
239 EXPORT WWDG_IRQHandler
[WEAK
]
240 EXPORT PVD_IRQHandler
[WEAK
]
241 EXPORT TAMP_STAMP_IRQHandler
[WEAK
]
242 EXPORT RTC_WKUP_IRQHandler
[WEAK
]
243 EXPORT FLASH_IRQHandler
[WEAK
]
244 EXPORT RCC_IRQHandler
[WEAK
]
245 EXPORT EXTI0_IRQHandler
[WEAK
]
246 EXPORT EXTI1_IRQHandler
[WEAK
]
247 EXPORT EXTI2_TSC_IRQHandler
[WEAK
]
248 EXPORT EXTI3_IRQHandler
[WEAK
]
249 EXPORT EXTI4_IRQHandler
[WEAK
]
250 EXPORT DMA1_Channel1_IRQHandler
[WEAK
]
251 EXPORT DMA1_Channel2_IRQHandler
[WEAK
]
252 EXPORT DMA1_Channel3_IRQHandler
[WEAK
]
253 EXPORT DMA1_Channel4_IRQHandler
[WEAK
]
254 EXPORT DMA1_Channel5_IRQHandler
[WEAK
]
255 EXPORT DMA1_Channel6_IRQHandler
[WEAK
]
256 EXPORT DMA1_Channel7_IRQHandler
[WEAK
]
257 EXPORT ADC1_2_IRQHandler
[WEAK
]
258 EXPORT CAN_TX_IRQHandler
[WEAK
]
259 EXPORT CAN_RX0_IRQHandler
[WEAK
]
260 EXPORT CAN_RX1_IRQHandler
[WEAK
]
261 EXPORT CAN_SCE_IRQHandler
[WEAK
]
262 EXPORT EXTI9_5_IRQHandler
[WEAK
]
263 EXPORT TIM1_BRK_TIM15_IRQHandler
[WEAK
]
264 EXPORT TIM1_UP_TIM16_IRQHandler
[WEAK
]
265 EXPORT TIM1_TRG_COM_TIM17_IRQHandler
[WEAK
]
266 EXPORT TIM1_CC_IRQHandler
[WEAK
]
267 EXPORT TIM2_IRQHandler
[WEAK
]
268 EXPORT TIM3_IRQHandler
[WEAK
]
269 EXPORT I2C1_EV_IRQHandler
[WEAK
]
270 EXPORT I2C1_ER_IRQHandler
[WEAK
]
271 EXPORT SPI1_IRQHandler
[WEAK
]
272 EXPORT USART1_IRQHandler
[WEAK
]
273 EXPORT USART2_IRQHandler
[WEAK
]
274 EXPORT USART3_IRQHandler
[WEAK
]
275 EXPORT EXTI15_10_IRQHandler
[WEAK
]
276 EXPORT RTC_Alarm_IRQHandler
[WEAK
]
277 EXPORT TIM6_DAC1_IRQHandler
[WEAK
]
278 EXPORT TIM7_DAC2_IRQHandler
[WEAK
]
279 EXPORT COMP2_IRQHandler
[WEAK
]
280 EXPORT COMP4_6_IRQHandler
[WEAK
]
281 EXPORT FPU_IRQHandler
[WEAK
]
285 TAMP_STAMP_IRQHandler
294 DMA1_Channel1_IRQHandler
295 DMA1_Channel2_IRQHandler
296 DMA1_Channel3_IRQHandler
297 DMA1_Channel4_IRQHandler
298 DMA1_Channel5_IRQHandler
299 DMA1_Channel6_IRQHandler
300 DMA1_Channel7_IRQHandler
307 TIM1_BRK_TIM15_IRQHandler
308 TIM1_UP_TIM16_IRQHandler
309 TIM1_TRG_COM_TIM17_IRQHandler
333 ;
*******************************************************************************
334 ; User Stack
and Heap initialization
335 ;
*******************************************************************************
344 IMPORT __use_two_region_memory
345 EXPORT __user_initial_stackheap
347 __user_initial_stackheap
350 LDR
R1, =(Stack_Mem
+ Stack_Size
)
351 LDR
R2, = (Heap_Mem
+ Heap_Size
)
361 ;
************************ (C
) COPYRIGHT STMicroelectronics
*****END OF FILE
*****