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 ; RTC Tamper interrupt or Timestamp through EXTI line 19 interrupt 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 DMA_Channel1_IRQHandler ; DMA Channel 1 91 DCD DMA_Channel2_IRQHandler ; DMA Channel 2 92 DCD DMA_Channel3_IRQHandler ; DMA Channel 3 93 DCD DMA_Channel4_IRQHandler ; DMA Channel 4 94 DCD DMA_Channel5_IRQHandler ; DMA Channel 5 95 DCD DMA_Channel6_IRQHandler ; DMA Channel 6 96 DCD DMA_Channel7_IRQHandler ; DMA Channel 7 97 DCD DMA_Channel8_IRQHandler ; DMA Channel 8 98 DCD ADC_IRQHandler ; ADC 99 DCD USB_HP_IRQHandler ; USB High Priority 100 DCD USB_LP_IRQHandler ; USB Low Priority 101 DCD COMP_1_2_IRQHandler ; COMP1 & COMP2 through EXTI line 21/22 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 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 UART4_IRQHandler ; UART4 127 DCD UART5_IRQHandler ; UART5 128 DCD LPUART_IRQHandler ; LPUART 129 DCD TIM5_IRQHandler ; TIM5 130 DCD TIM6_IRQHandler ; TIM6 131 DCD TIM7_IRQHandler ; TIM7 132 DCD CAN_TX_IRQHandler ; CAN TX 133 DCD CAN_RX0_IRQHandler ; CAN RX0 134 DCD CAN_RX1_IRQHandler ; CAN RX1 135 DCD CAN_SCE_IRQHandler ; CAN SCE 136 DCD LPUART_WKUP_IRQHandler ; LPUART_WKUP 137 DCD LPTIM_WKUP_IRQHandler ; LPTIM_WKUP 138 DCD LCD_IRQHandler ; LCD 139 DCD SAC_IRQHandler ; SAC 140 DCD MMU_IRQHandler ; MMU 141 DCD TSC_IRQHandler ; TSC 142 DCD RAMC_PERR_IRQHandler ; RAMC ERR 143 DCD TIM9_IRQHandler ; TIM9 144 DCD UCDR_IRQHandler ; UCDR ERR 145__Vectors_End 146 147__Vectors_Size EQU __Vectors_End - __Vectors 148 149 AREA |.text|, CODE, READONLY 150 151; Reset handler 152Reset_Handler PROC 153 EXPORT Reset_Handler [WEAK] 154 IMPORT __main 155 IMPORT SystemInit 156 LDR R0, =SystemInit 157 BLX R0 158 LDR R0, =__main 159 BX R0 160 ENDP 161 162; Dummy Exception Handlers (infinite loops which can be modified) 163 164NMI_Handler PROC 165 EXPORT NMI_Handler [WEAK] 166 B . 167 ENDP 168HardFault_Handler\ 169 PROC 170 EXPORT HardFault_Handler [WEAK] 171 B . 172 ENDP 173MemManage_Handler\ 174 PROC 175 EXPORT MemManage_Handler [WEAK] 176 B . 177 ENDP 178BusFault_Handler\ 179 PROC 180 EXPORT BusFault_Handler [WEAK] 181 B . 182 ENDP 183UsageFault_Handler\ 184 PROC 185 EXPORT UsageFault_Handler [WEAK] 186 B . 187 ENDP 188SVC_Handler PROC 189 EXPORT SVC_Handler [WEAK] 190 B . 191 ENDP 192DebugMon_Handler\ 193 PROC 194 EXPORT DebugMon_Handler [WEAK] 195 B . 196 ENDP 197PendSV_Handler PROC 198 EXPORT PendSV_Handler [WEAK] 199 B . 200 ENDP 201SysTick_Handler PROC 202 EXPORT SysTick_Handler [WEAK] 203 B . 204 ENDP 205 206Default_Handler PROC 207 208 EXPORT WWDG_IRQHandler [WEAK] 209 EXPORT PVD_IRQHandler [WEAK] 210 EXPORT TAMPER_IRQHandler [WEAK] 211 EXPORT RTC_WKUP_IRQHandler [WEAK] 212 EXPORT FLASH_IRQHandler [WEAK] 213 EXPORT RCC_IRQHandler [WEAK] 214 EXPORT EXTI0_IRQHandler [WEAK] 215 EXPORT EXTI1_IRQHandler [WEAK] 216 EXPORT EXTI2_IRQHandler [WEAK] 217 EXPORT EXTI3_IRQHandler [WEAK] 218 EXPORT EXTI4_IRQHandler [WEAK] 219 EXPORT DMA_Channel1_IRQHandler [WEAK] 220 EXPORT DMA_Channel2_IRQHandler [WEAK] 221 EXPORT DMA_Channel3_IRQHandler [WEAK] 222 EXPORT DMA_Channel4_IRQHandler [WEAK] 223 EXPORT DMA_Channel5_IRQHandler [WEAK] 224 EXPORT DMA_Channel6_IRQHandler [WEAK] 225 EXPORT DMA_Channel7_IRQHandler [WEAK] 226 EXPORT DMA_Channel8_IRQHandler [WEAK] 227 EXPORT ADC_IRQHandler [WEAK] 228 EXPORT USB_HP_IRQHandler [WEAK] 229 EXPORT USB_LP_IRQHandler [WEAK] 230 EXPORT COMP_1_2_IRQHandler [WEAK] 231 EXPORT EXTI9_5_IRQHandler [WEAK] 232 EXPORT TIM1_BRK_IRQHandler [WEAK] 233 EXPORT TIM1_UP_IRQHandler [WEAK] 234 EXPORT TIM1_TRG_COM_IRQHandler [WEAK] 235 EXPORT TIM1_CC_IRQHandler [WEAK] 236 EXPORT TIM2_IRQHandler [WEAK] 237 EXPORT TIM3_IRQHandler [WEAK] 238 EXPORT TIM4_IRQHandler [WEAK] 239 EXPORT I2C1_EV_IRQHandler [WEAK] 240 EXPORT I2C1_ER_IRQHandler [WEAK] 241 EXPORT I2C2_EV_IRQHandler [WEAK] 242 EXPORT I2C2_ER_IRQHandler [WEAK] 243 EXPORT SPI1_IRQHandler [WEAK] 244 EXPORT SPI2_IRQHandler [WEAK] 245 EXPORT USART1_IRQHandler [WEAK] 246 EXPORT USART2_IRQHandler [WEAK] 247 EXPORT USART3_IRQHandler [WEAK] 248 EXPORT EXTI15_10_IRQHandler [WEAK] 249 EXPORT RTCAlarm_IRQHandler [WEAK] 250 EXPORT USBWakeUp_IRQHandler [WEAK] 251 EXPORT TIM8_BRK_IRQHandler [WEAK] 252 EXPORT TIM8_UP_IRQHandler [WEAK] 253 EXPORT TIM8_TRG_COM_IRQHandler [WEAK] 254 EXPORT TIM8_CC_IRQHandler [WEAK] 255 EXPORT UART4_IRQHandler [WEAK] 256 EXPORT UART5_IRQHandler [WEAK] 257 EXPORT LPUART_IRQHandler [WEAK] 258 EXPORT TIM5_IRQHandler [WEAK] 259 EXPORT TIM6_IRQHandler [WEAK] 260 EXPORT TIM7_IRQHandler [WEAK] 261 EXPORT CAN_TX_IRQHandler [WEAK] 262 EXPORT CAN_RX0_IRQHandler [WEAK] 263 EXPORT CAN_RX1_IRQHandler [WEAK] 264 EXPORT CAN_SCE_IRQHandler [WEAK] 265 EXPORT LPUART_WKUP_IRQHandler [WEAK] 266 EXPORT LPTIM_WKUP_IRQHandler [WEAK] 267 EXPORT LCD_IRQHandler [WEAK] 268 EXPORT SAC_IRQHandler [WEAK] 269 EXPORT MMU_IRQHandler [WEAK] 270 EXPORT TSC_IRQHandler [WEAK] 271 EXPORT RAMC_PERR_IRQHandler [WEAK] 272 EXPORT TIM9_IRQHandler [WEAK] 273 EXPORT UCDR_IRQHandler [WEAK] 274 275WWDG_IRQHandler 276PVD_IRQHandler 277TAMPER_IRQHandler 278RTC_WKUP_IRQHandler 279FLASH_IRQHandler 280RCC_IRQHandler 281EXTI0_IRQHandler 282EXTI1_IRQHandler 283EXTI2_IRQHandler 284EXTI3_IRQHandler 285EXTI4_IRQHandler 286DMA_Channel1_IRQHandler 287DMA_Channel2_IRQHandler 288DMA_Channel3_IRQHandler 289DMA_Channel4_IRQHandler 290DMA_Channel5_IRQHandler 291DMA_Channel6_IRQHandler 292DMA_Channel7_IRQHandler 293DMA_Channel8_IRQHandler 294ADC_IRQHandler 295USB_HP_IRQHandler 296USB_LP_IRQHandler 297COMP_1_2_IRQHandler 298EXTI9_5_IRQHandler 299TIM1_BRK_IRQHandler 300TIM1_UP_IRQHandler 301TIM1_TRG_COM_IRQHandler 302TIM1_CC_IRQHandler 303TIM2_IRQHandler 304TIM3_IRQHandler 305TIM4_IRQHandler 306I2C1_EV_IRQHandler 307I2C1_ER_IRQHandler 308I2C2_EV_IRQHandler 309I2C2_ER_IRQHandler 310SPI1_IRQHandler 311SPI2_IRQHandler 312USART1_IRQHandler 313USART2_IRQHandler 314USART3_IRQHandler 315EXTI15_10_IRQHandler 316RTCAlarm_IRQHandler 317USBWakeUp_IRQHandler 318TIM8_BRK_IRQHandler 319TIM8_UP_IRQHandler 320TIM8_TRG_COM_IRQHandler 321TIM8_CC_IRQHandler 322UART4_IRQHandler 323UART5_IRQHandler 324LPUART_IRQHandler 325TIM5_IRQHandler 326TIM6_IRQHandler 327TIM7_IRQHandler 328CAN_TX_IRQHandler 329CAN_RX0_IRQHandler 330CAN_RX1_IRQHandler 331CAN_SCE_IRQHandler 332LPUART_WKUP_IRQHandler 333LPTIM_WKUP_IRQHandler 334LCD_IRQHandler 335SAC_IRQHandler 336MMU_IRQHandler 337TSC_IRQHandler 338RAMC_PERR_IRQHandler 339TIM9_IRQHandler 340UCDR_IRQHandler 341 B . 342 343 ENDP 344 345 ALIGN 346 347;******************************************************************************* 348; User Stack and Heap initialization 349;******************************************************************************* 350 IF :DEF:__MICROLIB 351 352 EXPORT __initial_sp 353 EXPORT __heap_base 354 EXPORT __heap_limit 355 356 ELSE 357 358 IMPORT __use_two_region_memory 359 EXPORT __user_initial_stackheap 360 361__user_initial_stackheap 362 363 LDR R0, = Heap_Mem 364 LDR R1, =(Stack_Mem + Stack_Size) 365 LDR R2, = (Heap_Mem + Heap_Size) 366 LDR R3, = Stack_Mem 367 BX LR 368 369 ALIGN 370 371 ENDIF 372 373 END 374