; /* Copyright Statement:
; *
; * This software/firmware and related documentation ("AutoChips Software") are
; * protected under relevant copyright laws. The information contained herein is
; * confidential and proprietary to AutoChips Inc. and/or its licensors. Without
; * the prior written permission of AutoChips inc. and/or its licensors, any
; * reproduction, modification, use or disclosure of AutoChips Software, and
; * information contained herein, in whole or in part, shall be strictly
; * prohibited.
; *
; * AutoChips Inc. (C) 2020. All rights reserved.
; *
; * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
; * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("AUTOCHIPS SOFTWARE")
; * RECEIVED FROM AUTOCHIPS AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
; * ON AN "AS-IS" BASIS ONLY. AUTOCHIPS EXPRESSLY DISCLAIMS ANY AND ALL
; * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
; * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
; * NONINFRINGEMENT. NEITHER DOES AUTOCHIPS PROVIDE ANY WARRANTY WHATSOEVER WITH
; * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
; * INCORPORATED IN, OR SUPPLIED WITH THE AUTOCHIPS SOFTWARE, AND RECEIVER AGREES
; * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
; * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
; * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN AUTOCHIPS
; * SOFTWARE. AUTOCHIPS SHALL ALSO NOT BE RESPONSIBLE FOR ANY AUTOCHIPS SOFTWARE
; * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
; * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND AUTOCHIPS'S
; * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE AUTOCHIPS SOFTWARE
; * RELEASED HEREUNDER WILL BE, AT AUTOCHIPS'S OPTION, TO REVISE OR REPLACE THE
; * AUTOCHIPS SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
; * CHARGE PAID BY RECEIVER TO AUTOCHIPS FOR SUCH AUTOCHIPS SOFTWARE AT ISSUE.
; */
;/*
;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
;*/
; Stack Configuration
; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
;
Stack_Size EQU 0x00000400
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
; Heap Configuration
; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
;
Heap_Size EQU 0x00000000
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
PRESERVE8
THUMB
; Vector Table Mapped to Address 0 at Reset
AREA RESET, DATA, READONLY
EXPORT __Vectors
EXPORT __Vectors_End
EXPORT __Vectors_Size
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD SVC_Handler ; SVCall Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
; External Interrupts
DCD PWDT0_IRQHandler ; 0: PWDT0 interrupt
DCD PWDT1_IRQHandler ; 1: PWDT1 interrupt
DCD PWM0_IRQHandler ; 2: PWM0 interrupt
DCD PWM1_IRQHandler ; 3: PWM1 interrupt
DCD ACMP0_IRQHandler ; 4: ACMP0 interrupt
DCD UART0_IRQHandler ; 5: UART0 interrupt
DCD UART1_IRQHandler ; 6: UART1 interrupt
DCD UART2_IRQHandler ; 7: UART2 interrupt
DCD WDG_IRQHandler ; 8: WDG interrupt
DCD SPI0_IRQHandler ; 9: SPI0 interrupt
DCD SPI1_IRQHandler ; 10: SPI1 interrupt
DCD I2C0_IRQHandler ; 11: I2C0 Interrupt
DCD I2C1_IRQHandler ; 12: I2C1 Interrupt
DCD DMA0_Channel0_IRQHandler ; 13: DMA0 channel 0 interrupt
DCD DMA0_Channel1_IRQHandler ; 14: DMA0 channel 1 interrupt
DCD DMA0_Channel2_IRQHandler ; 15: DMA0 channel 2 interrupt
DCD DMA0_Channel3_IRQHandler ; 16: DMA0 channel 3 interrupt
DCD TIMER_Channel0_IRQHandler ; 17: TIMER channel 0 interrupt
DCD TIMER_Channel1_IRQHandler ; 18: TIMER channel 1 interrupt
DCD TIMER_Channel2_IRQHandler ; 19: TIMER channel 2 interrupt
DCD TIMER_Channel3_IRQHandler ; 20: TIMER channel 3 interrupt
DCD RTC_IRQHandler ; 21: RTC Interrupt
DCD PVD_IRQHandler ; 22: PVD Interrupt
DCD SPM_IRQHandler ; 23: SPM interrupt
DCD CAN0_Handler ; 24: CAN0 interrupt
DCD ADC0_IRQHandler ; 25: ADC0 interrupt
DCD ECC_SRAM_IRQHandler ; 26: ECC SRAM interrupt
DCD EXTI0_IRQHandler ; 27: GPIOx PIN0 external interrupt
DCD EXTI1_IRQHandler ; 28: GPIOx PIN1 external interrupt
DCD EXTI2_IRQHandler ; 29: GPIOx PIN2 external interrupt
DCD EXTI3_8_IRQHandler ; 30: GPIOx PIN3~8 external interrupt
DCD EXTI9_15_IRQHandler ; 31: GPIOx PIN9~15 external interrupt
__Vectors_End
__Vectors_Size EQU __Vectors_End - __Vectors
AREA |.text|, CODE, READONLY
; Reset Handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
LDR R0, =SystemInit
BLX R0
LDR R0, =0x40008810
LDR R1, =0x000C0000
STR R1, [R0]
LDR R0, =0x40008850
LDR R1, =0x01C00000
STR R1, [R0]
LDR R0, =0x20080014
LDR R1, =0xFFFF
STRH R1, [R0]
LDR R0, =0x20080044
LDR R1, =0xFFFF
STRH R1, [R0]
LDR R0, =0x20080074
LDR R1, =0x3FF
STRH R1, [R0]
LDR R0, =__main
BX R0
ENDP
; Dummy Exception Handlers (infinite loops which can be modified)
NMI_Handler PROC
EXPORT NMI_Handler [WEAK]
B .
ENDP
HardFault_Handler\
PROC
EXPORT HardFault_Handler [WEAK]
B .
ENDP
SVC_Handler PROC
EXPORT SVC_Handler [WEAK]
B .
ENDP
PendSV_Handler PROC
EXPORT PendSV_Handler [WEAK]
B .
ENDP
SysTick_Handler PROC
EXPORT SysTick_Handler [WEAK]
B .
ENDP
Default_Handler PROC
EXPORT PWDT0_IRQHandler [WEAK]
EXPORT PWDT1_IRQHandler [WEAK]
EXPORT PWM0_IRQHandler [WEAK]
EXPORT PWM1_IRQHandler [WEAK]
EXPORT ACMP0_IRQHandler [WEAK]
EXPORT UART0_IRQHandler [WEAK]
EXPORT UART1_IRQHandler [WEAK]
EXPORT UART2_IRQHandler [WEAK]
EXPORT WDG_IRQHandler [WEAK]
EXPORT SPI0_IRQHandler [WEAK]
EXPORT SPI1_IRQHandler [WEAK]
EXPORT I2C0_IRQHandler [WEAK]
EXPORT I2C1_IRQHandler [WEAK]
EXPORT DMA0_Channel0_IRQHandler [WEAK]
EXPORT DMA0_Channel1_IRQHandler [WEAK]
EXPORT DMA0_Channel2_IRQHandler [WEAK]
EXPORT DMA0_Channel3_IRQHandler [WEAK]
EXPORT TIMER_Channel0_IRQHandler [WEAK]
EXPORT TIMER_Channel1_IRQHandler [WEAK]
EXPORT TIMER_Channel2_IRQHandler [WEAK]
EXPORT TIMER_Channel3_IRQHandler [WEAK]
EXPORT RTC_IRQHandler [WEAK]
EXPORT PVD_IRQHandler [WEAK]
EXPORT SPM_IRQHandler [WEAK]
EXPORT CAN0_Handler [WEAK]
EXPORT ADC0_IRQHandler [WEAK]
EXPORT ECC_SRAM_IRQHandler [WEAK]
EXPORT EXTI0_IRQHandler [WEAK]
EXPORT EXTI1_IRQHandler [WEAK]
EXPORT EXTI2_IRQHandler [WEAK]
EXPORT EXTI3_8_IRQHandler [WEAK]
EXPORT EXTI9_15_IRQHandler [WEAK]
PWDT0_IRQHandler
PWDT1_IRQHandler
PWM0_IRQHandler
PWM1_IRQHandler
ACMP0_IRQHandler
UART0_IRQHandler
UART1_IRQHandler
UART2_IRQHandler
WDG_IRQHandler
SPI0_IRQHandler
SPI1_IRQHandler
I2C0_IRQHandler
I2C1_IRQHandler
DMA0_Channel0_IRQHandler
DMA0_Channel1_IRQHandler
DMA0_Channel2_IRQHandler
DMA0_Channel3_IRQHandler
TIMER_Channel0_IRQHandler
TIMER_Channel1_IRQHandler
TIMER_Channel2_IRQHandler
TIMER_Channel3_IRQHandler
RTC_IRQHandler
PVD_IRQHandler
SPM_IRQHandler
CAN0_Handler
ADC0_IRQHandler
ECC_SRAM_IRQHandler
EXTI0_IRQHandler
EXTI1_IRQHandler
EXTI2_IRQHandler
EXTI3_8_IRQHandler
EXTI9_15_IRQHandler
B .
ENDP
ALIGN
; User Initial Stack & Heap
IF :DEF:__MICROLIB
EXPORT __initial_sp
EXPORT __heap_base
EXPORT __heap_limit
ELSE
IMPORT __use_two_region_memory
EXPORT __user_initial_stackheap
__user_initial_stackheap PROC
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
LDR R3, = Stack_Mem
BX LR
ENDP
ALIGN
ENDIF
END