1;* File Name          : Startup_ACM32F0x0.s
2;* Version            : V1.0.0
3;* Date               : 2020
4;* Description        : ACM32F0x0 Devices vector table for MDK-ARM toolchain.
5;*                      This module performs:
6;*                      - Set the initial SP
7;*                      - Set the initial PC == Reset_Handler
8;*                      - Set the vector table entries with the exceptions ISR address
9;*                      - Configure the clock system
10;*                      - Branches to __main in the C library (which eventually
11;*                        calls main()).
12;*                      After Reset the SC000 processor is in Thread mode,
13;*                      priority is Privileged, and the Stack is set to Main.
14;*******************************************************************************
15
16Stack_Size      EQU     0x00000800
17Heap_Size       EQU     0x00000000
18
19                AREA    STACK, NOINIT, READWRITE, ALIGN=3
20Stack_Mem       SPACE   Stack_Size
21__initial_sp
22
23                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
24__heap_base
25Heap_Mem        SPACE   Heap_Size
26__heap_limit
27
28                PRESERVE8
29                THUMB
30
31; Vector Table Mapped to Address 0 at Reset
32
33                AREA    RESET, DATA, READONLY
34                EXPORT __Vectors
35
36__Vectors
37                DCD     __initial_sp                    ; Top of Stack
38                DCD     Reset_Handler                   ; Reset Handler
39                DCD     NMI_Handler                     ; NMI Handler
40                DCD     HardFault_Handler               ; Hard Fault Handler
41                DCD     MemManage_Handler               ; MPU Fault Handler
42                DCD     0                               ; Reserved
43                DCD     0                               ; Reserved
44                DCD     0                               ; Reserved
45                DCD     0                               ; Reserved
46                DCD     0                               ; Reserved
47                DCD     0                               ; Reserved
48                DCD     SVC_Handler                     ; SVCall Handler
49                DCD     0                               ; Reserved
50                DCD     0                               ; Reserved
51                DCD     PendSV_Handler                  ; PendSV Handler
52                DCD     SysTick_Handler                 ; SysTick Handler
53
54                ; External Interrupts
55                DCD     WDT_IRQHandler                  ; 0:  WDT_IRQHandler
56                DCD     RTC_IRQHandler                  ; 1:  RTC_IRQHandler
57                DCD     EFC_IRQHandler                  ; 2:  EFC_IRQHandler
58                DCD     GPIOAB_IRQHandler               ; 3:  GPIOAB_IRQHandler
59                DCD     GPIOCD_IRQHandler               ; 4:  GPIOCD_IRQHandler
60                DCD     EXTI_IRQHandler                 ; 5:  EXTI_IRQHandler
61                DCD     SRAM_PARITY_IRQHandler          ; 6:  SRAM_PARITY_IRQHandler
62                DCD     CLKRDY_IRQHandler               ; 7:  CLKRDY_IRQHandler
63                DCD     LCD_IRQHandler                  ; 8:  LCD_IRQHandler
64                DCD     DMA_IRQHandler                  ; 9:  DMA_IRQHandler
65                DCD     UART3_IRQHandler                ; 10: UART3_IRQHandler
66                DCD     TKEY_IRQHandler                 ; 11: TKEY_IRQHandler
67                DCD     ADC_IRQHandler                  ; 12: ADC_IRQHandler
68                DCD     TIM1_BRK_UP_TRG_COM_IRQHandler  ; 13: TIM1_BRK_UP_TRG_COM_IRQHandler
69                DCD     TIM1_CC_IRQHandler              ; 14: TIM1_CC_IRQHandler
70                DCD     RSV_IRQHandler                  ; 15: Reserved
71                DCD     TIM3_IRQHandler                 ; 16: TIM3_IRQHandler
72                DCD     TIM6_IRQHandler                 ; 17: TIM6_IRQHandler
73                DCD     RSV_IRQHandler                  ; 18: Reserved
74                DCD     TIM14_IRQHandler                ; 19: TIM14_IRQHandler
75                DCD     TIM15_IRQHandler                ; 20: TIM15_IRQHandler
76                DCD     TIM16_IRQHandler                ; 21: TIM16_IRQHandler
77                DCD     TIM17_IRQHandler                ; 22: TIM17_IRQHandler
78                DCD     I2C1_IRQHandler                 ; 23: I2C1_IRQHandler
79                DCD     I2C2_IRQHandler                 ; 24: I2C2_IRQHandler
80                DCD     SPI1_IRQHandler                 ; 25: SPI1_IRQHandler
81                DCD     SPI2_IRQHandler                 ; 26: SPI2_IRQHandler
82                DCD     UART1_IRQHandler                ; 27: UART1_IRQHandler
83                DCD     UART2_IRQHandler                ; 28: UART2_IRQHandler
84                DCD     LPUART_IRQHandler               ; 29: LPUART_IRQHandler
85                DCD     CAN1_IRQHandler                 ; 30: CAN1_IRQHandler
86                DCD     AES_IRQHandler                  ; 31: AES_IRQHandler
87
88                AREA    |.text|, CODE, READONLY
89
90Reset_Handler     PROC
91                  EXPORT  Reset_Handler             [WEAK]
92                  IMPORT  __main
93                  LDR     R0, =__main
94                  BX      R0
95                  ENDP
96
97
98NMI_Handler       PROC
99                  EXPORT  NMI_Handler               [WEAK]
100                  B       .
101                  ENDP
102HardFault_Handler PROC
103                  EXPORT  HardFault_Handler         [WEAK]
104                  B       .
105                  ENDP
106MemManage_Handler PROC
107                  EXPORT  MemManage_Handler         [WEAK]
108                  B       .
109                  ENDP
110SVC_Handler       PROC
111                  EXPORT  SVC_Handler               [WEAK]
112                  B       .
113                  ENDP
114PendSV_Handler    PROC
115                  EXPORT  PendSV_Handler            [WEAK]
116                  B       .
117                  ENDP
118SysTick_Handler   PROC
119                  EXPORT  SysTick_Handler           [WEAK]
120                  B       .
121                  ENDP
122
123Default_Handler PROC
124                EXPORT   WDT_IRQHandler                 [WEAK]
125                EXPORT   RTC_IRQHandler                 [WEAK]
126                EXPORT   EFC_IRQHandler                 [WEAK]
127                EXPORT   GPIOAB_IRQHandler              [WEAK]
128                EXPORT   GPIOCD_IRQHandler              [WEAK]
129                EXPORT   EXTI_IRQHandler                [WEAK]
130                EXPORT   SRAM_PARITY_IRQHandler         [WEAK]
131                EXPORT   CLKRDY_IRQHandler              [WEAK]
132                EXPORT   LCD_IRQHandler                 [WEAK]
133                EXPORT   DMA_IRQHandler                 [WEAK]
134                EXPORT   UART3_IRQHandler               [WEAK]
135                EXPORT   TKEY_IRQHandler                [WEAK]
136                EXPORT   ADC_IRQHandler                 [WEAK]
137                EXPORT   TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK]
138                EXPORT   TIM1_CC_IRQHandler             [WEAK]
139                EXPORT   TIM3_IRQHandler                [WEAK]
140                EXPORT   TIM6_IRQHandler                [WEAK]
141                EXPORT   TIM14_IRQHandler               [WEAK]
142                EXPORT   TIM15_IRQHandler               [WEAK]
143                EXPORT   TIM16_IRQHandler               [WEAK]
144                EXPORT   TIM17_IRQHandler               [WEAK]
145                EXPORT   I2C1_IRQHandler                [WEAK]
146                EXPORT   I2C2_IRQHandler                [WEAK]
147                EXPORT   SPI1_IRQHandler                [WEAK]
148                EXPORT   SPI2_IRQHandler                [WEAK]
149                EXPORT   UART1_IRQHandler               [WEAK]
150                EXPORT   UART2_IRQHandler               [WEAK]
151                EXPORT   LPUART_IRQHandler              [WEAK]
152                EXPORT   CAN1_IRQHandler                [WEAK]
153                EXPORT   AES_IRQHandler                 [WEAK]
154                EXPORT   RSV_IRQHandler                 [WEAK]
155WDT_IRQHandler
156RTC_IRQHandler
157EFC_IRQHandler
158GPIOAB_IRQHandler
159GPIOCD_IRQHandler
160EXTI_IRQHandler
161SRAM_PARITY_IRQHandler
162CLKRDY_IRQHandler
163LCD_IRQHandler
164DMA_IRQHandler
165UART3_IRQHandler
166TKEY_IRQHandler
167ADC_IRQHandler
168TIM1_BRK_UP_TRG_COM_IRQHandler
169TIM1_CC_IRQHandler
170TIM3_IRQHandler
171TIM6_IRQHandler
172TIM14_IRQHandler
173TIM15_IRQHandler
174TIM16_IRQHandler
175TIM17_IRQHandler
176I2C1_IRQHandler
177I2C2_IRQHandler
178SPI1_IRQHandler
179SPI2_IRQHandler
180UART1_IRQHandler
181UART2_IRQHandler
182LPUART_IRQHandler
183CAN1_IRQHandler
184AES_IRQHandler
185RSV_IRQHandler
186                B       .
187                ENDP
188
189                ALIGN
190
191; User Initial Stack & Heap
192
193                IF      :DEF:__MICROLIB
194
195                EXPORT  __initial_sp
196                EXPORT  __heap_base
197                EXPORT  __heap_limit
198
199                ELSE
200
201                IMPORT  __use_two_region_memory
202                EXPORT  __user_initial_stackheap
203__user_initial_stackheap
204
205                LDR     R0, =  Heap_Mem
206                LDR     R1, =(Stack_Mem + Stack_Size)
207                LDR     R2, = (Heap_Mem +  Heap_Size)
208                LDR     R3, = Stack_Mem
209                BX      LR
210
211                ALIGN
212
213                ENDIF
214
215                END
216