1; //////////////////////////////////////////////////////////////////////////////// 2; /// @file startup_mm32_IAR.s 3; /// @author AE TEAM 4; /// @brief THIS FILE PROVIDES ALL THE Device Startup File of MM32 Cortex-M 5; /// Core Device for IAR EWARM toolchain. 6; //////////////////////////////////////////////////////////////////////////////// 7; /// @attention 8; /// 9; /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE 10; /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE 11; /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR 12; /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH 13; /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN 14; /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS. 15; /// 16; /// <H2><CENTER>© COPYRIGHT MINDMOTION </CENTER></H2> 17; //////////////////////////////////////////////////////////////////////////////// 18; 19; //////////////////////////////////////////////////////////////////////////////// 20; /// The modules in this file are included in the libraries, and may be replaced 21; /// by any user-defined modules that define the PUBLIC symbol _program_start or 22; /// a user defined start symbol. 23; /// To override the cstartup defined in the library, simply add your modified 24; /// version to the workbench project. 25; /// 26; /// The vector table is normally located at address 0. 27; /// When debugging in RAM, it can be located in RAM, aligned to at least 2^6. 28; /// The name "__vector_table" has special meaning for C-SPY: 29; /// it is where the SP start value is found, and the NVIC vector 30; /// table register (VTOR) is initialized to this address if != 0. 31; /// 32; /// Cortex-M version 33; /// 34; /// This module performs: 35; /// - Set the initial SP 36; /// - Set the initial PC == __iar_program_start, 37; /// - Set the vector table entries with the exceptions ISR 38; /// address 39; /// - Configure the system clock (optional) 40; /// - Branches to main in the C library (which eventually 41; /// calls main()). 42; /// After Reset the Cortex-M processor is in Thread mode, 43; /// priority is Privileged, and the Stack is set to Main. 44; //////////////////////////////////////////////////////////////////////////////// 45 46 MODULE ?cstartup 47 48 ;; Forward declaration of sections. 49 SECTION CSTACK:DATA:NOROOT(3) 50 51 SECTION .intvec:CODE:NOROOT(2) 52 53 EXTERN __iar_program_start 54 EXTERN SystemInit 55 PUBLIC __vector_table 56 PUBLIC __vector_table_0x1c 57 PUBLIC __Vectors 58 PUBLIC __Vectors_End 59 PUBLIC __Vectors_Size 60 61 DATA 62__vector_table 63 DCD sfe(CSTACK) ; Top of Stack 64 DCD Reset_Handler ; Reset Handler 65 DCD NMI_Handler ; -14 NMI Handler 66 DCD HardFault_Handler ; -13 Hard Fault Handler 67 DCD MemManage_Handler ; -12 MPU Fault Handler 68 DCD BusFault_Handler ; -11 Bus Fault Handler 69 DCD UsageFault_Handler ; -10 Usage Fault Handler 70__vector_table_0x1c 71 DCD 0 ; -9 Reserved 72 DCD 0 ; -8 Reserved 73 DCD 0 ; -7 Reserved 74 DCD 0 ; -6 Reserved 75 DCD SVC_Handler ; -5 SVCall Handler 76 DCD DebugMon_Handler ; -4 Debug Monitor Handler 77 DCD 0 ; -3 Reserved 78 DCD PendSV_Handler ; -2 PendSV Handler 79 DCD SysTick_Handler ; -1 SysTick Handler ; External Interrupts 80 DCD WWDG_IRQHandler ; 0 Window Watchdog 81 DCD PVD_IRQHandler ; 1 PVD through EXTI Line detect 82 DCD TAMPER_IRQHandler ; 2 Tamper 83 DCD RTC_IRQHandler ; 3 RTC 84 DCD FLASH_IRQHandler ; 4 Flash 85 DCD RCC_CRS_IRQHandler ; 5 RCC 86 DCD EXTI0_IRQHandler ; 6 EXTI Line 0 87 DCD EXTI1_IRQHandler ; 7 EXTI Line 1 88 DCD EXTI2_IRQHandler ; 8 EXTI Line 2 89 DCD EXTI3_IRQHandler ; 9 EXTI Line 3 90 DCD EXTI4_IRQHandler ; 10 EXTI Line 4 91 DCD DMA1_Channel1_IRQHandler ; 11 DMA1 Channel 1 92 DCD DMA1_Channel2_IRQHandler ; 12 DMA1 Channel 2 93 DCD DMA1_Channel3_IRQHandler ; 13 DMA1 Channel 3 94 DCD DMA1_Channel4_IRQHandler ; 14 DMA1 Channel 4 95 DCD DMA1_Channel5_IRQHandler ; 15 DMA1 Channel 5 96 DCD DMA1_Channel6_IRQHandler ; 16 DMA1 Channel 6 97 DCD DMA1_Channel7_IRQHandler ; 17 DMA1 Channel 7 98 DCD ADC1_2_IRQHandler ; 18 ADC1 and ADC2 99 DCD FlashCache_IRQHandler ; 19 FlashCache outage 100 DCD 0 ; 20 Reserved 101 DCD CAN1_RX_IRQHandler ; 21 CAN1_RX 102 DCD 0 ; 22 Reserved 103 DCD EXTI9_5_IRQHandler ; 23 EXTI Line 9..5 104 DCD TIM1_BRK_IRQHandler ; 24 TIM1 Break 105 DCD TIM1_UP_IRQHandler ; 25 TIM1 Update 106 DCD TIM1_TRG_COM_IRQHandler ; 26 TIM1 Trigger and Commutation 107 DCD TIM1_CC_IRQHandler ; 27 TIM1 Capture Compare 108 DCD TIM2_IRQHandler ; 28 TIM2 109 DCD TIM3_IRQHandler ; 29 TIM3 110 DCD TIM4_IRQHandler ; 30 TIM4 111 DCD I2C1_IRQHandler ; 31 I2C1 Event 112 DCD 0 ; 32 Reserved 113 DCD I2C2_IRQHandler ; 33 I2C2 Event 114 DCD 0 ; 34 Reserved 115 DCD SPI1_IRQHandler ; 35 SPI1 116 DCD SPI2_IRQHandler ; 36 SPI2 117 DCD UART1_IRQHandler ; 37 UART1 118 DCD UART2_IRQHandler ; 38 UART2 119 DCD UART3_IRQHandler ; 39 UART3 120 DCD EXTI15_10_IRQHandler ; 40 EXTI Line 15..10 121 DCD RTCAlarm_IRQHandler ; 41 RTC Alarm through EXTI Line 17 122 DCD OTG_FS_WKUP_IRQHandler ; 42 USB OTG FS Wakeup through EXTI line 123 DCD TIM8_BRK_IRQHandler ; 43 TIM8 Break 124 DCD TIM8_UP_IRQHandler ; 44 TIM8 Update 125 DCD TIM8_TRG_COM_IRQHandler ; 45 TIM8 Trigger and Commutation 126 DCD TIM8_CC_IRQHandler ; 46 TIM8 Capture Compare 127 DCD ADC3_IRQHandler ; 47 ADC3 128 DCD 0 ; 48 Reserved 129 DCD SDIO_IRQHandler ; 49 SDIO 130 DCD TIM5_IRQHandler ; 50 TIM5 131 DCD SPI3_IRQHandler ; 51 SPI3 132 DCD UART4_IRQHandler ; 52 UART4 133 DCD UART5_IRQHandler ; 53 UART5 134 DCD TIM6_IRQHandler ; 54 TIM6 135 DCD TIM7_IRQHandler ; 55 TIM7 136 DCD DMA2_Channel1_IRQHandler ; 56 DMA2 Channel 1 137 DCD DMA2_Channel2_IRQHandler ; 57 DMA2 Channel 2 138 DCD DMA2_Channel3_IRQHandler ; 58 DMA2 Channel 3 139 DCD DMA2_Channel4_IRQHandler ; 59 DMA2 Channel 4 140 DCD DMA2_Channel5_IRQHandler ; 60 DMA2 Channel 5 141 DCD ETH_IRQHandler ; 61 Ethernet 142 DCD 0 ; 62 Reserved 143 DCD 0 ; 63 Reserved 144 DCD COMP1_2_IRQHandler ; 64 COMP1,COMP2 145 DCD 0 ; 65 Reserved 146 DCD 0 ; 66 Reserved 147 DCD OTG_FS_IRQHandler ; 67 USB OTG_FullSpeed 148 DCD 0 ; 68 Reserved 149 DCD 0 ; 69 Reserved 150 DCD 0 ; 70 Reserved 151 DCD UART6_IRQHandler ; 71 UART6 152 DCD 0 ; 72 Reserved 153 DCD 0 ; 73 Reserved 154 DCD 0 ; 74 Reserved 155 DCD 0 ; 75 Reserved 156 DCD 0 ; 76 Reserved 157 DCD 0 ; 77 Reserved 158 DCD 0 ; 78 Reserved 159 DCD 0 ; 79 Reserved 160 DCD 0 ; 80 Reserved 161 DCD 0 ; 81 Reserved 162 DCD UART7_IRQHandler ; 82 UART7 163 DCD UART8_IRQHandler ; 83 UART8 164 165 166__Vectors_End 167 168__Vectors EQU __vector_table 169__Vectors_Size EQU __Vectors_End - __Vectors 170 171 172 THUMB 173 174; Reset Handler 175 176 PUBWEAK Reset_Handler 177 SECTION .text:CODE:REORDER:NOROOT(2) 178Reset_Handler 179 LDR R0, =SystemInit 180 BLX R0 181 LDR R0, =__iar_program_start 182 BX R0 183 184 185 PUBWEAK NMI_Handler 186 PUBWEAK HardFault_Handler 187 PUBWEAK MemManage_Handler 188 PUBWEAK BusFault_Handler 189 PUBWEAK UsageFault_Handler 190 PUBWEAK SVC_Handler 191 PUBWEAK DebugMon_Handler 192 PUBWEAK PendSV_Handler 193 PUBWEAK SysTick_Handler 194 PUBWEAK WWDG_IRQHandler 195 PUBWEAK PVD_IRQHandler 196 PUBWEAK TAMPER_IRQHandler 197 PUBWEAK RTC_IRQHandler 198 PUBWEAK FLASH_IRQHandler 199 PUBWEAK RCC_CRS_IRQHandler 200 PUBWEAK EXTI0_IRQHandler 201 PUBWEAK EXTI1_IRQHandler 202 PUBWEAK EXTI2_IRQHandler 203 PUBWEAK EXTI3_IRQHandler 204 PUBWEAK EXTI4_IRQHandler 205 PUBWEAK DMA1_Channel1_IRQHandler 206 PUBWEAK DMA1_Channel2_IRQHandler 207 PUBWEAK DMA1_Channel3_IRQHandler 208 PUBWEAK DMA1_Channel4_IRQHandler 209 PUBWEAK DMA1_Channel5_IRQHandler 210 PUBWEAK DMA1_Channel6_IRQHandler 211 PUBWEAK DMA1_Channel7_IRQHandler 212 PUBWEAK ADC1_2_IRQHandler 213 PUBWEAK FlashCache_IRQHandler 214 PUBWEAK CAN1_RX_IRQHandler 215 PUBWEAK EXTI9_5_IRQHandler 216 PUBWEAK TIM1_BRK_IRQHandler 217 PUBWEAK TIM1_UP_IRQHandler 218 PUBWEAK TIM1_TRG_COM_IRQHandler 219 PUBWEAK TIM1_CC_IRQHandler 220 PUBWEAK TIM2_IRQHandler 221 PUBWEAK TIM3_IRQHandler 222 PUBWEAK TIM4_IRQHandler 223 PUBWEAK I2C1_IRQHandler 224 PUBWEAK I2C2_IRQHandler 225 PUBWEAK SPI1_IRQHandler 226 PUBWEAK SPI2_IRQHandler 227 PUBWEAK UART1_IRQHandler 228 PUBWEAK UART2_IRQHandler 229 PUBWEAK UART3_IRQHandler 230 PUBWEAK EXTI15_10_IRQHandler 231 PUBWEAK RTCAlarm_IRQHandler 232 PUBWEAK OTG_FS_WKUP_IRQHandler 233 PUBWEAK TIM8_BRK_IRQHandler 234 PUBWEAK TIM8_UP_IRQHandler 235 PUBWEAK TIM8_TRG_COM_IRQHandler 236 PUBWEAK TIM8_CC_IRQHandler 237 PUBWEAK ADC3_IRQHandler 238 PUBWEAK SDIO_IRQHandler 239 PUBWEAK TIM5_IRQHandler 240 PUBWEAK SPI3_IRQHandler 241 PUBWEAK UART4_IRQHandler 242 PUBWEAK UART5_IRQHandler 243 PUBWEAK TIM6_IRQHandler 244 PUBWEAK TIM7_IRQHandler 245 PUBWEAK DMA2_Channel1_IRQHandler 246 PUBWEAK DMA2_Channel2_IRQHandler 247 PUBWEAK DMA2_Channel3_IRQHandler 248 PUBWEAK DMA2_Channel4_IRQHandler 249 PUBWEAK DMA2_Channel5_IRQHandler 250 PUBWEAK ETH_IRQHandler 251 PUBWEAK COMP1_2_IRQHandler 252 PUBWEAK OTG_FS_IRQHandler 253 PUBWEAK UART6_IRQHandler 254 PUBWEAK UART7_IRQHandler 255 PUBWEAK UART8_IRQHandler 256 257 258 SECTION .text:CODE:REORDER:NOROOT(1) 259 260 261NMI_Handler 262HardFault_Handler 263MemManage_Handler 264BusFault_Handler 265UsageFault_Handler 266SVC_Handler 267DebugMon_Handler 268PendSV_Handler 269SysTick_Handler 270WWDG_IRQHandler 271PVD_IRQHandler 272TAMPER_IRQHandler 273RTC_IRQHandler 274FLASH_IRQHandler 275RCC_CRS_IRQHandler 276EXTI0_IRQHandler 277EXTI1_IRQHandler 278EXTI2_IRQHandler 279EXTI3_IRQHandler 280EXTI4_IRQHandler 281DMA1_Channel1_IRQHandler 282DMA1_Channel2_IRQHandler 283DMA1_Channel3_IRQHandler 284DMA1_Channel4_IRQHandler 285DMA1_Channel5_IRQHandler 286DMA1_Channel6_IRQHandler 287DMA1_Channel7_IRQHandler 288ADC1_2_IRQHandler 289FlashCache_IRQHandler 290CAN1_RX_IRQHandler 291EXTI9_5_IRQHandler 292TIM1_BRK_IRQHandler 293TIM1_UP_IRQHandler 294TIM1_TRG_COM_IRQHandler 295TIM1_CC_IRQHandler 296TIM2_IRQHandler 297TIM3_IRQHandler 298TIM4_IRQHandler 299I2C1_IRQHandler 300I2C2_IRQHandler 301SPI1_IRQHandler 302SPI2_IRQHandler 303UART1_IRQHandler 304UART2_IRQHandler 305UART3_IRQHandler 306EXTI15_10_IRQHandler 307RTCAlarm_IRQHandler 308OTG_FS_WKUP_IRQHandler 309TIM8_BRK_IRQHandler 310TIM8_UP_IRQHandler 311TIM8_TRG_COM_IRQHandler 312TIM8_CC_IRQHandler 313ADC3_IRQHandler 314SDIO_IRQHandler 315TIM5_IRQHandler 316SPI3_IRQHandler 317UART4_IRQHandler 318UART5_IRQHandler 319TIM6_IRQHandler 320TIM7_IRQHandler 321DMA2_Channel1_IRQHandler 322DMA2_Channel2_IRQHandler 323DMA2_Channel3_IRQHandler 324DMA2_Channel4_IRQHandler 325DMA2_Channel5_IRQHandler 326ETH_IRQHandler 327COMP1_2_IRQHandler 328OTG_FS_IRQHandler 329UART6_IRQHandler 330UART7_IRQHandler 331UART8_IRQHandler 332 333 334Default_Handler 335 B . 336 END 337