1 /*
2 * Copyright (c) 2009-2024, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 *
6 * Licensed under the Apache License, Version 2.0 (the License); you may
7 * not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
14 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19 /*
20 * This file is derivative of CMSIS V5.6.0 startup_ARMv81MML.c
21 * Git SHA: b5f0603d6a584d1724d952fd8b0737458b90d62b
22 */
23
24 #include "stm32h5xx.h"
25 /*----------------------------------------------------------------------------
26 Exception / Interrupt Handler Function Prototype
27 *----------------------------------------------------------------------------*/
28 typedef void( *pFunc )( void );
29
30 /*----------------------------------------------------------------------------
31 External References
32 *----------------------------------------------------------------------------*/
33 extern uint32_t __INITIAL_SP;
34 extern uint32_t __STACK_LIMIT;
35
36 extern __NO_RETURN void __PROGRAM_START(void);
37
38
39 /*----------------------------------------------------------------------------
40 Internal References
41 *----------------------------------------------------------------------------*/
42 __NO_RETURN void Reset_Handler (void);
43
44 /*----------------------------------------------------------------------------
45 Exception / Interrupt Handler
46 *----------------------------------------------------------------------------*/
47 #define DEFAULT_IRQ_HANDLER(handler_name) \
48 void handler_name(void); \
49 __WEAK void handler_name(void) { \
50 while(1); \
51 }
52
53 /* Exceptions */
54 DEFAULT_IRQ_HANDLER(NMI_Handler)
55 DEFAULT_IRQ_HANDLER(HardFault_Handler)
56 DEFAULT_IRQ_HANDLER(MemManage_Handler)
57 DEFAULT_IRQ_HANDLER(BusFault_Handler)
58 DEFAULT_IRQ_HANDLER(UsageFault_Handler)
59 DEFAULT_IRQ_HANDLER(SecureFault_Handler)
60 DEFAULT_IRQ_HANDLER(SVC_Handler)
61 DEFAULT_IRQ_HANDLER(DebugMon_Handler)
62 DEFAULT_IRQ_HANDLER(PendSV_Handler)
63 DEFAULT_IRQ_HANDLER(SysTick_Handler)
64
65 DEFAULT_IRQ_HANDLER(WWDG_IRQHandler)
66 DEFAULT_IRQ_HANDLER(PVD_AVD_IRQHandler)
67 DEFAULT_IRQ_HANDLER(RTC_IRQHandler)
68 #if defined(STM32H573xx) || defined (STM32H563xx)
69 DEFAULT_IRQ_HANDLER(RTC_S_IRQHandler)
70 #endif
71 DEFAULT_IRQ_HANDLER(TAMP_IRQHandler)
72 DEFAULT_IRQ_HANDLER(RAMCFG_IRQHandler)
73 DEFAULT_IRQ_HANDLER(FLASH_IRQHandler)
74 #if defined(STM32H573xx) || defined (STM32H563xx)
75 DEFAULT_IRQ_HANDLER(FLASH_S_IRQHandler)
76 #endif
77 DEFAULT_IRQ_HANDLER(GTZC_IRQHandler)
78 DEFAULT_IRQ_HANDLER(RCC_IRQHandler)
79 #if defined(STM32H573xx) || defined (STM32H563xx)
80 DEFAULT_IRQ_HANDLER(RCC_S_IRQHandler)
81 #endif
82 DEFAULT_IRQ_HANDLER(EXTI0_IRQHandler)
83 DEFAULT_IRQ_HANDLER(EXTI1_IRQHandler)
84 DEFAULT_IRQ_HANDLER(EXTI2_IRQHandler)
85 DEFAULT_IRQ_HANDLER(EXTI3_IRQHandler)
86 DEFAULT_IRQ_HANDLER(EXTI4_IRQHandler)
87 DEFAULT_IRQ_HANDLER(EXTI5_IRQHandler)
88 DEFAULT_IRQ_HANDLER(EXTI6_IRQHandler)
89 DEFAULT_IRQ_HANDLER(EXTI7_IRQHandler)
90 DEFAULT_IRQ_HANDLER(EXTI8_IRQHandler)
91 DEFAULT_IRQ_HANDLER(EXTI9_IRQHandler)
92 DEFAULT_IRQ_HANDLER(EXTI10_IRQHandler)
93 DEFAULT_IRQ_HANDLER(EXTI11_IRQHandler)
94 DEFAULT_IRQ_HANDLER(EXTI12_IRQHandler)
95 DEFAULT_IRQ_HANDLER(EXTI13_IRQHandler)
96 DEFAULT_IRQ_HANDLER(EXTI14_IRQHandler)
97 DEFAULT_IRQ_HANDLER(EXTI15_IRQHandler)
98 DEFAULT_IRQ_HANDLER(GPDMA1_Channel0_IRQHandler)
99 DEFAULT_IRQ_HANDLER(GPDMA1_Channel1_IRQHandler)
100 DEFAULT_IRQ_HANDLER(GPDMA1_Channel2_IRQHandler)
101 DEFAULT_IRQ_HANDLER(GPDMA1_Channel3_IRQHandler)
102 DEFAULT_IRQ_HANDLER(GPDMA1_Channel4_IRQHandler)
103 DEFAULT_IRQ_HANDLER(GPDMA1_Channel5_IRQHandler)
104 DEFAULT_IRQ_HANDLER(GPDMA1_Channel6_IRQHandler)
105 DEFAULT_IRQ_HANDLER(GPDMA1_Channel7_IRQHandler)
106 DEFAULT_IRQ_HANDLER(IWDG_IRQHandler)
107 #ifdef STM32H573xx
108 DEFAULT_IRQ_HANDLER(SAES_IRQHandler)
109 #endif
110 DEFAULT_IRQ_HANDLER(ADC1_IRQHandler)
111 DEFAULT_IRQ_HANDLER(DAC1_IRQHandler)
112 DEFAULT_IRQ_HANDLER(FDCAN1_IT0_IRQHandler)
113 DEFAULT_IRQ_HANDLER(FDCAN1_IT1_IRQHandler)
114 DEFAULT_IRQ_HANDLER(TIM1_BRK_IRQHandler)
115 DEFAULT_IRQ_HANDLER(TIM1_UP_IRQHandler)
116 DEFAULT_IRQ_HANDLER(TIM1_TRG_COM_IRQHandler)
117 DEFAULT_IRQ_HANDLER(TIM1_CC_IRQHandler)
118 DEFAULT_IRQ_HANDLER(TIM2_IRQHandler)
119 DEFAULT_IRQ_HANDLER(TIM3_IRQHandler)
120 #if defined(STM32H573xx) || defined (STM32H563xx)
121 DEFAULT_IRQ_HANDLER(TIM4_IRQHandler)
122 DEFAULT_IRQ_HANDLER(TIM5_IRQHandler)
123 #endif
124 DEFAULT_IRQ_HANDLER(TIM6_IRQHandler)
125 DEFAULT_IRQ_HANDLER(TIM7_IRQHandler)
126 DEFAULT_IRQ_HANDLER(I2C1_EV_IRQHandler)
127 DEFAULT_IRQ_HANDLER(I2C1_ER_IRQHandler)
128 DEFAULT_IRQ_HANDLER(I2C2_EV_IRQHandler)
129 DEFAULT_IRQ_HANDLER(I2C2_ER_IRQHandler)
130 DEFAULT_IRQ_HANDLER(SPI1_IRQHandler)
131 DEFAULT_IRQ_HANDLER(SPI2_IRQHandler)
132 DEFAULT_IRQ_HANDLER(SPI3_IRQHandler)
133 DEFAULT_IRQ_HANDLER(USART1_IRQHandler)
134 DEFAULT_IRQ_HANDLER(USART2_IRQHandler)
135 DEFAULT_IRQ_HANDLER(USART3_IRQHandler)
136 #if defined(STM32H573xx) || defined (STM32H563xx)
137 DEFAULT_IRQ_HANDLER(UART4_IRQHandler)
138 DEFAULT_IRQ_HANDLER(UART5_IRQHandler)
139 #endif
140 DEFAULT_IRQ_HANDLER(LPUART1_IRQHandler)
141 DEFAULT_IRQ_HANDLER(LPTIM1_IRQHandler)
142 #if defined(STM32H573xx) || defined (STM32H563xx)
143 DEFAULT_IRQ_HANDLER(TIM8_BRK_IRQHandler)
144 DEFAULT_IRQ_HANDLER(TIM8_UP_IRQHandler)
145 DEFAULT_IRQ_HANDLER(TIM8_TRG_COM_IRQHandler)
146 DEFAULT_IRQ_HANDLER(TIM8_CC_IRQHandler)
147 DEFAULT_IRQ_HANDLER(ADC2_IRQHandler)
148 #endif
149 DEFAULT_IRQ_HANDLER(LPTIM2_IRQHandler)
150 #if defined(STM32H573xx) || defined (STM32H563xx)
151 DEFAULT_IRQ_HANDLER(TIM15_IRQHandler)
152 DEFAULT_IRQ_HANDLER(TIM16_IRQHandler)
153 DEFAULT_IRQ_HANDLER(TIM17_IRQHandler)
154 #endif
155 DEFAULT_IRQ_HANDLER(OTG_FS_IRQHandler)
156 DEFAULT_IRQ_HANDLER(CRS_IRQHandler)
157 #if defined(STM32H573xx) || defined (STM32H563xx)
158 DEFAULT_IRQ_HANDLER(UCPD1_IRQHandler)
159 DEFAULT_IRQ_HANDLER(FMC_IRQHandler)
160 DEFAULT_IRQ_HANDLER(OCTOSPI1_IRQHandler)
161 DEFAULT_IRQ_HANDLER(SDMMC1_IRQHandler)
162 DEFAULT_IRQ_HANDLER(I2C3_EV_IRQHandler)
163 DEFAULT_IRQ_HANDLER(I2C3_ER_IRQHandler)
164 DEFAULT_IRQ_HANDLER(SPI4_IRQHandler)
165 DEFAULT_IRQ_HANDLER(SPI5_IRQHandler)
166 DEFAULT_IRQ_HANDLER(SPI6_IRQHandler)
167 DEFAULT_IRQ_HANDLER(USART6_IRQHandler)
168 DEFAULT_IRQ_HANDLER(USART10_IRQHandler)
169 DEFAULT_IRQ_HANDLER(USART11_IRQHandler)
170 DEFAULT_IRQ_HANDLER(SAI1_IRQHandler)
171 DEFAULT_IRQ_HANDLER(SAI2_IRQHandler)
172 #endif
173 DEFAULT_IRQ_HANDLER(GPDMA2_Channel0_IRQHandler)
174 DEFAULT_IRQ_HANDLER(GPDMA2_Channel1_IRQHandler)
175 DEFAULT_IRQ_HANDLER(GPDMA2_Channel2_IRQHandler)
176 DEFAULT_IRQ_HANDLER(GPDMA2_Channel3_IRQHandler)
177 DEFAULT_IRQ_HANDLER(GPDMA2_Channel4_IRQHandler)
178 DEFAULT_IRQ_HANDLER(GPDMA2_Channel5_IRQHandler)
179 DEFAULT_IRQ_HANDLER(GPDMA2_Channel6_IRQHandler)
180 DEFAULT_IRQ_HANDLER(GPDMA2_Channel7_IRQHandler)
181 #if defined(STM32H573xx) || defined (STM32H563xx)
182 DEFAULT_IRQ_HANDLER(UART7_IRQHandler)
183 DEFAULT_IRQ_HANDLER(UART8_IRQHandler)
184 DEFAULT_IRQ_HANDLER(UART9_IRQHandler)
185 DEFAULT_IRQ_HANDLER(UART12_IRQHandler)
186 DEFAULT_IRQ_HANDLER(SDMMC2_IRQHandler)
187 #else
188 DEFAULT_IRQ_HANDLER(COMP1_IRQHandler)
189 DEFAULT_IRQ_HANDLER(I3C2_EV_IRQHandler)
190 DEFAULT_IRQ_HANDLER(I3C2_ER_IRQHandler)
191 #endif
192 DEFAULT_IRQ_HANDLER(FPU_IRQHandler)
193 DEFAULT_IRQ_HANDLER(ICACHE_IRQHandler)
194 #if defined(STM32H573xx) || defined (STM32H563xx)
195 DEFAULT_IRQ_HANDLER(DCACHE_IRQHandler)
196 DEFAULT_IRQ_HANDLER(ETH_IRQHandler)
197 DEFAULT_IRQ_HANDLER(ETH_WKUP_IRQHandler)
198 DEFAULT_IRQ_HANDLER(DCMI_PSSI_IRQHandler)
199 DEFAULT_IRQ_HANDLER(FDCAN2_IT0_IRQHandler)
200 DEFAULT_IRQ_HANDLER(FDCAN2_IT1_IRQHandler)
201 DEFAULT_IRQ_HANDLER(CORDIC_IRQHandler)
202 DEFAULT_IRQ_HANDLER(FMAC_IRQHandler)
203 #endif
204 DEFAULT_IRQ_HANDLER(DTS_IRQHandler)
205 DEFAULT_IRQ_HANDLER(RNG_IRQHandler)
206 #ifdef STM32H573xx
207 DEFAULT_IRQ_HANDLER(OTFDEC1_IRQHandler)
208 DEFAULT_IRQ_HANDLER(AES_IRQHandler)
209 #endif
210 DEFAULT_IRQ_HANDLER(HASH_IRQHandler)
211 #ifdef STM32H573xx
212 DEFAULT_IRQ_HANDLER(PKA_IRQHandler)
213 #endif
214 #if defined(STM32H573xx) || defined (STM32H563xx)
215 DEFAULT_IRQ_HANDLER(CEC_IRQHandler)
216 DEFAULT_IRQ_HANDLER(TIM12_IRQHandler)
217 DEFAULT_IRQ_HANDLER(TIM13_IRQHandler)
218 DEFAULT_IRQ_HANDLER(TIM14_IRQHandler)
219 #endif
220 DEFAULT_IRQ_HANDLER(I3C1_EV_IRQHandler)
221 DEFAULT_IRQ_HANDLER(I3C1_ER_IRQHandler)
222 #if defined(STM32H573xx) || defined (STM32H563xx)
223 DEFAULT_IRQ_HANDLER(I2C4_EV_IRQHandler)
224 DEFAULT_IRQ_HANDLER(I2C4_ER_IRQHandler)
225 DEFAULT_IRQ_HANDLER(LPTIM3_IRQHandler)
226 DEFAULT_IRQ_HANDLER(LPTIM4_IRQHandler)
227 DEFAULT_IRQ_HANDLER(LPTIM5_IRQHandler)
228 DEFAULT_IRQ_HANDLER(LPTIM6_IRQHandler)
229 #endif
230
231 /*----------------------------------------------------------------------------
232 Exception / Interrupt Vector table
233 *----------------------------------------------------------------------------*/
234
235 #if defined ( __GNUC__ )
236 #pragma GCC diagnostic push
237 #pragma GCC diagnostic ignored "-Wpedantic"
238 #endif
239
240 extern const pFunc __VECTOR_TABLE[];
241 const pFunc __VECTOR_TABLE[] __VECTOR_TABLE_ATTRIBUTE = {
242 (pFunc)(&__INITIAL_SP), /* Initial Stack Pointer */
243 Reset_Handler, /* Reset Handler */
244 NMI_Handler, /* -14: NMI Handler */
245 HardFault_Handler, /* -13: Hard Fault Handler */
246 MemManage_Handler, /* -12: MPU Fault Handler */
247 BusFault_Handler, /* -11: Bus Fault Handler */
248 UsageFault_Handler, /* -10: Usage Fault Handler */
249 SecureFault_Handler, /* -9: Secure Fault Handler */
250 0, /* Reserved */
251 0, /* Reserved */
252 0, /* Reserved */
253 SVC_Handler, /* -5: SVCall Handler */
254 DebugMon_Handler, /* -4: Debug Monitor Handler */
255 0, /* Reserved */
256 PendSV_Handler, /* -2: PendSV Handler */
257 SysTick_Handler, /* -1: SysTick Handler */
258 WWDG_IRQHandler, /* 0: Window WatchDog */
259 PVD_AVD_IRQHandler, /* 1: PVD/AVD through EXTI Line detection Interrupt */
260 RTC_IRQHandler, /* 2: RTC non-secure interrupt */
261 #if defined(STM32H573xx) || defined (STM32H563xx)
262 RTC_S_IRQHandler, /* 3: RTC secure interrupt */
263 #else
264 0, /* 3: Reserved */
265 #endif
266 TAMP_IRQHandler, /* 4: Tamper non-secure interrupt */
267 RAMCFG_IRQHandler, /* 5: RAMCFG global */
268 FLASH_IRQHandler, /* 6: FLASH non-secure global interrupt */
269 #if defined(STM32H573xx) || defined (STM32H563xx)
270 FLASH_S_IRQHandler, /* 7: FLASH secure global interrupt */
271 #else
272 0, /* 7: Reserved */
273 #endif
274 GTZC_IRQHandler, /* 8: Global TrustZone Controller interrupt */
275 RCC_IRQHandler, /* 9: RCC non-secure global interrupt */
276 #if defined(STM32H573xx) || defined (STM32H563xx)
277 RCC_S_IRQHandler, /* 10: RCC secure global interrupt */
278 #else
279 0, /* 10: Reserved */
280 #endif
281 EXTI0_IRQHandler, /* 11: EXTI Line0 interrupt */
282 EXTI1_IRQHandler, /* 12: EXTI Line1 interrupt */
283 EXTI2_IRQHandler, /* 13: EXTI Line2 interrupt */
284 EXTI3_IRQHandler, /* 14: EXTI Line3 interrupt */
285 EXTI4_IRQHandler, /* 15: EXTI Line4 interrupt */
286 EXTI5_IRQHandler, /* 16: EXTI Line5 interrupt */
287 EXTI6_IRQHandler, /* 17: EXTI Line6 interrupt */
288 EXTI7_IRQHandler, /* 18: EXTI Line7 interrupt */
289 EXTI8_IRQHandler, /* 19: EXTI Line8 interrupt */
290 EXTI9_IRQHandler, /* 20: EXTI Line9 interrupt */
291 EXTI10_IRQHandler, /* 21: EXTI Line10 interrupt */
292 EXTI11_IRQHandler, /* 22: EXTI Line11 interrupt */
293 EXTI12_IRQHandler, /* 23: EXTI Line12 interrupt */
294 EXTI13_IRQHandler, /* 24: EXTI Line13 interrupt */
295 EXTI14_IRQHandler, /* 25: EXTI Line14 interrupt */
296 EXTI15_IRQHandler, /* 26: EXTI Line15 interrupt */
297 GPDMA1_Channel0_IRQHandler, /* 27: GPDMA1 Channel 0 global interrupt */
298 GPDMA1_Channel1_IRQHandler, /* 28: GPDMA1 Channel 1 global interrupt */
299 GPDMA1_Channel2_IRQHandler, /* 29: GPDMA1 Channel 2 global interrupt */
300 GPDMA1_Channel3_IRQHandler, /* 30: GPDMA1 Channel 3 global interrupt */
301 GPDMA1_Channel4_IRQHandler, /* 31: GPDMA1 Channel 4 global interrupt */
302 GPDMA1_Channel5_IRQHandler, /* 32: GPDMA1 Channel 5 global interrupt */
303 GPDMA1_Channel6_IRQHandler, /* 33: GPDMA1 Channel 6 global interrupt */
304 GPDMA1_Channel7_IRQHandler, /* 34: GPDMA1 Channel 7 global interrupt */
305 IWDG_IRQHandler, /* 35: IWDG global interrupt */
306 #ifdef STM32H573xx
307 SAES_IRQHandler, /* 36: SAES global interrupt */
308 #else
309 0, /* 36: Reserved */
310 #endif
311 ADC1_IRQHandler, /* 37: ADC1 global interrupt */
312 DAC1_IRQHandler, /* 38: DAC1 global interrupt */
313 FDCAN1_IT0_IRQHandler, /* 39: FDCAN1 Interrupt 0 */
314 FDCAN1_IT1_IRQHandler, /* 40: FDCAN1 Interrupt 1 */
315 TIM1_BRK_IRQHandler, /* 41: TIM1 Break interrupt */
316 TIM1_UP_IRQHandler, /* 42: TIM1 Update interrupt */
317 TIM1_TRG_COM_IRQHandler, /* 43: TIM1 Trigger and Commutation interrupt */
318 TIM1_CC_IRQHandler, /* 44: TIM1 Capture Compare interrupt */
319 TIM2_IRQHandler, /* 45: TIM2 global interrupt */
320 TIM3_IRQHandler, /* 46: TIM3 global interrupt */
321 #if defined(STM32H573xx) || defined (STM32H563xx)
322 TIM4_IRQHandler, /* 47: TIM4 global interrupt */
323 TIM5_IRQHandler, /* 48: TIM5 global interrupt */
324 #else
325 0, /* 47: Reserved */
326 0, /* 48: Reserved */
327 #endif
328 TIM6_IRQHandler, /* 49: TIM6 global interrupt */
329 TIM7_IRQHandler, /* 50: TIM7 global interrupt */
330 I2C1_EV_IRQHandler, /* 51: I2C1 event interrupt */
331 I2C1_ER_IRQHandler, /* 52: I2C1 error interrupt */
332 I2C2_EV_IRQHandler, /* 53: I2C2 event interrupt */
333 I2C2_ER_IRQHandler, /* 54: I2C2 error interrupt */
334 SPI1_IRQHandler, /* 55: SPI1 global interrupt */
335 SPI2_IRQHandler, /* 56: SPI2 global interrupt */
336 SPI3_IRQHandler, /* 57: SPI3 global interrupt */
337 USART1_IRQHandler, /* 58: USART1 global interrupt */
338 USART2_IRQHandler, /* 59: USART2 global interrupt */
339 USART3_IRQHandler, /* 60: USART3 global interrupt */
340 #if defined(STM32H573xx) || defined (STM32H563xx)
341 UART4_IRQHandler, /* 61: UART4 global interrupt */
342 UART5_IRQHandler, /* 62: UART5 global interrupt */
343 #else
344 0, /* 61: Reserved */
345 0, /* 62: Reserved */
346 #endif
347 LPUART1_IRQHandler, /* 63: LPUART1 global interrupt */
348 LPTIM1_IRQHandler, /* 64: LPTIM1 global interrupt */
349 #if defined(STM32H573xx) || defined (STM32H563xx)
350 TIM8_BRK_IRQHandler, /* 65: TIM8 Break interrupt */
351 TIM8_UP_IRQHandler, /* 66: TIM8 Update interrupt */
352 TIM8_TRG_COM_IRQHandler, /* 67: TIM8 Trigger and Commutation interrupt */
353 TIM8_CC_IRQHandler, /* 68: TIM8 Capture Compare interrupt */
354 ADC2_IRQHandler, /* 69: ADC2 global interrupt */
355 #else
356 0, /* 65: Reserved */
357 0, /* 66: Reserved */
358 0, /* 67: Reserved */
359 0, /* 68: Reserved */
360 0, /* 69: Reserved */
361 #endif
362 LPTIM2_IRQHandler, /* 70: LPTIM2 global interrupt */
363 #if defined(STM32H573xx) || defined (STM32H563xx)
364 TIM15_IRQHandler, /* 71: TIM15 global interrupt */
365 TIM16_IRQHandler, /* 72: TIM16 global interrupt */
366 TIM17_IRQHandler, /* 73: TIM17 global interrupt */
367 #else
368 0, /* 71: Reserved */
369 0, /* 72: Reserved */
370 0, /* 73: Reserved */
371 #endif
372 OTG_FS_IRQHandler, /* 74: USB OTG FS global interrupt */
373 CRS_IRQHandler, /* 75: CRS global interrupt */
374 #if defined(STM32H573xx) || defined (STM32H563xx)
375 UCPD1_IRQHandler, /* 76: UCPD1 global interrupt */
376 FMC_IRQHandler, /* 77: FMC global interrupt */
377 OCTOSPI1_IRQHandler, /* 78: OctoSPI1 global interrupt */
378 SDMMC1_IRQHandler, /* 79: SDMMC1 global interrupt */
379 I2C3_EV_IRQHandler, /* 80: I2C3 event interrupt */
380 I2C3_ER_IRQHandler, /* 81: I2C3 error interrupt */
381 SPI4_IRQHandler, /* 82: SPI4 global interrupt */
382 SPI5_IRQHandler, /* 83: SPI5 global interrupt */
383 SPI6_IRQHandler, /* 84: SPI6 global interrupt */
384 USART6_IRQHandler, /* 85: USART6 global interrupt */
385 USART10_IRQHandler, /* 86: USART10 global interrupt */
386 USART11_IRQHandler, /* 87: USART11 global interrupt */
387 SAI1_IRQHandler, /* 88: Serial Audio Interface 1 global interrupt */
388 SAI2_IRQHandler, /* 89: Serial Audio Interface 2 global interrupt */
389 #else
390 0, /* 76: Reserved */
391 0, /* 77: Reserved */
392 0, /* 78: Reserved */
393 0, /* 79: Reserved */
394 0, /* 80: Reserved */
395 0, /* 81: Reserved */
396 0, /* 82: Reserved */
397 0, /* 83: Reserved */
398 0, /* 84: Reserved */
399 0, /* 85: Reserved */
400 0, /* 86: Reserved */
401 0, /* 87: Reserved */
402 0, /* 88: Reserved */
403 0, /* 89: Reserved */
404 #endif
405 GPDMA2_Channel0_IRQHandler, /* 90: GPDMA2 Channel 0 global interrupt */
406 GPDMA2_Channel1_IRQHandler, /* 91: GPDMA2 Channel 1 global interrupt */
407 GPDMA2_Channel2_IRQHandler, /* 92: GPDMA2 Channel 2 global interrupt */
408 GPDMA2_Channel3_IRQHandler, /* 93: GPDMA2 Channel 3 global interrupt */
409 GPDMA2_Channel4_IRQHandler, /* 94: GPDMA2 Channel 4 global interrupt */
410 GPDMA2_Channel5_IRQHandler, /* 95: GPDMA2 Channel 5 global interrupt */
411 GPDMA2_Channel6_IRQHandler, /* 96: GPDMA2 Channel 6 global interrupt */
412 GPDMA2_Channel7_IRQHandler, /* 97: GPDMA2 Channel 7 global interrupt */
413 #if defined(STM32H573xx) || defined (STM32H563xx)
414 UART7_IRQHandler, /* 98: UART7 global interrupt */
415 UART8_IRQHandler, /* 99: UART8 global interrupt */
416 UART9_IRQHandler, /* 100: UART9 global interrupt */
417 UART12_IRQHandler, /* 101: UART12 global interrupt */
418 SDMMC2_IRQHandler, /* 102: SDMMC2 global interrupt */
419 #else
420 COMP1_IRQHandler, /* 98: COMP1 global interrupt */
421 0, /* 99: Reserved */
422 I3C2_EV_IRQHandler, /* 100: I2C3 event interrupt */
423 I3C2_ER_IRQHandler, /* 101: I2C3 error interrupt */
424 0, /* 102: Reserved */
425 #endif
426 FPU_IRQHandler, /* 103: FPU global interrupt */
427 ICACHE_IRQHandler, /* 104: Instruction cache global interrupt */
428 #if defined(STM32H573xx) || defined (STM32H563xx)
429 DCACHE_IRQHandler, /* 105: Data cache global interrupt */
430 ETH_IRQHandler, /* 106: Ethernet global interrupt */
431 ETH_WKUP_IRQHandler, /* 107: Ethernet Wakeup global interrupt */
432 DCMI_PSSI_IRQHandler, /* 108: DCMI PSSI global interrupt */
433 FDCAN2_IT0_IRQHandler, /* 109: FDCAN2 Interrupt 0 */
434 FDCAN2_IT1_IRQHandler, /* 110: FDCAN2 Interrupt 1 */
435 CORDIC_IRQHandler, /* 111: CORDIC global interrupt */
436 FMAC_IRQHandler, /* 112: FMAC global interrupt */
437 #else
438 0, /* 105: Reserved */
439 0, /* 106: Reserved */
440 0, /* 107: Reserved */
441 0, /* 108: Reserved */
442 0, /* 109: Reserved */
443 0, /* 110: Reserved */
444 0, /* 111: Reserved */
445 0, /* 112: Reserved */
446 #endif
447 DTS_IRQHandler, /* 113: DTS global interrupt */
448 RNG_IRQHandler, /* 114: RNG global interrupt */
449 #ifdef STM32H573xx
450 OTFDEC1_IRQHandler, /* 115: OTFDEC1 global interrupt */
451 AES_IRQHandler, /* 116: AES global interrupt */
452 #else
453 0, /* 115: Reserved */
454 0, /* 116: Reserved */
455 #endif
456 HASH_IRQHandler, /* 117: HASH global interrupt */
457 #ifdef STM32H573xx
458 PKA_IRQHandler, /* 118: PKA global interrupt */
459 #else
460 0, /* 118: Reserved */
461 #endif
462 #if defined(STM32H573xx) || defined (STM32H563xx)
463 CEC_IRQHandler, /* 119: CEC global interrupt */
464 TIM12_IRQHandler, /* 120: TIM12 global interrupt */
465 TIM13_IRQHandler, /* 121: TIM13 global interrupt */
466 TIM14_IRQHandler, /* 122: TIM14 global interrupt */
467 #else
468 0, /* 119: Reserved */
469 0, /* 120: Reserved */
470 0, /* 121: Reserved */
471 0, /* 122: Reserved */
472 #endif
473 I3C1_EV_IRQHandler, /* 123: I3C1 event interrupt */
474 I3C1_ER_IRQHandler, /* 124: I3C1 error interrupt */
475 #if defined(STM32H573xx) || defined (STM32H563xx)
476 I2C4_EV_IRQHandler, /* 125: I2C4 event interrupt */
477 I2C4_ER_IRQHandler, /* 126: I2C4 error interrupt */
478 LPTIM3_IRQHandler, /* 127: LPTIM3 global interrupt */
479 LPTIM4_IRQHandler, /* 128: LPTIM4 global interrupt */
480 LPTIM5_IRQHandler, /* 129: LPTIM5 global interrupt */
481 LPTIM6_IRQHandler, /* 130: LPTIM6 global interrupt */
482 #else
483 0, /* 125: Reserved */
484 0, /* 126: Reserved */
485 0, /* 127: Reserved */
486 0, /* 128: Reserved */
487 0, /* 129: Reserved */
488 0, /* 130: Reserved */
489 #endif
490 };
491
492 #if defined ( __GNUC__ )
493 #pragma GCC diagnostic pop
494 #endif
495
496 /*----------------------------------------------------------------------------
497 Reset Handler called on controller reset
498 *----------------------------------------------------------------------------*/
Reset_Handler(void)499 void Reset_Handler(void)
500 {
501 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
502 __IO uint32_t tmp;
503
504 #endif
505 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
506 /* disable IRQ is removed */
507 /*__disable_irq();*/
508 /* Tamp IRQ prio is set to highest , and IRQ is enabled */
509 NVIC_SetPriority(TAMP_IRQn, 0);
510 NVIC_EnableIRQ(TAMP_IRQn);
511 #endif
512 __set_MSPLIM((uint32_t)(&__STACK_LIMIT));
513 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
514 SCB->VTOR = (uint32_t) &__VECTOR_TABLE[0];
515 /* Lock Secure Vector Table */
516 /* Enable SBS interface clock */
517 RCC->APB3ENR |= RCC_APB3ENR_SBSEN;
518 /* Delay after an RCC peripheral clock enabling */
519 tmp = RCC->APB3ENR;
520 (void)tmp;
521 SBS->CSLCKR |= SBS_CSLCKR_LOCKSVTAIRCR;
522 #endif
523 /* CMSIS System Initialization */
524 SystemInit();
525 __PROGRAM_START(); /* Enter PreMain (C library entry point) */
526 }
527