1; **************************************************************************** 2; Copyright (c) 2019, Nations Technologies Inc. 3; 4; All rights reserved. 5; **************************************************************************** 6; 7; Redistribution and use in source and binary forms, with or without 8; modification, are permitted provided that the following conditions are met: 9; 10; - Redistributions of source code must retain the above copyright notice, 11; this list of conditions and the disclaimer below. 12; 13; Nations' name may not be used to endorse or promote products derived from 14; this software without specific prior written permission. 15; 16; DISCLAIMER: THIS SOFTWARE IS PROVIDED BY NATIONS "AS IS" AND ANY EXPRESS OR 17; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE 19; DISCLAIMED. IN NO EVENT SHALL NATIONS BE LIABLE FOR ANY DIRECT, INDIRECT, 20; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 21; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 22; OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 24; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 25; EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26; **************************************************************************** 27 28; Amount of memory (in bytes) allocated for Stack 29; Tailor this value to your application needs 30; <h> Stack Configuration 31; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> 32; </h> 33 34Stack_Size EQU 0x00001500 35 36 AREA STACK, NOINIT, READWRITE, ALIGN=3 37Stack_Mem SPACE Stack_Size 38__initial_sp 39 40; <h> Heap Configuration 41; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> 42; </h> 43 44Heap_Size EQU 0x00000300 45 46 AREA HEAP, NOINIT, READWRITE, ALIGN=3 47__heap_base 48Heap_Mem SPACE Heap_Size 49__heap_limit 50 51 PRESERVE8 52 THUMB 53 54 55; Vector Table Mapped to Address 0 at Reset 56 AREA RESET, DATA, READONLY 57 EXPORT __Vectors 58 EXPORT __Vectors_End 59 EXPORT __Vectors_Size 60 61__Vectors DCD __initial_sp ; Top of Stack 62 DCD Reset_Handler ; Reset Handler 63 DCD NMI_Handler ; NMI Handler 64 DCD HardFault_Handler ; Hard Fault Handler 65 DCD MemManage_Handler ; MPU Fault Handler 66 DCD BusFault_Handler ; Bus Fault Handler 67 DCD UsageFault_Handler ; Usage Fault Handler 68 DCD 0 ; Reserved 69 DCD 0 ; Reserved 70 DCD 0 ; Reserved 71 DCD 0 ; Reserved 72 DCD SVC_Handler ; SVCall Handler 73 DCD DebugMon_Handler ; Debug Monitor Handler 74 DCD 0 ; Reserved 75 DCD PendSV_Handler ; PendSV Handler 76 DCD SysTick_Handler ; SysTick Handler 77 78 ; External Interrupts 79 DCD WWDG_IRQHandler ; Window Watchdog 80 DCD PVD_IRQHandler ; PVD through EXTI Line detect 81 DCD TAMPER_IRQHandler ; Tamper 82 DCD RTC_WKUP_IRQHandler ; RTC_WKUP 83 DCD FLASH_IRQHandler ; Flash 84 DCD RCC_IRQHandler ; RCC 85 DCD EXTI0_IRQHandler ; EXTI Line 0 86 DCD EXTI1_IRQHandler ; EXTI Line 1 87 DCD EXTI2_IRQHandler ; EXTI Line 2 88 DCD EXTI3_IRQHandler ; EXTI Line 3 89 DCD EXTI4_IRQHandler ; EXTI Line 4 90 DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 91 DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 92 DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 93 DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 94 DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 95 DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 96 DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 97 DCD ADC1_2_IRQHandler ; ADC1 & ADC2 98 DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX 99 DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0 100 DCD CAN1_RX1_IRQHandler ; CAN1 RX1 101 DCD CAN1_SCE_IRQHandler ; CAN1 SCE 102 DCD EXTI9_5_IRQHandler ; EXTI Line 9..5 103 DCD TIM1_BRK_IRQHandler ; TIM1 Break 104 DCD TIM1_UP_IRQHandler ; TIM1 Update 105 DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation 106 DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare 107 DCD TIM2_IRQHandler ; TIM2 108 DCD TIM3_IRQHandler ; TIM3 109 DCD TIM4_IRQHandler ; TIM4 110 DCD I2C1_EV_IRQHandler ; I2C1 Event 111 DCD I2C1_ER_IRQHandler ; I2C1 Error 112 DCD I2C2_EV_IRQHandler ; I2C2 Event 113 DCD I2C2_ER_IRQHandler ; I2C2 Error 114 DCD SPI1_IRQHandler ; SPI1 115 DCD SPI2_IRQHandler ; SPI2/I2S2 116 DCD USART1_IRQHandler ; USART1 117 DCD USART2_IRQHandler ; USART2 118 DCD USART3_IRQHandler ; USART3 119 DCD EXTI15_10_IRQHandler ; EXTI Line 15..10 120 DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line 121 DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend 122 DCD TIM8_BRK_IRQHandler ; TIM8 Break 123 DCD TIM8_UP_IRQHandler ; TIM8 Update 124 DCD TIM8_TRG_COM_IRQHandler ; TIM8 Trigger and Commutation 125 DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare 126 DCD RESERVE47_IRQHandler ; RESERVE47 127 DCD RESERVE48_IRQHandler ; RESERVE48 128 DCD SDIO_IRQHandler ; SDIO 129 DCD TIM5_IRQHandler ; TIM5 130 DCD SPI3_IRQHandler ; SPI3/I2S3 131 DCD UART4_IRQHandler ; UART4 132 DCD UART5_IRQHandler ; UART5 133 DCD TIM6_IRQHandler ; TIM6 134 DCD TIM7_IRQHandler ; TIM7 135 DCD DMA2_Channel1_IRQHandler ; DMA2 Channel1 136 DCD DMA2_Channel2_IRQHandler ; DMA2 Channel2 137 DCD DMA2_Channel3_IRQHandler ; DMA2 Channel3 138 DCD DMA2_Channel4_IRQHandler ; DMA2 Channel4 139 DCD DMA2_Channel5_IRQHandler ; DMA2 Channel5 140 DCD RESERVE61_IRQHandler ; RESERVE61 141 DCD RESERVE62_IRQHandler ; RESERVE62 142 DCD CAN2_TX_IRQHandler ; CAN2 TX 143 DCD CAN2_RX0_IRQHandler ; CAN2 RX0 144 DCD CAN2_RX1_IRQHandler ; CAN2 RX1 145 DCD CAN2_SCE_IRQHandler ; CAN2 SCE 146 DCD QSPI_IRQHandler ; QSPI 147 DCD DMA2_Channel6_IRQHandler ; DMA2 Channel6 148 DCD DMA2_Channel7_IRQHandler ; DMA2 Channel7 149 DCD I2C3_EV_IRQHandler ; I2C3 event 150 DCD I2C3_ER_IRQHandler ; I2C3 error 151 DCD I2C4_EV_IRQHandler ; I2C4 event 152 DCD I2C4_ER_IRQHandler ; I2C4 error 153 DCD UART6_IRQHandler ; UART6 154 DCD UART7_IRQHandler ; UART7 155 DCD DMA1_Channel8_IRQHandler ; DMA1 Channel8 156 DCD DMA2_Channel8_IRQHandler ; DMA2 Channel8 157 DCD DVP_IRQHandler ; DVP 158 DCD SAC_IRQHandler ; SAC 159 DCD MMU_IRQHandler ; MMU 160 DCD TSC_IRQHandler ; TSC 161 DCD RESERVE82_IRQHandler ; RESERVE82 162 DCD RESERVE83_IRQHandler ; RESERVE83 163 DCD RESERVE84_IRQHandler ; RESERVE84 164 DCD RSRAM_IRQHandler ; R-SRAM parity error interrupt 165__Vectors_End 166 167__Vectors_Size EQU __Vectors_End - __Vectors 168 169 AREA |.text|, CODE, READONLY 170 171; Reset handler 172Reset_Handler PROC 173 EXPORT Reset_Handler [WEAK] 174 IMPORT __main 175 IMPORT SystemInit 176 LDR R0, =SystemInit 177 BLX R0 178 LDR R0, =__main 179 BX R0 180 ENDP 181 182; Dummy Exception Handlers (infinite loops which can be modified) 183 184NMI_Handler PROC 185 EXPORT NMI_Handler [WEAK] 186 B . 187 ENDP 188HardFault_Handler\ 189 PROC 190 EXPORT HardFault_Handler [WEAK] 191 B . 192 ENDP 193MemManage_Handler\ 194 PROC 195 EXPORT MemManage_Handler [WEAK] 196 B . 197 ENDP 198BusFault_Handler\ 199 PROC 200 EXPORT BusFault_Handler [WEAK] 201 B . 202 ENDP 203UsageFault_Handler\ 204 PROC 205 EXPORT UsageFault_Handler [WEAK] 206 B . 207 ENDP 208SVC_Handler PROC 209 EXPORT SVC_Handler [WEAK] 210 B . 211 ENDP 212DebugMon_Handler\ 213 PROC 214 EXPORT DebugMon_Handler [WEAK] 215 B . 216 ENDP 217PendSV_Handler PROC 218 EXPORT PendSV_Handler [WEAK] 219 B . 220 ENDP 221SysTick_Handler PROC 222 EXPORT SysTick_Handler [WEAK] 223 B . 224 ENDP 225 226Default_Handler PROC 227 228 EXPORT WWDG_IRQHandler [WEAK] 229 EXPORT PVD_IRQHandler [WEAK] 230 EXPORT TAMPER_IRQHandler [WEAK] 231 EXPORT RTC_WKUP_IRQHandler [WEAK] 232 EXPORT FLASH_IRQHandler [WEAK] 233 EXPORT RCC_IRQHandler [WEAK] 234 EXPORT EXTI0_IRQHandler [WEAK] 235 EXPORT EXTI1_IRQHandler [WEAK] 236 EXPORT EXTI2_IRQHandler [WEAK] 237 EXPORT EXTI3_IRQHandler [WEAK] 238 EXPORT EXTI4_IRQHandler [WEAK] 239 EXPORT DMA1_Channel1_IRQHandler [WEAK] 240 EXPORT DMA1_Channel2_IRQHandler [WEAK] 241 EXPORT DMA1_Channel3_IRQHandler [WEAK] 242 EXPORT DMA1_Channel4_IRQHandler [WEAK] 243 EXPORT DMA1_Channel5_IRQHandler [WEAK] 244 EXPORT DMA1_Channel6_IRQHandler [WEAK] 245 EXPORT DMA1_Channel7_IRQHandler [WEAK] 246 EXPORT ADC1_2_IRQHandler [WEAK] 247 EXPORT USB_HP_CAN1_TX_IRQHandler [WEAK] 248 EXPORT USB_LP_CAN1_RX0_IRQHandler [WEAK] 249 EXPORT CAN1_RX1_IRQHandler [WEAK] 250 EXPORT CAN1_SCE_IRQHandler [WEAK] 251 EXPORT EXTI9_5_IRQHandler [WEAK] 252 EXPORT TIM1_BRK_IRQHandler [WEAK] 253 EXPORT TIM1_UP_IRQHandler [WEAK] 254 EXPORT TIM1_TRG_COM_IRQHandler [WEAK] 255 EXPORT TIM1_CC_IRQHandler [WEAK] 256 EXPORT TIM2_IRQHandler [WEAK] 257 EXPORT TIM3_IRQHandler [WEAK] 258 EXPORT TIM4_IRQHandler [WEAK] 259 EXPORT I2C1_EV_IRQHandler [WEAK] 260 EXPORT I2C1_ER_IRQHandler [WEAK] 261 EXPORT I2C2_EV_IRQHandler [WEAK] 262 EXPORT I2C2_ER_IRQHandler [WEAK] 263 EXPORT SPI1_IRQHandler [WEAK] 264 EXPORT SPI2_IRQHandler [WEAK] 265 EXPORT USART1_IRQHandler [WEAK] 266 EXPORT USART2_IRQHandler [WEAK] 267 EXPORT USART3_IRQHandler [WEAK] 268 EXPORT EXTI15_10_IRQHandler [WEAK] 269 EXPORT RTCAlarm_IRQHandler [WEAK] 270 EXPORT USBWakeUp_IRQHandler [WEAK] 271 EXPORT TIM8_BRK_IRQHandler [WEAK] 272 EXPORT TIM8_UP_IRQHandler [WEAK] 273 EXPORT TIM8_TRG_COM_IRQHandler [WEAK] 274 EXPORT TIM8_CC_IRQHandler [WEAK] 275 EXPORT SDIO_IRQHandler [WEAK] 276 EXPORT TIM5_IRQHandler [WEAK] 277 EXPORT SPI3_IRQHandler [WEAK] 278 EXPORT UART4_IRQHandler [WEAK] 279 EXPORT UART5_IRQHandler [WEAK] 280 EXPORT TIM6_IRQHandler [WEAK] 281 EXPORT TIM7_IRQHandler [WEAK] 282 EXPORT DMA2_Channel1_IRQHandler [WEAK] 283 EXPORT DMA2_Channel2_IRQHandler [WEAK] 284 EXPORT DMA2_Channel3_IRQHandler [WEAK] 285 EXPORT DMA2_Channel4_IRQHandler [WEAK] 286 EXPORT DMA2_Channel5_IRQHandler [WEAK] 287 EXPORT CAN2_TX_IRQHandler [WEAK] 288 EXPORT CAN2_RX0_IRQHandler [WEAK] 289 EXPORT CAN2_RX1_IRQHandler [WEAK] 290 EXPORT CAN2_SCE_IRQHandler [WEAK] 291 EXPORT QSPI_IRQHandler [WEAK] 292 EXPORT DMA2_Channel6_IRQHandler [WEAK] 293 EXPORT DMA2_Channel7_IRQHandler [WEAK] 294 EXPORT I2C3_EV_IRQHandler [WEAK] 295 EXPORT I2C3_ER_IRQHandler [WEAK] 296 EXPORT I2C4_EV_IRQHandler [WEAK] 297 EXPORT I2C4_ER_IRQHandler [WEAK] 298 EXPORT UART6_IRQHandler [WEAK] 299 EXPORT UART7_IRQHandler [WEAK] 300 EXPORT DMA1_Channel8_IRQHandler [WEAK] 301 EXPORT DMA2_Channel8_IRQHandler [WEAK] 302 EXPORT DVP_IRQHandler [WEAK] 303 EXPORT SAC_IRQHandler [WEAK] 304 EXPORT MMU_IRQHandler [WEAK] 305 EXPORT TSC_IRQHandler [WEAK] 306 EXPORT RSRAM_IRQHandler [WEAK] 307 308WWDG_IRQHandler 309PVD_IRQHandler 310TAMPER_IRQHandler 311RTC_WKUP_IRQHandler 312FLASH_IRQHandler 313RCC_IRQHandler 314EXTI0_IRQHandler 315EXTI1_IRQHandler 316EXTI2_IRQHandler 317EXTI3_IRQHandler 318EXTI4_IRQHandler 319DMA1_Channel1_IRQHandler 320DMA1_Channel2_IRQHandler 321DMA1_Channel3_IRQHandler 322DMA1_Channel4_IRQHandler 323DMA1_Channel5_IRQHandler 324DMA1_Channel6_IRQHandler 325DMA1_Channel7_IRQHandler 326ADC1_2_IRQHandler 327USB_HP_CAN1_TX_IRQHandler 328USB_LP_CAN1_RX0_IRQHandler 329CAN1_RX1_IRQHandler 330CAN1_SCE_IRQHandler 331EXTI9_5_IRQHandler 332TIM1_BRK_IRQHandler 333TIM1_UP_IRQHandler 334TIM1_TRG_COM_IRQHandler 335TIM1_CC_IRQHandler 336TIM2_IRQHandler 337TIM3_IRQHandler 338TIM4_IRQHandler 339I2C1_EV_IRQHandler 340I2C1_ER_IRQHandler 341I2C2_EV_IRQHandler 342I2C2_ER_IRQHandler 343SPI1_IRQHandler 344SPI2_IRQHandler 345USART1_IRQHandler 346USART2_IRQHandler 347USART3_IRQHandler 348EXTI15_10_IRQHandler 349RTCAlarm_IRQHandler 350USBWakeUp_IRQHandler 351TIM8_BRK_IRQHandler 352TIM8_UP_IRQHandler 353TIM8_TRG_COM_IRQHandler 354TIM8_CC_IRQHandler 355RESERVE47_IRQHandler 356RESERVE48_IRQHandler 357SDIO_IRQHandler 358TIM5_IRQHandler 359SPI3_IRQHandler 360UART4_IRQHandler 361UART5_IRQHandler 362TIM6_IRQHandler 363TIM7_IRQHandler 364DMA2_Channel1_IRQHandler 365DMA2_Channel2_IRQHandler 366DMA2_Channel3_IRQHandler 367DMA2_Channel4_IRQHandler 368DMA2_Channel5_IRQHandler 369RESERVE61_IRQHandler 370RESERVE62_IRQHandler 371CAN2_TX_IRQHandler 372CAN2_RX0_IRQHandler 373CAN2_RX1_IRQHandler 374CAN2_SCE_IRQHandler 375QSPI_IRQHandler 376DMA2_Channel6_IRQHandler 377DMA2_Channel7_IRQHandler 378I2C3_EV_IRQHandler 379I2C3_ER_IRQHandler 380I2C4_EV_IRQHandler 381I2C4_ER_IRQHandler 382UART6_IRQHandler 383UART7_IRQHandler 384DMA1_Channel8_IRQHandler 385DMA2_Channel8_IRQHandler 386DVP_IRQHandler 387SAC_IRQHandler 388MMU_IRQHandler 389TSC_IRQHandler 390RESERVE82_IRQHandler 391RESERVE83_IRQHandler 392RESERVE84_IRQHandler 393RSRAM_IRQHandler 394 B . 395 396 ENDP 397 398 ALIGN 399 400;******************************************************************************* 401; User Stack and Heap initialization 402;******************************************************************************* 403 IF :DEF:__MICROLIB 404 405 EXPORT __initial_sp 406 EXPORT __heap_base 407 EXPORT __heap_limit 408 409 ELSE 410 411 IMPORT __use_two_region_memory 412 EXPORT __user_initial_stackheap 413 414__user_initial_stackheap 415 416 LDR R0, = Heap_Mem 417 LDR R1, =(Stack_Mem + Stack_Size) 418 LDR R2, = (Heap_Mem + Heap_Size) 419 LDR R3, = Stack_Mem 420 BX LR 421 422 ALIGN 423 424 ENDIF 425 426 END 427