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 ADC3_4_IRQHandler ; ADC3 & ADC4 127 DCD RESERVE48_IRQHandler ; 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 ETH_IRQHandler ; Ethernet global interrupt 141 DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line interrupt 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 COMP_1_2_3_IRQHandler ; COMP1 & COMP2 & COMP3 162 DCD COMP_4_5_6_IRQHandler ; COMP4 & COMP5 & COMP6 163 DCD COMP7_IRQHandler ; COMP7 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 ADC3_4_IRQHandler [WEAK] 276 EXPORT SDIO_IRQHandler [WEAK] 277 EXPORT TIM5_IRQHandler [WEAK] 278 EXPORT SPI3_IRQHandler [WEAK] 279 EXPORT UART4_IRQHandler [WEAK] 280 EXPORT UART5_IRQHandler [WEAK] 281 EXPORT TIM6_IRQHandler [WEAK] 282 EXPORT TIM7_IRQHandler [WEAK] 283 EXPORT DMA2_Channel1_IRQHandler [WEAK] 284 EXPORT DMA2_Channel2_IRQHandler [WEAK] 285 EXPORT DMA2_Channel3_IRQHandler [WEAK] 286 EXPORT DMA2_Channel4_IRQHandler [WEAK] 287 EXPORT DMA2_Channel5_IRQHandler [WEAK] 288 EXPORT ETH_IRQHandler [WEAK] 289 EXPORT ETH_WKUP_IRQHandler [WEAK] 290 EXPORT CAN2_TX_IRQHandler [WEAK] 291 EXPORT CAN2_RX0_IRQHandler [WEAK] 292 EXPORT CAN2_RX1_IRQHandler [WEAK] 293 EXPORT CAN2_SCE_IRQHandler [WEAK] 294 EXPORT QSPI_IRQHandler [WEAK] 295 EXPORT DMA2_Channel6_IRQHandler [WEAK] 296 EXPORT DMA2_Channel7_IRQHandler [WEAK] 297 EXPORT I2C3_EV_IRQHandler [WEAK] 298 EXPORT I2C3_ER_IRQHandler [WEAK] 299 EXPORT I2C4_EV_IRQHandler [WEAK] 300 EXPORT I2C4_ER_IRQHandler [WEAK] 301 EXPORT UART6_IRQHandler [WEAK] 302 EXPORT UART7_IRQHandler [WEAK] 303 EXPORT DMA1_Channel8_IRQHandler [WEAK] 304 EXPORT DMA2_Channel8_IRQHandler [WEAK] 305 EXPORT DVP_IRQHandler [WEAK] 306 EXPORT SAC_IRQHandler [WEAK] 307 EXPORT MMU_IRQHandler [WEAK] 308 EXPORT TSC_IRQHandler [WEAK] 309 EXPORT COMP_1_2_3_IRQHandler [WEAK] 310 EXPORT COMP_4_5_6_IRQHandler [WEAK] 311 EXPORT COMP7_IRQHandler [WEAK] 312 EXPORT RSRAM_IRQHandler [WEAK] 313 314WWDG_IRQHandler 315PVD_IRQHandler 316TAMPER_IRQHandler 317RTC_WKUP_IRQHandler 318FLASH_IRQHandler 319RCC_IRQHandler 320EXTI0_IRQHandler 321EXTI1_IRQHandler 322EXTI2_IRQHandler 323EXTI3_IRQHandler 324EXTI4_IRQHandler 325DMA1_Channel1_IRQHandler 326DMA1_Channel2_IRQHandler 327DMA1_Channel3_IRQHandler 328DMA1_Channel4_IRQHandler 329DMA1_Channel5_IRQHandler 330DMA1_Channel6_IRQHandler 331DMA1_Channel7_IRQHandler 332ADC1_2_IRQHandler 333USB_HP_CAN1_TX_IRQHandler 334USB_LP_CAN1_RX0_IRQHandler 335CAN1_RX1_IRQHandler 336CAN1_SCE_IRQHandler 337EXTI9_5_IRQHandler 338TIM1_BRK_IRQHandler 339TIM1_UP_IRQHandler 340TIM1_TRG_COM_IRQHandler 341TIM1_CC_IRQHandler 342TIM2_IRQHandler 343TIM3_IRQHandler 344TIM4_IRQHandler 345I2C1_EV_IRQHandler 346I2C1_ER_IRQHandler 347I2C2_EV_IRQHandler 348I2C2_ER_IRQHandler 349SPI1_IRQHandler 350SPI2_IRQHandler 351USART1_IRQHandler 352USART2_IRQHandler 353USART3_IRQHandler 354EXTI15_10_IRQHandler 355RTCAlarm_IRQHandler 356USBWakeUp_IRQHandler 357TIM8_BRK_IRQHandler 358TIM8_UP_IRQHandler 359TIM8_TRG_COM_IRQHandler 360TIM8_CC_IRQHandler 361ADC3_4_IRQHandler 362RESERVE48_IRQHandler 363SDIO_IRQHandler 364TIM5_IRQHandler 365SPI3_IRQHandler 366UART4_IRQHandler 367UART5_IRQHandler 368TIM6_IRQHandler 369TIM7_IRQHandler 370DMA2_Channel1_IRQHandler 371DMA2_Channel2_IRQHandler 372DMA2_Channel3_IRQHandler 373DMA2_Channel4_IRQHandler 374DMA2_Channel5_IRQHandler 375ETH_IRQHandler 376ETH_WKUP_IRQHandler 377CAN2_TX_IRQHandler 378CAN2_RX0_IRQHandler 379CAN2_RX1_IRQHandler 380CAN2_SCE_IRQHandler 381QSPI_IRQHandler 382DMA2_Channel6_IRQHandler 383DMA2_Channel7_IRQHandler 384I2C3_EV_IRQHandler 385I2C3_ER_IRQHandler 386I2C4_EV_IRQHandler 387I2C4_ER_IRQHandler 388UART6_IRQHandler 389UART7_IRQHandler 390DMA1_Channel8_IRQHandler 391DMA2_Channel8_IRQHandler 392DVP_IRQHandler 393SAC_IRQHandler 394MMU_IRQHandler 395TSC_IRQHandler 396COMP_1_2_3_IRQHandler 397COMP_4_5_6_IRQHandler 398COMP7_IRQHandler 399RSRAM_IRQHandler 400 B . 401 402 ENDP 403 404 ALIGN 405 406;******************************************************************************* 407; User Stack and Heap initialization 408;******************************************************************************* 409 IF :DEF:__MICROLIB 410 411 EXPORT __initial_sp 412 EXPORT __heap_base 413 EXPORT __heap_limit 414 415 ELSE 416 417 IMPORT __use_two_region_memory 418 EXPORT __user_initial_stackheap 419 420__user_initial_stackheap 421 422 LDR R0, = Heap_Mem 423 LDR R1, =(Stack_Mem + Stack_Size) 424 LDR R2, = (Heap_Mem + Heap_Size) 425 LDR R3, = Stack_Mem 426 BX LR 427 428 ALIGN 429 430 ENDIF 431 432 END 433