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 "stm32u5xx.h"
25
26 /*----------------------------------------------------------------------------
27 External References
28 *----------------------------------------------------------------------------*/
29 extern uint32_t __INITIAL_SP;
30 extern uint32_t __STACK_LIMIT;
31
32 extern __NO_RETURN void __PROGRAM_START(void);
33
34 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
35 extern void Error_Handler(void);
36 #endif
37
38 /*----------------------------------------------------------------------------
39 Internal References
40 *----------------------------------------------------------------------------*/
41 __NO_RETURN void Reset_Handler (void);
42
43 /*----------------------------------------------------------------------------
44 Exception / Interrupt Handler
45 *----------------------------------------------------------------------------*/
46 #define DEFAULT_IRQ_HANDLER(handler_name) \
47 __NO_RETURN void __WEAK handler_name(void); \
48 void handler_name(void) { \
49 while(1); \
50 }
51
52 /* Exceptions */
53 DEFAULT_IRQ_HANDLER(NMI_Handler)
54 DEFAULT_IRQ_HANDLER(HardFault_Handler)
55 DEFAULT_IRQ_HANDLER(MemManage_Handler)
56 DEFAULT_IRQ_HANDLER(BusFault_Handler)
57 DEFAULT_IRQ_HANDLER(UsageFault_Handler)
58 DEFAULT_IRQ_HANDLER(SecureFault_Handler)
59 DEFAULT_IRQ_HANDLER(SVC_Handler)
60 DEFAULT_IRQ_HANDLER(DebugMon_Handler)
61 DEFAULT_IRQ_HANDLER(PendSV_Handler)
62 DEFAULT_IRQ_HANDLER(SysTick_Handler)
63
64 DEFAULT_IRQ_HANDLER(WWDG_IRQHandler)
65 DEFAULT_IRQ_HANDLER(PVD_AVD_IRQHandler)
66 DEFAULT_IRQ_HANDLER(RTC_IRQHandler)
67 DEFAULT_IRQ_HANDLER(RTC_IRQHandler_S)
68 DEFAULT_IRQ_HANDLER(TAMP_IRQHandler)
69 DEFAULT_IRQ_HANDLER(RAMCFG_IRQHandler)
70 DEFAULT_IRQ_HANDLER(FLASH_IRQHandler)
71 DEFAULT_IRQ_HANDLER(FLASH_IRQHandler_S)
72 DEFAULT_IRQ_HANDLER(GTZC_IRQHandler)
73 DEFAULT_IRQ_HANDLER(RCC_IRQHandler)
74 DEFAULT_IRQ_HANDLER(RCC_IRQHandler_S)
75 DEFAULT_IRQ_HANDLER(EXTI0_IRQHandler)
76 DEFAULT_IRQ_HANDLER(EXTI1_IRQHandler)
77 DEFAULT_IRQ_HANDLER(EXTI2_IRQHandler)
78 DEFAULT_IRQ_HANDLER(EXTI3_IRQHandler)
79 DEFAULT_IRQ_HANDLER(EXTI4_IRQHandler)
80 DEFAULT_IRQ_HANDLER(EXTI5_IRQHandler)
81 DEFAULT_IRQ_HANDLER(EXTI6_IRQHandler)
82 DEFAULT_IRQ_HANDLER(EXTI7_IRQHandler)
83 DEFAULT_IRQ_HANDLER(EXTI8_IRQHandler)
84 DEFAULT_IRQ_HANDLER(EXTI9_IRQHandler)
85 DEFAULT_IRQ_HANDLER(EXTI10_IRQHandler)
86 DEFAULT_IRQ_HANDLER(EXTI11_IRQHandler)
87 DEFAULT_IRQ_HANDLER(EXTI12_IRQHandler)
88 DEFAULT_IRQ_HANDLER(EXTI13_IRQHandler)
89 DEFAULT_IRQ_HANDLER(EXTI14_IRQHandler)
90 DEFAULT_IRQ_HANDLER(EXTI15_IRQHandler)
91 DEFAULT_IRQ_HANDLER(IWDG_IRQHandler)
92 #ifdef STM32U585xx
93 DEFAULT_IRQ_HANDLER(SAES_IRQHandler)
94 #endif
95 DEFAULT_IRQ_HANDLER(GPDMA1_Channel0_IRQHandler)
96 DEFAULT_IRQ_HANDLER(GPDMA1_Channel1_IRQHandler)
97 DEFAULT_IRQ_HANDLER(GPDMA1_Channel2_IRQHandler)
98 DEFAULT_IRQ_HANDLER(GPDMA1_Channel3_IRQHandler)
99 DEFAULT_IRQ_HANDLER(GPDMA1_Channel4_IRQHandler)
100 DEFAULT_IRQ_HANDLER(GPDMA1_Channel5_IRQHandler)
101 DEFAULT_IRQ_HANDLER(GPDMA1_Channel6_IRQHandler)
102 DEFAULT_IRQ_HANDLER(GPDMA1_Channel7_IRQHandler)
103 DEFAULT_IRQ_HANDLER(ADC1_IRQHandler)
104 DEFAULT_IRQ_HANDLER(DAC1_IRQHandler)
105 DEFAULT_IRQ_HANDLER(FDCAN1_IT0_IRQHandler)
106 DEFAULT_IRQ_HANDLER(FDCAN1_IT1_IRQHandler)
107 DEFAULT_IRQ_HANDLER(TIM1_BRK_IRQHandler)
108 DEFAULT_IRQ_HANDLER(TIM1_UP_IRQHandler)
109 DEFAULT_IRQ_HANDLER(TIM1_TRG_COM_IRQHandler)
110 DEFAULT_IRQ_HANDLER(TIM1_CC_IRQHandler)
111 DEFAULT_IRQ_HANDLER(TIM2_IRQHandler)
112 DEFAULT_IRQ_HANDLER(TIM3_IRQHandler)
113 DEFAULT_IRQ_HANDLER(TIM4_IRQHandler)
114 DEFAULT_IRQ_HANDLER(TIM5_IRQHandler)
115 DEFAULT_IRQ_HANDLER(TIM6_IRQHandler)
116 DEFAULT_IRQ_HANDLER(TIM7_IRQHandler)
117 DEFAULT_IRQ_HANDLER(TIM8_BRK_IRQHandler)
118 DEFAULT_IRQ_HANDLER(TIM8_UP_IRQHandler)
119 DEFAULT_IRQ_HANDLER(TIM8_TRG_COM_IRQHandler)
120 DEFAULT_IRQ_HANDLER(TIM8_CC_IRQHandler)
121 DEFAULT_IRQ_HANDLER(I2C1_EV_IRQHandler)
122 DEFAULT_IRQ_HANDLER(I2C1_ER_IRQHandler)
123 DEFAULT_IRQ_HANDLER(I2C2_EV_IRQHandler)
124 DEFAULT_IRQ_HANDLER(I2C2_ER_IRQHandler)
125 DEFAULT_IRQ_HANDLER(SPI1_IRQHandler)
126 DEFAULT_IRQ_HANDLER(SPI2_IRQHandler)
127 DEFAULT_IRQ_HANDLER(USART1_IRQHandler)
128 DEFAULT_IRQ_HANDLER(USART2_IRQHandler)
129 DEFAULT_IRQ_HANDLER(USART3_IRQHandler)
130 DEFAULT_IRQ_HANDLER(UART4_IRQHandler)
131 DEFAULT_IRQ_HANDLER(UART5_IRQHandler)
132 DEFAULT_IRQ_HANDLER(LPUART1_IRQHandler)
133 DEFAULT_IRQ_HANDLER(LPTIM1_IRQHandler)
134 DEFAULT_IRQ_HANDLER(LPTIM2_IRQHandler)
135 DEFAULT_IRQ_HANDLER(TIM15_IRQHandler)
136 DEFAULT_IRQ_HANDLER(TIM16_IRQHandler)
137 DEFAULT_IRQ_HANDLER(TIM17_IRQHandler)
138 DEFAULT_IRQ_HANDLER(COMP_IRQHandler)
139 DEFAULT_IRQ_HANDLER(OTG_FS_IRQHandler)
140 DEFAULT_IRQ_HANDLER(CRS_IRQHandler)
141 DEFAULT_IRQ_HANDLER(FMC_IRQHandler)
142 DEFAULT_IRQ_HANDLER(OCTOSPI1_IRQHandler)
143 DEFAULT_IRQ_HANDLER(PWR_S3WU_IRQHandler)
144 DEFAULT_IRQ_HANDLER(SDMMC1_IRQHandler)
145 DEFAULT_IRQ_HANDLER(SDMMC2_IRQHandler)
146
147 DEFAULT_IRQ_HANDLER(DMA2_Channel1_IRQHandler)
148 DEFAULT_IRQ_HANDLER(GPDMA1_Channel8_IRQHandler)
149 DEFAULT_IRQ_HANDLER(GPDMA1_Channel9_IRQHandler)
150 DEFAULT_IRQ_HANDLER(GPDMA1_Channel10_IRQHandler)
151 DEFAULT_IRQ_HANDLER(GPDMA1_Channel11_IRQHandler)
152 DEFAULT_IRQ_HANDLER(GPDMA1_Channel12_IRQHandler)
153 DEFAULT_IRQ_HANDLER(GPDMA1_Channel13_IRQHandler)
154 DEFAULT_IRQ_HANDLER(GPDMA1_Channel14_IRQHandler)
155 DEFAULT_IRQ_HANDLER(GPDMA1_Channel15_IRQHandler)
156 DEFAULT_IRQ_HANDLER(I2C3_EV_IRQHandler)
157 DEFAULT_IRQ_HANDLER(I2C3_ER_IRQHandler)
158 DEFAULT_IRQ_HANDLER(SAI1_IRQHandler)
159 DEFAULT_IRQ_HANDLER(SAI2_IRQHandler)
160 DEFAULT_IRQ_HANDLER(TSC_IRQHandler)
161 #ifdef STM32U585xx
162 DEFAULT_IRQ_HANDLER(AES_IRQHandler)
163 #endif
164 DEFAULT_IRQ_HANDLER(RNG_IRQHandler)
165 DEFAULT_IRQ_HANDLER(FPU_IRQHandler)
166 DEFAULT_IRQ_HANDLER(HASH_IRQHandler)
167 #ifdef STM32U585xx
168 DEFAULT_IRQ_HANDLER(PKA_IRQHandler)
169 #endif
170 DEFAULT_IRQ_HANDLER(LPTIM3_IRQHandler)
171 DEFAULT_IRQ_HANDLER(SPI3_IRQHandler)
172 DEFAULT_IRQ_HANDLER(I2C4_ER_IRQHandler)
173 DEFAULT_IRQ_HANDLER(I2C4_EV_IRQHandler)
174 DEFAULT_IRQ_HANDLER(MDF1_FLT0_IRQHandler)
175 DEFAULT_IRQ_HANDLER(MDF1_FLT1_IRQHandler)
176 DEFAULT_IRQ_HANDLER(MDF1_FLT2_IRQHandler)
177 DEFAULT_IRQ_HANDLER(MDF1_FLT3_IRQHandler)
178 DEFAULT_IRQ_HANDLER(UCPD1_IRQHandler)
179 DEFAULT_IRQ_HANDLER(ICACHE_IRQHandler)
180 #ifdef STM32U585xx
181 DEFAULT_IRQ_HANDLER(OTFDEC1_IRQHandler)
182 DEFAULT_IRQ_HANDLER(OTFDEC2_IRQHandler)
183 #endif
184 DEFAULT_IRQ_HANDLER(LPTIM4_IRQHandler)
185 DEFAULT_IRQ_HANDLER(DCACHE1_IRQHandler)
186 DEFAULT_IRQ_HANDLER(ADF1_IRQHandler)
187 DEFAULT_IRQ_HANDLER(ADC4_IRQHandler)
188 DEFAULT_IRQ_HANDLER(LPDMA1_Channel0_IRQHandler)
189 DEFAULT_IRQ_HANDLER(LPDMA1_Channel1_IRQHandler)
190 DEFAULT_IRQ_HANDLER(LPDMA1_Channel2_IRQHandler)
191 DEFAULT_IRQ_HANDLER(LPDMA1_Channel3_IRQHandler)
192 DEFAULT_IRQ_HANDLER(DMA2D_IRQHandler)
193 DEFAULT_IRQ_HANDLER(DCMI_PSSI_IRQHandler)
194 DEFAULT_IRQ_HANDLER(OCTOSPI2_IRQHandler)
195 DEFAULT_IRQ_HANDLER(MDF1_FLT4_IRQHandler)
196 DEFAULT_IRQ_HANDLER(MDF1_FLT5_IRQHandler)
197 DEFAULT_IRQ_HANDLER(CORDIC_IRQHandler)
198 DEFAULT_IRQ_HANDLER(FMAC_IRQHandler)
199
200 /*----------------------------------------------------------------------------
201 Exception / Interrupt Vector table
202 *----------------------------------------------------------------------------*/
203
204 #if defined ( __GNUC__ )
205 #pragma GCC diagnostic push
206 #pragma GCC diagnostic ignored "-Wpedantic"
207 #endif
208
209 extern const VECTOR_TABLE_Type __VECTOR_TABLE[];
210 const VECTOR_TABLE_Type __VECTOR_TABLE[] __VECTOR_TABLE_ATTRIBUTE = {
211 (VECTOR_TABLE_Type)(&__INITIAL_SP),/* Initial Stack Pointer */
212 Reset_Handler, /* Reset Handler */
213 NMI_Handler, /* -14: NMI Handler */
214 Error_Handler, /* -13: Hard Fault Handler */
215 Error_Handler, /* -12: MPU Fault Handler */
216 Error_Handler, /* -11: Bus Fault Handler */
217 Error_Handler, /* -10: Usage Fault Handler */
218 Error_Handler, /* -9: Secure Fault Handler */
219 0, /* Reserved */
220 0, /* Reserved */
221 0, /* Reserved */
222 SVC_Handler, /* -5: SVCall Handler */
223 DebugMon_Handler, /* -4: Debug Monitor Handler */
224 0, /* Reserved */
225 PendSV_Handler, /* -2: PendSV Handler */
226 SysTick_Handler, /* -1: SysTick Handler */
227 WWDG_IRQHandler, /* 0: Window WatchDog */
228 PVD_AVD_IRQHandler, /* 1: PVD/AVD through EXTI Line detection Interrupt */
229 RTC_IRQHandler, /* 2: RTC non-secure interrupt */
230 RTC_IRQHandler_S, /* 3: RTC secure interrupt */
231 TAMP_IRQHandler, /* 4: Tamper non-secure interrupt */
232 RAMCFG_IRQHandler, /* 5: RAMCFG global */
233 FLASH_IRQHandler, /* 6: FLASH non-secure global interrupt */
234 FLASH_IRQHandler_S, /* 7: FLASH secure global interrupt */
235 GTZC_IRQHandler, /* 8: Global TrustZone Controller interrupt */
236 RCC_IRQHandler, /* 9: RRCC non-secure global interrupts */
237 RCC_IRQHandler_S, /* 10: RRCC secure global interrupts */
238 EXTI0_IRQHandler, /* 11: REXTI Line0 */
239 EXTI1_IRQHandler, /* 12: REXTI Line1 */
240 EXTI2_IRQHandler, /* 13: REXTI Line2 */
241 EXTI3_IRQHandler, /* 14: REXTI Line3 */
242 EXTI4_IRQHandler, /* 15: REXTI Line4 */
243 EXTI5_IRQHandler, /* 16: REXTI Line5 */
244 EXTI6_IRQHandler, /* 17: REXTI Line6 */
245 EXTI7_IRQHandler, /* 18: REXTI Line7 */
246 EXTI8_IRQHandler, /* 19: REXTI Line8 */
247 EXTI9_IRQHandler, /* 20: REXTI Line9 */
248 EXTI10_IRQHandler, /* 21: EXTI Line10 */
249 EXTI11_IRQHandler, /* 22: EXTI Line11 */
250 EXTI12_IRQHandler, /* 23: EXTI Line12 */
251 EXTI13_IRQHandler, /* 24: EXTI Line13 */
252 EXTI14_IRQHandler, /* 25: EXTI Line14 */
253 EXTI15_IRQHandler, /* 26: EXTI Line15 */
254 IWDG_IRQHandler, /* 27: IWDG global interrupt */
255 #ifdef STM32U585xx
256 SAES_IRQHandler, /* 28:Secure AES global interrupt */
257 #else
258 0, /* 28: Reserved */
259 #endif
260 GPDMA1_Channel0_IRQHandler, /* 29: GPDMA1 Channel 0 global interrupt */
261 GPDMA1_Channel1_IRQHandler, /* 30: GPDMA1 Channel 1 global interrupt */
262 GPDMA1_Channel2_IRQHandler, /* 31: GPDMA1 Channel 2 global interrupt */
263 GPDMA1_Channel3_IRQHandler, /* 32: GPDMA1 Channel 3 global interrupt */
264 GPDMA1_Channel4_IRQHandler, /* 33: GPDMA1 Channel 4 global interrupt */
265 GPDMA1_Channel5_IRQHandler, /* 34: GPDMA1 Channel 5 global interrupt */
266 GPDMA1_Channel6_IRQHandler, /* 35: GPDMA1 Channel 6 global interrupt */
267 GPDMA1_Channel7_IRQHandler, /* 36: GPDMA1 Channel 7 global interrupt */
268 ADC1_IRQHandler, /* 37: ADC1 global interrupt */
269 DAC1_IRQHandler, /* 38: DAC1 global interrupt */
270 FDCAN1_IT0_IRQHandler, /* 39: FDCAN1 Interrupt 0 */
271 FDCAN1_IT1_IRQHandler, /* 40: FDCAN1 Interrupt 1 */
272 TIM1_BRK_IRQHandler, /* 41: TIM1 Break */
273 TIM1_UP_IRQHandler, /* 42: TIM1 Update */
274 TIM1_TRG_COM_IRQHandler, /* 43: TIM1 Trigger and Commutation */
275 TIM1_CC_IRQHandler, /* 44: TIM1 Capture Compare */
276 TIM2_IRQHandler, /* 45: TIM2 */
277 TIM3_IRQHandler, /* 46: TIM3 */
278 TIM4_IRQHandler, /* 47: TIM4 */
279 TIM5_IRQHandler, /* 48: TIM5 */
280 TIM6_IRQHandler, /* 49: TIM6 */
281 TIM7_IRQHandler, /* 50: TIM7 */
282 TIM8_BRK_IRQHandler, /* 51: TIM8 Break */
283 TIM8_UP_IRQHandler, /* 52: TIM8 Update */
284 TIM8_TRG_COM_IRQHandler, /* 53: TIM8 Trigger and Commutation */
285 TIM8_CC_IRQHandler, /* 54: TIM8 Capture Compare */
286 I2C1_EV_IRQHandler, /* 55: I2C1 Event */
287 I2C1_ER_IRQHandler, /* 56: I2C1 Error */
288 I2C2_EV_IRQHandler, /* 57: I2C2 Event */
289 I2C2_ER_IRQHandler, /* 58: I2C2 Error */
290 SPI1_IRQHandler, /* 59: SPI1 */
291 SPI2_IRQHandler, /* 60: SPI2 */
292 USART1_IRQHandler, /* 61: USART1 */
293 USART2_IRQHandler, /* 62: USART2 */
294 USART3_IRQHandler, /* 63: USART3 */
295 UART4_IRQHandler, /* 64: UART4 */
296 UART5_IRQHandler, /* 65: UART5 */
297 LPUART1_IRQHandler, /* 66: LP UART1 */
298 LPTIM1_IRQHandler, /* 67: LP TIM1 */
299 LPTIM2_IRQHandler, /* 68: LP TIM2 */
300 TIM15_IRQHandler, /* 69: TIM15 */
301 TIM16_IRQHandler, /* 70: TIM16 */
302 TIM17_IRQHandler, /* 71: TIM17 */
303 COMP_IRQHandler, /* 72: COMP1&2 */
304 OTG_FS_IRQHandler, /* 73: USB OTG FS global interrupt */
305 CRS_IRQHandler, /* 74: CRS */
306 FMC_IRQHandler, /* 75: FMC */
307 OCTOSPI1_IRQHandler, /* 76: OctoSPI1 global interrupt */
308 PWR_S3WU_IRQHandler, /* 77: PWR wake up from Stop3 interrupt */
309 SDMMC1_IRQHandler, /* 78: SDMMC1 global interrupt */
310 SDMMC2_IRQHandler, /* 79: SDMMC2 global interrupt*/
311 GPDMA1_Channel8_IRQHandler, /* 80: GPDMA1 Channel 8 global interrupt*/
312 GPDMA1_Channel9_IRQHandler, /* 81: GPDMA1 Channel 9 global interrupt*/
313 GPDMA1_Channel10_IRQHandler, /* 82: GPDMA1 Channel 10 global interrupt*/
314 GPDMA1_Channel11_IRQHandler, /* 83: GPDMA1 Channel 11 global interrupt*/
315 GPDMA1_Channel12_IRQHandler, /* 84: GPDMA1 Channel 12 global interrupt*/
316 GPDMA1_Channel13_IRQHandler, /* 85: GPDMA1 Channel 13 global interrupt*/
317 GPDMA1_Channel14_IRQHandler, /* 86: GPDMA1 Channel 14 global interrupt*/
318 GPDMA1_Channel15_IRQHandler, /* 87: GPDMA1 Channel 15 global interrupt*/
319 I2C3_EV_IRQHandler, /* 88: I2C3 event */
320 I2C3_ER_IRQHandler, /* 89: I2C3 error */
321 SAI1_IRQHandler, /* 90: Serial Audio Interface 1 global interrupt */
322 SAI2_IRQHandler, /* 91: Serial Audio Interface 2 global interrupt */
323 TSC_IRQHandler, /* 92: Touch Sense Controller global interrupt */
324 #ifdef STM32U585xx
325 AES_IRQHandler, /* 93: AES global interrupt */
326 #else
327 0, /* 93: Reserved */
328 #endif
329 RNG_IRQHandler, /* 94: RNG global interrupt */
330 FPU_IRQHandler, /* 95: FPU */
331 HASH_IRQHandler, /* 96: HASH global interrupt */
332 #ifdef STM32U585xx
333 PKA_IRQHandler, /* 97: PKA global interrupt */
334 #else
335 0, /* 97: Reserved */
336 #endif
337 LPTIM3_IRQHandler, /* 98: LP TIM3 */
338 SPI3_IRQHandler, /* 99: SPI3 */
339 I2C4_ER_IRQHandler, /* 100: I2C4 error */
340 I2C4_EV_IRQHandler, /* 101: I2C4 event */
341 MDF1_FLT0_IRQHandler, /* 102: MDF1 Filter 0 global interrupt */
342 MDF1_FLT1_IRQHandler, /* 103: MDF1 Filter 1 global interrupt */
343 MDF1_FLT2_IRQHandler, /* 104: MDF1 Filter 2 global interrupt */
344 MDF1_FLT3_IRQHandler, /* 105: MDF1 Filter 3 global interrupt */
345 UCPD1_IRQHandler, /* 106: UCPD1 global interrupt */
346 ICACHE_IRQHandler, /* 107: Instruction cache global interrupt*/
347 #ifdef STM32U585xx
348 OTFDEC1_IRQHandler, /* 108: OTFDEC1 global interrupt */
349 OTFDEC2_IRQHandler, /* 108: OTFDEC2 global interrupt */
350 #else
351 0, /* 108: Reserved */
352 0, /* 109: Reserved */
353 #endif
354 LPTIM4_IRQHandler, /* 110: LPTIM4 global interrupt */
355 DCACHE1_IRQHandler, /* 111: Data cache global interrupt */
356 ADF1_IRQHandler, /* 112: ADF interrupt */
357 ADC4_IRQHandler, /* 113: ADC4 (12bits) global interrupt */
358 LPDMA1_Channel0_IRQHandler, /* 114: LPDMA1 SmartRun Channel 0 global interrupt */
359 LPDMA1_Channel1_IRQHandler, /* 115: LPDMA1 SmartRun Channel 0 global interrupt */
360 LPDMA1_Channel2_IRQHandler, /* 116: LPDMA1 SmartRun Channel 0 global interrupt */
361 LPDMA1_Channel3_IRQHandler, /* 117: LPDMA1 SmartRun Channel 0 global interrupt */
362 DMA2D_IRQHandler, /* 118: DMA2D global interrupt */
363 DCMI_PSSI_IRQHandler, /* 119: DCMI/PSSI global interrupt */
364 OCTOSPI2_IRQHandler, /* 120: OCTOSPI2 global interrupt */
365 MDF1_FLT4_IRQHandler, /* 121: MDF1 Filter 4 global interrupt */
366 MDF1_FLT5_IRQHandler, /* 122: MDF1 Filter 5 global interrupt */
367 CORDIC_IRQHandler, /* 123: CORDIC global interrupt */
368 FMAC_IRQHandler, /* 124: FMAC global interrupt */
369 };
370
371 #if defined ( __GNUC__ )
372 #pragma GCC diagnostic pop
373 #endif
374
375 #if 1
376 #ifdef __ICCARM__
377 __no_init volatile uint32_t TamperEventCleared;
378 #else
379 volatile uint32_t TamperEventCleared __attribute__((section(".bss.NoInit")));
380 #endif /* __ICCARM__ */
381 #endif /* TFM_DEV_MODE */
382 /*----------------------------------------------------------------------------
383 Reset Handler called on controller reset
384 *----------------------------------------------------------------------------*/
Reset_Handler(void)385 void Reset_Handler(void)
386 {
387 __set_PSP((uint32_t)(&__INITIAL_SP));
388
389 __set_MSPLIM((uint32_t)(&__STACK_LIMIT));
390 __set_PSPLIM((uint32_t)(&__STACK_LIMIT));
391
392 SystemInit(); /* CMSIS System Initialization */
393 /* active access to tamper register */
394 __HAL_RCC_PWR_CLK_ENABLE();
395
396 HAL_PWR_EnableBkUpAccess();
397
398 __HAL_RCC_RTC_ENABLE();
399
400 __HAL_RCC_RTCAPB_CLK_ENABLE();
401 /* Get tamper status */
402 if (READ_REG(TAMP->SR))
403 {
404 #if 1
405 /* avoid several re-boot in DEV_MODE with Tamper active, clean tamper configuration*/
406 __HAL_RCC_BACKUPRESET_FORCE();
407 __HAL_RCC_BACKUPRESET_RELEASE();
408 /* wait for event being cleared*/
409 while(READ_REG(TAMP->SR));
410 /* memorize for log that event has been cleared */
411 TamperEventCleared=1;
412 #else
413 /* VBAT and VDD must be set to zero to allow board to restart */
414 Error_Handler();
415 #endif /* TFM_DEV_MODE */
416 }
417 #if 0
418 /* Enable TAMP IRQ , to catch tamper interrupt in TAMP_IRQHandler */
419 /* else a stack in SRAM2 is cleaned a HardFault can occur, at every pop of
420 * function */
421 HAL_NVIC_EnableIRQ(TAMP_IRQn);
422 #endif
423 __PROGRAM_START(); /* Enter PreMain (C library entry point) */
424 }
425