1/** 2 ****************************************************************************** 3 * @file startup_stm32wb55xx_cm4.s 4 * @author MCD Application Team 5 * @brief STM32WB55xx devices vector table GCC toolchain. 6 * This module performs: 7 * - Set the initial SP 8 * - Set the initial PC == Reset_Handler, 9 * - Set the vector table entries with the exceptions ISR address 10 * - Branches to main in the C library (which eventually 11 * calls main()). 12 * After Reset the Cortex-M4 processor is in Thread mode, 13 * priority is Privileged, and the Stack is set to Main. 14 ****************************************************************************** 15 * @attention 16 * 17 * <h2><center>© Copyright (c) 2019 STMicroelectronics. 18 * All rights reserved.</center></h2> 19 * 20 * This software component is licensed by ST under BSD 3-Clause license, 21 * the "License"; You may not use this file except in compliance with the 22 * License. You may obtain a copy of the License at: 23 * opensource.org/licenses/BSD-3-Clause 24 * 25 ****************************************************************************** 26 */ 27 28 .syntax unified 29 .cpu cortex-m4 30 .fpu softvfp 31 .thumb 32 33.global g_pfnVectors 34.global Default_Handler 35 36/* start address for the initialization values of the .data section. 37defined in linker script */ 38.word _sidata 39/* start address for the .data section. defined in linker script */ 40.word _sdata 41/* end address for the .data section. defined in linker script */ 42.word _edata 43/* start address for the .bss section. defined in linker script */ 44.word _sbss 45/* end address for the .bss section. defined in linker script */ 46.word _ebss 47 48 .section .text.Reset_Handler 49 .weak Reset_Handler 50 .type Reset_Handler, %function 51Reset_Handler: 52 ldr r0, =_estack 53 mov sp, r0 /* set stack pointer */ 54 55/* Copy the data segment initializers from flash to SRAM */ 56 ldr r0, =_sdata 57 ldr r1, =_edata 58 ldr r2, =_sidata 59 movs r3, #0 60 b LoopCopyDataInit 61 62CopyDataInit: 63 ldr r4, [r2, r3] 64 str r4, [r0, r3] 65 adds r3, r3, #4 66 67LoopCopyDataInit: 68 adds r4, r0, r3 69 cmp r4, r1 70 bcc CopyDataInit 71 72/* Zero fill the bss segment. */ 73 ldr r2, =_sbss 74 ldr r4, =_ebss 75 movs r3, #0 76 b LoopFillZerobss 77 78FillZerobss: 79 str r3, [r2] 80 adds r2, r2, #4 81 82LoopFillZerobss: 83 cmp r2, r4 84 bcc FillZerobss 85 86/* Call the clock system intitialization function.*/ 87 bl SystemInit 88/* Call static constructors */ 89 bl __libc_init_array 90/* Call the application s entry point.*/ 91 bl main 92 93LoopForever: 94 b LoopForever 95 96.size Reset_Handler, .-Reset_Handler 97 98/** 99 * @brief This is the code that gets called when the processor receives an 100 * unexpected interrupt. This simply enters an infinite loop, preserving 101 * the system state for examination by a debugger. 102 * 103 * @param None 104 * @retval None 105*/ 106 .section .text.Default_Handler,"ax",%progbits 107Default_Handler: 108Infinite_Loop: 109 b Infinite_Loop 110 .size Default_Handler, .-Default_Handler 111/****************************************************************************** 112* 113* The minimal vector table for a Cortex-M4. Note that the proper constructs 114* must be placed on this to ensure that it ends up at physical address 115* 0x0000.0000. 116* 117******************************************************************************/ 118 .section .isr_vector,"a",%progbits 119 .type g_pfnVectors, %object 120 .size g_pfnVectors, .-g_pfnVectors 121 122 123g_pfnVectors: 124 .word _estack 125 .word Reset_Handler 126 .word NMI_Handler 127 .word HardFault_Handler 128 .word MemManage_Handler 129 .word BusFault_Handler 130 .word UsageFault_Handler 131 .word 0 132 .word 0 133 .word 0 134 .word 0 135 .word SVC_Handler 136 .word DebugMon_Handler 137 .word 0 138 .word PendSV_Handler 139 .word SysTick_Handler 140 .word WWDG_IRQHandler 141 .word PVD_PVM_IRQHandler 142 .word TAMP_STAMP_LSECSS_IRQHandler 143 .word RTC_WKUP_IRQHandler 144 .word FLASH_IRQHandler 145 .word RCC_IRQHandler 146 .word EXTI0_IRQHandler 147 .word EXTI1_IRQHandler 148 .word EXTI2_IRQHandler 149 .word EXTI3_IRQHandler 150 .word EXTI4_IRQHandler 151 .word DMA1_Channel1_IRQHandler 152 .word DMA1_Channel2_IRQHandler 153 .word DMA1_Channel3_IRQHandler 154 .word DMA1_Channel4_IRQHandler 155 .word DMA1_Channel5_IRQHandler 156 .word DMA1_Channel6_IRQHandler 157 .word DMA1_Channel7_IRQHandler 158 .word ADC1_IRQHandler 159 .word USB_HP_IRQHandler 160 .word USB_LP_IRQHandler 161 .word C2SEV_PWR_C2H_IRQHandler 162 .word COMP_IRQHandler 163 .word EXTI9_5_IRQHandler 164 .word TIM1_BRK_IRQHandler 165 .word TIM1_UP_TIM16_IRQHandler 166 .word TIM1_TRG_COM_TIM17_IRQHandler 167 .word TIM1_CC_IRQHandler 168 .word TIM2_IRQHandler 169 .word PKA_IRQHandler 170 .word I2C1_EV_IRQHandler 171 .word I2C1_ER_IRQHandler 172 .word I2C3_EV_IRQHandler 173 .word I2C3_ER_IRQHandler 174 .word SPI1_IRQHandler 175 .word SPI2_IRQHandler 176 .word USART1_IRQHandler 177 .word LPUART1_IRQHandler 178 .word SAI1_IRQHandler 179 .word TSC_IRQHandler 180 .word EXTI15_10_IRQHandler 181 .word RTC_Alarm_IRQHandler 182 .word CRS_IRQHandler 183 .word PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler 184 .word IPCC_C1_RX_IRQHandler 185 .word IPCC_C1_TX_IRQHandler 186 .word HSEM_IRQHandler 187 .word LPTIM1_IRQHandler 188 .word LPTIM2_IRQHandler 189 .word LCD_IRQHandler 190 .word QUADSPI_IRQHandler 191 .word AES1_IRQHandler 192 .word AES2_IRQHandler 193 .word RNG_IRQHandler 194 .word FPU_IRQHandler 195 .word DMA2_Channel1_IRQHandler 196 .word DMA2_Channel2_IRQHandler 197 .word DMA2_Channel3_IRQHandler 198 .word DMA2_Channel4_IRQHandler 199 .word DMA2_Channel5_IRQHandler 200 .word DMA2_Channel6_IRQHandler 201 .word DMA2_Channel7_IRQHandler 202 .word DMAMUX1_OVR_IRQHandler 203 204/******************************************************************************* 205* 206* Provide weak aliases for each Exception handler to the Default_Handler. 207* As they are weak aliases, any function with the same name will override 208* this definition. 209* 210*******************************************************************************/ 211 .weak NMI_Handler 212 .thumb_set NMI_Handler,Default_Handler 213 214 .weak HardFault_Handler 215 .thumb_set HardFault_Handler,Default_Handler 216 217 .weak MemManage_Handler 218 .thumb_set MemManage_Handler,Default_Handler 219 220 .weak BusFault_Handler 221 .thumb_set BusFault_Handler,Default_Handler 222 223 .weak UsageFault_Handler 224 .thumb_set UsageFault_Handler,Default_Handler 225 226 .weak SVC_Handler 227 .thumb_set SVC_Handler,Default_Handler 228 229 .weak DebugMon_Handler 230 .thumb_set DebugMon_Handler,Default_Handler 231 232 .weak PendSV_Handler 233 .thumb_set PendSV_Handler,Default_Handler 234 235 .weak SysTick_Handler 236 .thumb_set SysTick_Handler,Default_Handler 237 238 .weak WWDG_IRQHandler 239 .thumb_set WWDG_IRQHandler,Default_Handler 240 241 .weak PVD_PVM_IRQHandler 242 .thumb_set PVD_PVM_IRQHandler,Default_Handler 243 244 .weak TAMP_STAMP_LSECSS_IRQHandler 245 .thumb_set TAMP_STAMP_LSECSS_IRQHandler,Default_Handler 246 247 .weak RTC_WKUP_IRQHandler 248 .thumb_set RTC_WKUP_IRQHandler,Default_Handler 249 250 .weak FLASH_IRQHandler 251 .thumb_set FLASH_IRQHandler,Default_Handler 252 253 .weak RCC_IRQHandler 254 .thumb_set RCC_IRQHandler,Default_Handler 255 256 .weak EXTI0_IRQHandler 257 .thumb_set EXTI0_IRQHandler,Default_Handler 258 259 .weak EXTI1_IRQHandler 260 .thumb_set EXTI1_IRQHandler,Default_Handler 261 262 .weak EXTI2_IRQHandler 263 .thumb_set EXTI2_IRQHandler,Default_Handler 264 265 .weak EXTI3_IRQHandler 266 .thumb_set EXTI3_IRQHandler,Default_Handler 267 268 .weak EXTI4_IRQHandler 269 .thumb_set EXTI4_IRQHandler,Default_Handler 270 271 .weak DMA1_Channel1_IRQHandler 272 .thumb_set DMA1_Channel1_IRQHandler,Default_Handler 273 274 .weak DMA1_Channel2_IRQHandler 275 .thumb_set DMA1_Channel2_IRQHandler,Default_Handler 276 277 .weak DMA1_Channel3_IRQHandler 278 .thumb_set DMA1_Channel3_IRQHandler,Default_Handler 279 280 .weak DMA1_Channel4_IRQHandler 281 .thumb_set DMA1_Channel4_IRQHandler,Default_Handler 282 283 .weak DMA1_Channel5_IRQHandler 284 .thumb_set DMA1_Channel5_IRQHandler,Default_Handler 285 286 .weak DMA1_Channel6_IRQHandler 287 .thumb_set DMA1_Channel6_IRQHandler,Default_Handler 288 289 .weak DMA1_Channel7_IRQHandler 290 .thumb_set DMA1_Channel7_IRQHandler,Default_Handler 291 292 .weak ADC1_IRQHandler 293 .thumb_set ADC1_IRQHandler,Default_Handler 294 295 .weak USB_HP_IRQHandler 296 .thumb_set USB_HP_IRQHandler,Default_Handler 297 298 .weak USB_LP_IRQHandler 299 .thumb_set USB_LP_IRQHandler,Default_Handler 300 301 .weak C2SEV_PWR_C2H_IRQHandler 302 .thumb_set C2SEV_PWR_C2H_IRQHandler,Default_Handler 303 304 .weak COMP_IRQHandler 305 .thumb_set COMP_IRQHandler,Default_Handler 306 307 .weak EXTI9_5_IRQHandler 308 .thumb_set EXTI9_5_IRQHandler,Default_Handler 309 310 .weak TIM1_BRK_IRQHandler 311 .thumb_set TIM1_BRK_IRQHandler,Default_Handler 312 313 .weak TIM1_UP_TIM16_IRQHandler 314 .thumb_set TIM1_UP_TIM16_IRQHandler,Default_Handler 315 316 .weak TIM1_TRG_COM_TIM17_IRQHandler 317 .thumb_set TIM1_TRG_COM_TIM17_IRQHandler,Default_Handler 318 319 .weak TIM1_CC_IRQHandler 320 .thumb_set TIM1_CC_IRQHandler,Default_Handler 321 322 .weak TIM2_IRQHandler 323 .thumb_set TIM2_IRQHandler,Default_Handler 324 325 .weak PKA_IRQHandler 326 .thumb_set PKA_IRQHandler,Default_Handler 327 328 .weak I2C1_EV_IRQHandler 329 .thumb_set I2C1_EV_IRQHandler,Default_Handler 330 331 .weak I2C1_ER_IRQHandler 332 .thumb_set I2C1_ER_IRQHandler,Default_Handler 333 334 .weak I2C3_EV_IRQHandler 335 .thumb_set I2C3_EV_IRQHandler,Default_Handler 336 337 .weak I2C3_ER_IRQHandler 338 .thumb_set I2C3_ER_IRQHandler,Default_Handler 339 340 .weak SPI1_IRQHandler 341 .thumb_set SPI1_IRQHandler,Default_Handler 342 343 .weak SPI2_IRQHandler 344 .thumb_set SPI2_IRQHandler,Default_Handler 345 346 .weak USART1_IRQHandler 347 .thumb_set USART1_IRQHandler,Default_Handler 348 349 .weak LPUART1_IRQHandler 350 .thumb_set LPUART1_IRQHandler,Default_Handler 351 352 .weak SAI1_IRQHandler 353 .thumb_set SAI1_IRQHandler,Default_Handler 354 355 .weak TSC_IRQHandler 356 .thumb_set TSC_IRQHandler,Default_Handler 357 358 .weak EXTI15_10_IRQHandler 359 .thumb_set EXTI15_10_IRQHandler,Default_Handler 360 361 .weak RTC_Alarm_IRQHandler 362 .thumb_set RTC_Alarm_IRQHandler,Default_Handler 363 364 .weak CRS_IRQHandler 365 .thumb_set CRS_IRQHandler,Default_Handler 366 367 .weak PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler 368 .thumb_set PWR_SOTF_BLEACT_802ACT_RFPHASE_IRQHandler,Default_Handler 369 370 .weak IPCC_C1_RX_IRQHandler 371 .thumb_set IPCC_C1_RX_IRQHandler,Default_Handler 372 373 .weak IPCC_C1_TX_IRQHandler 374 .thumb_set IPCC_C1_TX_IRQHandler,Default_Handler 375 376 .weak HSEM_IRQHandler 377 .thumb_set HSEM_IRQHandler,Default_Handler 378 379 .weak LPTIM1_IRQHandler 380 .thumb_set LPTIM1_IRQHandler,Default_Handler 381 382 .weak LPTIM2_IRQHandler 383 .thumb_set LPTIM2_IRQHandler,Default_Handler 384 385 .weak LCD_IRQHandler 386 .thumb_set LCD_IRQHandler,Default_Handler 387 388 .weak QUADSPI_IRQHandler 389 .thumb_set QUADSPI_IRQHandler,Default_Handler 390 391 .weak AES1_IRQHandler 392 .thumb_set AES1_IRQHandler,Default_Handler 393 394 .weak AES2_IRQHandler 395 .thumb_set AES2_IRQHandler,Default_Handler 396 397 .weak RNG_IRQHandler 398 .thumb_set RNG_IRQHandler,Default_Handler 399 400 .weak FPU_IRQHandler 401 .thumb_set FPU_IRQHandler,Default_Handler 402 403 .weak DMA2_Channel1_IRQHandler 404 .thumb_set DMA2_Channel1_IRQHandler,Default_Handler 405 406 .weak DMA2_Channel2_IRQHandler 407 .thumb_set DMA2_Channel2_IRQHandler,Default_Handler 408 409 .weak DMA2_Channel3_IRQHandler 410 .thumb_set DMA2_Channel3_IRQHandler,Default_Handler 411 412 .weak DMA2_Channel4_IRQHandler 413 .thumb_set DMA2_Channel4_IRQHandler,Default_Handler 414 415 .weak DMA2_Channel5_IRQHandler 416 .thumb_set DMA2_Channel5_IRQHandler,Default_Handler 417 418 .weak DMA2_Channel6_IRQHandler 419 .thumb_set DMA2_Channel6_IRQHandler,Default_Handler 420 421 .weak DMA2_Channel7_IRQHandler 422 .thumb_set DMA2_Channel7_IRQHandler,Default_Handler 423 424 .weak DMAMUX1_OVR_IRQHandler 425 .thumb_set DMAMUX1_OVR_IRQHandler,Default_Handler 426 427/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 428