source: trunk/firmware_v2/SES/STM32C0xx/Source/stm32c031xx_Vectors.s

Last change on this file was 17, checked in by f.jahn, 4 months ago
File size: 8.1 KB
Line 
1/*********************************************************************
2* SEGGER Microcontroller GmbH *
3* The Embedded Experts *
4**********************************************************************
5* *
6* (c) 2014 - 2024 SEGGER Microcontroller GmbH *
7* *
8* www.segger.com Support: support@segger.com *
9* *
10**********************************************************************
11* *
12* All rights reserved. *
13* *
14* Redistribution and use in source and binary forms, with or *
15* without modification, are permitted provided that the following *
16* condition is met: *
17* *
18* - Redistributions of source code must retain the above copyright *
19* notice, this condition and the following disclaimer. *
20* *
21* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
22* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
23* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
24* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
25* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
26* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
27* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
28* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
29* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
30* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
31* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
32* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
33* DAMAGE. *
34* *
35**********************************************************************
36
37-------------------------- END-OF-HEADER -----------------------------
38
39File : stm32c031xx_Vectors.s
40Purpose : Exception and interrupt vectors for stm32c031xx devices.
41
42Additional information:
43 Preprocessor Definitions
44 __NO_EXTERNAL_INTERRUPTS
45 If defined,
46 the vector table will contain only the internal exceptions
47 and interrupts.
48 __VECTORS_IN_RAM
49 If defined,
50 an area of RAM, large enough to store the vector table,
51 will be reserved.
52
53 __OPTIMIZATION_SMALL
54 If defined,
55 all weak definitions of interrupt handlers will share the
56 same implementation.
57 If not defined,
58 all weak definitions of interrupt handlers will be defined
59 with their own implementation.
60*/
61 .syntax unified
62
63/*********************************************************************
64*
65* Macros
66*
67**********************************************************************
68*/
69
70//
71// Directly place a vector (word) in the vector table
72//
73.macro VECTOR Name=
74 .section .vectors, "ax"
75 .code 16
76 .word \Name
77.endm
78
79//
80// Declare an exception handler with a weak definition
81//
82.macro EXC_HANDLER Name=
83 //
84 // Insert vector in vector table
85 //
86 .section .vectors, "ax"
87 .word \Name
88 //
89 // Insert dummy handler in init section
90 //
91 .section .init.\Name, "ax"
92 .thumb_func
93 .weak \Name
94 .balign 2
95\Name:
96 1: b 1b // Endless loop
97.endm
98
99//
100// Declare an interrupt handler with a weak definition
101//
102.macro ISR_HANDLER Name=
103 //
104 // Insert vector in vector table
105 //
106 .section .vectors, "ax"
107 .word \Name
108 //
109 // Insert dummy handler in init section
110 //
111#if defined(__OPTIMIZATION_SMALL)
112 .section .init, "ax"
113 .weak \Name
114 .thumb_set \Name,Dummy_Handler
115#else
116 .section .init.\Name, "ax"
117 .thumb_func
118 .weak \Name
119 .balign 2
120\Name:
121 1: b 1b // Endless loop
122#endif
123.endm
124
125//
126// Place a reserved vector in vector table
127//
128.macro ISR_RESERVED
129 .section .vectors, "ax"
130 .word 0
131.endm
132
133//
134// Place a reserved vector in vector table
135//
136.macro ISR_RESERVED_DUMMY
137 .section .vectors, "ax"
138 .word Dummy_Handler
139.endm
140
141/*********************************************************************
142*
143* Externals
144*
145**********************************************************************
146*/
147 .extern __stack_end__
148 .extern Reset_Handler
149 .extern HardFault_Handler
150
151/*********************************************************************
152*
153* Global functions
154*
155**********************************************************************
156*/
157
158/*********************************************************************
159*
160* Setup of the vector table and weak definition of interrupt handlers
161*
162*/
163 .section .vectors, "ax"
164 .code 16
165 .balign 256
166 .global _vectors
167_vectors:
168 //
169 // Internal exceptions and interrupts
170 //
171 VECTOR __stack_end__
172 VECTOR Reset_Handler
173 EXC_HANDLER NMI_Handler
174 VECTOR HardFault_Handler
175#ifdef __ARM_ARCH_6M__
176 ISR_RESERVED
177 ISR_RESERVED
178 ISR_RESERVED
179#else
180 EXC_HANDLER MemManage_Handler
181 EXC_HANDLER BusFault_Handler
182 EXC_HANDLER UsageFault_Handler
183#endif
184 ISR_RESERVED
185 ISR_RESERVED
186 ISR_RESERVED
187 ISR_RESERVED
188 EXC_HANDLER SVC_Handler
189#ifdef __ARM_ARCH_6M__
190 ISR_RESERVED
191#else
192 EXC_HANDLER DebugMon_Handler
193#endif
194 ISR_RESERVED
195 EXC_HANDLER PendSV_Handler
196 EXC_HANDLER SysTick_Handler
197 //
198 // External interrupts
199 //
200#ifndef __NO_EXTERNAL_INTERRUPTS
201 ISR_HANDLER WWDG_IRQHandler
202 ISR_RESERVED
203 ISR_HANDLER RTC_IRQHandler
204 ISR_HANDLER FLASH_IRQHandler
205 ISR_HANDLER RCC_IRQHandler
206 ISR_HANDLER EXTI0_1_IRQHandler
207 ISR_HANDLER EXTI2_3_IRQHandler
208 ISR_HANDLER EXTI4_15_IRQHandler
209 ISR_RESERVED
210 ISR_HANDLER DMA1_Channel1_IRQHandler
211 ISR_HANDLER DMA1_Channel2_3_IRQHandler
212 ISR_HANDLER DMAMUX1_IRQHandler
213 ISR_HANDLER ADC1_IRQHandler
214 ISR_HANDLER TIM1_BRK_UP_TRG_COM_IRQHandler
215 ISR_HANDLER TIM1_CC_IRQHandler
216 ISR_RESERVED
217 ISR_HANDLER TIM3_IRQHandler
218 ISR_RESERVED
219 ISR_RESERVED
220 ISR_HANDLER TIM14_IRQHandler
221 ISR_RESERVED
222 ISR_HANDLER TIM16_IRQHandler
223 ISR_HANDLER TIM17_IRQHandler
224 ISR_HANDLER I2C1_IRQHandler
225 ISR_RESERVED
226 ISR_HANDLER SPI1_IRQHandler
227 ISR_RESERVED
228 ISR_HANDLER USART1_IRQHandler
229 ISR_HANDLER USART2_IRQHandler
230#endif
231 //
232 .section .vectors, "ax"
233_vectors_end:
234
235#ifdef __VECTORS_IN_RAM
236 //
237 // Reserve space with the size of the vector table
238 // in the designated RAM section.
239 //
240 .section .vectors_ram, "ax"
241 .balign 256
242 .global _vectors_ram
243
244_vectors_ram:
245 .space _vectors_end - _vectors, 0
246#endif
247
248/*********************************************************************
249*
250* Dummy handler to be used for reserved interrupt vectors
251* and weak implementation of interrupts.
252*
253*/
254 .section .init.Dummy_Handler, "ax"
255 .thumb_func
256 .weak Dummy_Handler
257 .balign 2
258Dummy_Handler:
259 1: b 1b // Endless loop
260
261
262/*************************** End of file ****************************/
Note: See TracBrowser for help on using the repository browser.