1;* File Name          : Startup_ACM32F4.s
2;* Version            : V1.0.0
3;* Date               : 2020
4;* Description        : ACM32F4 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 Cortex-M33 processor is in Thread mode,
13;*                      priority is Privileged, and the Stack is set to Main.
14;********************************************************************************
15;* @attention
16;*
17;* All rights reserved.
18;*******************************************************************************
19
20Stack_Size      EQU     0x00000800
21Heap_Size       EQU     0x00000000
22
23                AREA    STACK, NOINIT, READWRITE, ALIGN=3
24Stack_Mem       SPACE   Stack_Size
25__initial_sp
26
27                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
28__heap_base
29Heap_Mem        SPACE   Heap_Size
30__heap_limit
31
32                PRESERVE8
33                THUMB
34
35; Vector Table Mapped to Address 0 at Reset
36
37                AREA    RESET, DATA, READONLY
38                EXPORT __Vectors
39
40__Vectors
41                DCD     __initial_sp                    ; Top of Stack
42                DCD     Reset_Handler                   ; Reset Handler
43                DCD     NMI_Handler                     ; NMI Handler
44                DCD     HardFault_Handler               ; Hard Fault Handler
45                DCD     MemManage_Handler               ; MPU Fault Handler
46                DCD     BusFault_Handler                ; Bus Fault Handler
47                DCD     UsageFault_Handler              ; Usage Fault Handler
48                DCD     0                               ; Reserved
49                DCD     0                               ; Reserved
50                DCD     0                               ; Reserved
51                DCD     0                               ; Reserved
52                DCD     SVC_Handler                     ; SVCall Handler
53                DCD     DebugMon_Handler                ; Debug Monitor Handler
54                DCD     0                               ; Reserved
55                DCD     PendSV_Handler                  ; PendSV Handler
56                DCD     SysTick_Handler                 ; SysTick Handler
57
58                ; External Interrupts
59                DCD     WDT_IRQHandler                  ; 0:  WDT_IRQHandler
60                DCD     RTC_IRQHandler                  ; 1:  RTC_IRQHandler
61                DCD     EFC_IRQHandler                  ; 2:  EFC_IRQHandler
62                DCD     GPIOAB_IRQHandler               ; 3:  GPIOAB_IRQHandler
63                DCD     GPIOCD_IRQHandler               ; 4:  GPIOCD_IRQHandler
64                DCD     EXTI_IRQHandler                 ; 5:  EXTI_IRQHandler
65                DCD     SRAM_PARITY_IRQHandler          ; 6:  SRAM_PARITY_IRQHandler
66                DCD     CLKRDY_IRQHandler               ; 7:  CLKRDY_IRQHandler
67                DCD     UART4_IRQHandler                ; 8:  UART4_IRQHandler
68                DCD     DMA_IRQHandler                  ; 9:  DMA_IRQHandler
69                DCD     UART3_IRQHandler                ; 10: UART3_IRQHandler
70                DCD     RSV_IRQHandler                  ; 11: RSV
71                DCD     ADC_IRQHandler                  ; 12: ADC_IRQHandler
72                DCD     TIM1_BRK_UP_TRG_COM_IRQHandler  ; 13: TIM1_BRK_UP_TRG_COM_IRQHandler
73                DCD     TIM1_CC_IRQHandler              ; 14: TIM1_CC_IRQHandler
74                DCD     TIM2_IRQHandler                 ; 15: TIM2_IRQHandler
75                DCD     TIM3_IRQHandler                 ; 16: TIM3_IRQHandler
76                DCD     TIM6_IRQHandler                 ; 17: TIM6_IRQHandler
77                DCD     TIM7_IRQHandler                 ; 18: TIM7_IRQHandler
78                DCD     TIM14_IRQHandler                ; 19: TIM14_IRQHandler
79                DCD     TIM15_IRQHandler                ; 20: TIM15_IRQHandler
80                DCD     TIM16_IRQHandler                ; 21: TIM16_IRQHandler
81                DCD     TIM17_IRQHandler                ; 22: TIM17_IRQHandler
82                DCD     I2C1_IRQHandler                 ; 23: I2C1_IRQHandler
83                DCD     I2C2_IRQHandler                 ; 24: I2C2_IRQHandler
84                DCD     SPI1_IRQHandler                 ; 25: SPI1_IRQHandler
85                DCD     SPI2_IRQHandler                 ; 26: SPI2_IRQHandler
86                DCD     UART1_IRQHandler                ; 27: UART1_IRQHandler
87                DCD     UART2_IRQHandler                ; 28: UART2_IRQHandler
88                DCD     LPUART_IRQHandler               ; 29: LPUART_IRQHandler
89                DCD     SPI3_IRQHandler                 ; 30: SPI3_IRQHandler
90                DCD     AES_IRQHandler                  ; 31: AES_IRQHandler
91                DCD     USB_IRQHandler                  ; 32: USB_IRQHandler
92                DCD     DAC_IRQHandler                  ; 33: DAC_IRQHandler
93                DCD     I2S_IRQHandler                  ; 34: I2S_IRQHandler
94                DCD     GPIOEF_IRQHandler               ; 35: GPIOEF_IRQHandler
95                DCD     CAN1_IRQHandler                 ; 36: CAN1_IRQHandler
96                DCD     CAN2_IRQHandler                 ; 37: CAN2_IRQHandler
97                DCD     FPU_IRQHandler                  ; 38: FPU_IRQHandler
98                DCD     TIM4_IRQHandler                 ; 39: TIM4_IRQHandler
99                DCD     SPI4_IRQHandler                 ; 40: SPI4_IRQHandler
100                AREA    |.text|, CODE, READONLY
101
102Reset_Handler   PROC
103                EXPORT  Reset_Handler             [WEAK]
104                IMPORT  System_Core_Config
105                IMPORT  __main
106                LDR     R0, =System_Core_Config
107                BLX     R0
108                LDR     R0, =__main
109                BX      R0
110                ENDP
111
112
113NMI_Handler     PROC
114                EXPORT  NMI_Handler                [WEAK]
115                B       .
116                ENDP
117HardFault_Handler\
118                PROC
119                EXPORT  HardFault_Handler          [WEAK]
120                B       .
121                ENDP
122MemManage_Handler\
123                PROC
124                EXPORT  MemManage_Handler          [WEAK]
125                B       .
126                ENDP
127BusFault_Handler\
128                PROC
129                EXPORT  BusFault_Handler           [WEAK]
130                B       .
131                ENDP
132UsageFault_Handler\
133                PROC
134                EXPORT  UsageFault_Handler         [WEAK]
135                B       .
136                ENDP
137SVC_Handler     PROC
138                EXPORT  SVC_Handler                [WEAK]
139                B       .
140                ENDP
141DebugMon_Handler\
142                PROC
143                EXPORT  DebugMon_Handler           [WEAK]
144                B       .
145                ENDP
146PendSV_Handler  PROC
147                EXPORT  PendSV_Handler             [WEAK]
148                B       .
149                ENDP
150SysTick_Handler PROC
151                EXPORT  SysTick_Handler            [WEAK]
152                B       .
153                ENDP
154
155Default_Handler PROC
156                EXPORT   WDT_IRQHandler                 [WEAK]
157                EXPORT   RTC_IRQHandler                 [WEAK]
158                EXPORT   EFC_IRQHandler                 [WEAK]
159                EXPORT   GPIOAB_IRQHandler              [WEAK]
160                EXPORT   GPIOCD_IRQHandler              [WEAK]
161                EXPORT   EXTI_IRQHandler                [WEAK]
162                EXPORT   SRAM_PARITY_IRQHandler         [WEAK]
163                EXPORT   CLKRDY_IRQHandler              [WEAK]
164                EXPORT   UART4_IRQHandler               [WEAK]
165                EXPORT   DMA_IRQHandler                 [WEAK]
166                EXPORT   UART3_IRQHandler               [WEAK]
167                EXPORT   RSV_IRQHandler                 [WEAK]
168                EXPORT   ADC_IRQHandler                 [WEAK]
169                EXPORT   TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK]
170                EXPORT   TIM1_CC_IRQHandler             [WEAK]
171                EXPORT   TIM2_IRQHandler                [WEAK]
172                EXPORT   TIM3_IRQHandler                [WEAK]
173                EXPORT   TIM6_IRQHandler                [WEAK]
174                EXPORT   TIM7_IRQHandler                [WEAK]
175                EXPORT   TIM14_IRQHandler               [WEAK]
176                EXPORT   TIM15_IRQHandler               [WEAK]
177                EXPORT   TIM16_IRQHandler               [WEAK]
178                EXPORT   TIM17_IRQHandler               [WEAK]
179                EXPORT   I2C1_IRQHandler                [WEAK]
180                EXPORT   I2C2_IRQHandler                [WEAK]
181                EXPORT   SPI1_IRQHandler                [WEAK]
182                EXPORT   SPI2_IRQHandler                [WEAK]
183                EXPORT   UART1_IRQHandler               [WEAK]
184                EXPORT   UART2_IRQHandler               [WEAK]
185                EXPORT   LPUART_IRQHandler              [WEAK]
186                EXPORT   SPI3_IRQHandler                [WEAK]
187                EXPORT   AES_IRQHandler                 [WEAK]
188                EXPORT   USB_IRQHandler                 [WEAK]
189                EXPORT   RSV_IRQHandler                 [WEAK]
190                EXPORT   DAC_IRQHandler                 [WEAK]
191                EXPORT   I2S_IRQHandler                 [WEAK]
192                EXPORT   GPIOEF_IRQHandler              [WEAK]
193                EXPORT   CAN1_IRQHandler                [WEAK]
194                EXPORT   CAN2_IRQHandler                [WEAK]
195                EXPORT   FPU_IRQHandler                 [WEAK]
196                EXPORT   TIM4_IRQHandler                [WEAK]
197                EXPORT   SPI4_IRQHandler                [WEAK]
198WDT_IRQHandler
199RTC_IRQHandler
200EFC_IRQHandler
201GPIOAB_IRQHandler
202GPIOCD_IRQHandler
203EXTI_IRQHandler
204SRAM_PARITY_IRQHandler
205CLKRDY_IRQHandler
206UART4_IRQHandler
207DMA_IRQHandler
208UART3_IRQHandler
209ADC_IRQHandler
210TIM1_BRK_UP_TRG_COM_IRQHandler
211TIM1_CC_IRQHandler
212TIM2_IRQHandler
213TIM3_IRQHandler
214TIM6_IRQHandler
215TIM7_IRQHandler
216TIM14_IRQHandler
217TIM15_IRQHandler
218TIM16_IRQHandler
219TIM17_IRQHandler
220I2C1_IRQHandler
221I2C2_IRQHandler
222SPI1_IRQHandler
223SPI2_IRQHandler
224UART1_IRQHandler
225UART2_IRQHandler
226LPUART_IRQHandler
227SPI3_IRQHandler
228AES_IRQHandler
229USB_IRQHandler
230RSV_IRQHandler
231DAC_IRQHandler
232I2S_IRQHandler
233GPIOEF_IRQHandler
234CAN1_IRQHandler
235CAN2_IRQHandler
236FPU_IRQHandler
237TIM4_IRQHandler
238SPI4_IRQHandler
239
240                B       .
241
242                ENDP
243
244                ALIGN
245;*******************************************************************************
246; User Stack and Heap initialization
247;*******************************************************************************
248
249                IF      :DEF:__MICROLIB
250
251                EXPORT  __initial_sp
252                EXPORT  __heap_base
253                EXPORT  __heap_limit
254
255                ELSE
256
257                IMPORT  __use_two_region_memory
258                EXPORT  __user_initial_stackheap
259__user_initial_stackheap
260
261                LDR     R0, =  Heap_Mem
262                LDR     R1, =(Stack_Mem + Stack_Size)
263                LDR     R2, = (Heap_Mem +  Heap_Size)
264                LDR     R3, = Stack_Mem
265                BX      LR
266
267                ALIGN
268
269                ENDIF
270
271                END
272