1;/*!
2; * @file        startup_apm32f10x_cl.s
3; *
4; * @brief       CMSIS Cortex-M3 based Core Device Startup File for Device startup_apm32f10x_cl
5; *
6; * @version     V1.0.0
7; *
8; * @date        2022-07-25
9; *
10; * @attention
11; *
12; *  Copyright (C) 2020-2022 Geehy Semiconductor
13; *
14; *  You may not use this file except in compliance with the
15; *  GEEHY COPYRIGHT NOTICE (GEEHY SOFTWARE PACKAGE LICENSE).
16; *
17; *  The program is only for reference, which is distributed in the hope
18; *  that it will be useful and instructional for customers to develop
19; *  their software. Unless required by applicable law or agreed to in
20; *  writing, the program is distributed on an "AS IS" BASIS, WITHOUT
21; *  ANY WARRANTY OR CONDITIONS OF ANY KIND, either express or implied.
22; *  See the GEEHY SOFTWARE PACKAGE LICENSE for the governing permissions
23; *  and limitations under the License.
24; */
25
26; <h> Stack Configuration
27;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
28; </h>
29
30Stack_Size      EQU     0x00000400
31
32                AREA    STACK, NOINIT, READWRITE, ALIGN=3
33Stack_Mem       SPACE   Stack_Size
34__initial_sp
35
36
37; <h> Heap Configuration
38;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
39; </h>
40
41Heap_Size       EQU     0x00000200
42
43                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
44__heap_base
45Heap_Mem        SPACE   Heap_Size
46__heap_limit
47
48                PRESERVE8
49                THUMB
50
51
52; Vector Table Mapped to Address 0 at Reset
53                AREA    RESET, DATA, READONLY
54                EXPORT  __Vectors
55                EXPORT  __Vectors_End
56                EXPORT  __Vectors_Size
57
58__Vectors       DCD     __initial_sp                 ; Top of Stack
59                DCD     Reset_Handler                ; Reset Handler
60                DCD     NMI_Handler                  ; NMI Handler
61                DCD     HardFault_Handler            ; Hard Fault Handler
62                DCD     MemManage_Handler            ; MPU Fault Handler
63                DCD     BusFault_Handler             ; Bus Fault Handler
64                DCD     UsageFault_Handler           ; Usage Fault Handler
65                DCD     0                            ; Reserved
66                DCD     0                            ; Reserved
67                DCD     0                            ; Reserved
68                DCD     0                            ; Reserved
69                DCD     SVC_Handler                  ; SVCall Handler
70                DCD     DebugMon_Handler             ; Debug Monitor Handler
71                DCD     0                            ; Reserved
72                DCD     PendSV_Handler               ; PendSV Handler
73                DCD     SysTick_Handler              ; SysTick Handler
74
75                ; External Interrupts
76                DCD     WWDT_IRQHandler              ; Window Watchdog
77                DCD     PVD_IRQHandler               ; PVD through EINT Line detect
78                DCD     TAMPER_IRQHandler            ; Tamper
79                DCD     RTC_IRQHandler               ; RTC
80                DCD     FLASH_IRQHandler             ; Flash
81                DCD     RCM_IRQHandler               ; RCM
82                DCD     EINT0_IRQHandler             ; EINT Line 0
83                DCD     EINT1_IRQHandler             ; EINT Line 1
84                DCD     EINT2_IRQHandler             ; EINT Line 2
85                DCD     EINT3_IRQHandler             ; EINT Line 3
86                DCD     EINT4_IRQHandler             ; EINT Line 4
87                DCD     DMA1_Channel1_IRQHandler     ; DMA1 Channel 1
88                DCD     DMA1_Channel2_IRQHandler     ; DMA1 Channel 2
89                DCD     DMA1_Channel3_IRQHandler     ; DMA1 Channel 3
90                DCD     DMA1_Channel4_IRQHandler     ; DMA1 Channel 4
91                DCD     DMA1_Channel5_IRQHandler     ; DMA1 Channel 5
92                DCD     DMA1_Channel6_IRQHandler     ; DMA1 Channel 6
93                DCD     DMA1_Channel7_IRQHandler     ; DMA1 Channel 7
94                DCD     ADC1_2_IRQHandler            ; ADC1 & ADC2
95                DCD     CAN1_TX_IRQHandler           ; CAN1 TX
96                DCD     CAN1_RX0_IRQHandler          ; CAN1 RX0
97                DCD     CAN1_RX1_IRQHandler          ; CAN1 RX1
98                DCD     CAN1_SCE_IRQHandler          ; CAN1 SCE
99                DCD     EINT9_5_IRQHandler           ; EINT Line 9..5
100                DCD     TMR1_BRK_IRQHandler          ; TMR1 Break
101                DCD     TMR1_UP_IRQHandler           ; TMR1 Update
102                DCD     TMR1_TRG_COM_IRQHandler      ; TMR1 Trigger and Commutation
103                DCD     TMR1_CC_IRQHandler           ; TMR1 Capture Compare
104                DCD     TMR2_IRQHandler              ; TMR2
105                DCD     TMR3_IRQHandler              ; TMR3
106                DCD     TMR4_IRQHandler              ; TMR4
107                DCD     I2C1_EV_IRQHandler           ; I2C1 Event
108                DCD     I2C1_ER_IRQHandler           ; I2C1 Error
109                DCD     I2C2_EV_IRQHandler           ; I2C2 Event
110                DCD     I2C2_ER_IRQHandler           ; I2C2 Error
111                DCD     SPI1_IRQHandler              ; SPI1
112                DCD     SPI2_IRQHandler              ; SPI2
113                DCD     USART1_IRQHandler            ; USART1
114                DCD     USART2_IRQHandler            ; USART2
115                DCD     USART3_IRQHandler            ; USART3
116                DCD     EINT15_10_IRQHandler         ; EINT Line 15..10
117                DCD     RTCAlarm_IRQHandler          ; RTC Alarm through EINT Line
118                DCD     OTG_FS_WKUP_IRQHandler       ; USBD Wakeup from suspend
119                DCD     0                            ; Reserved
120                DCD     0                            ; Reserved
121                DCD     0                            ; Reserved
122                DCD     0                            ; Reserved
123                DCD     0                            ; Reserved
124                DCD     0                            ; Reserved
125                DCD     0                            ; Reserved
126                DCD     TMR5_IRQHandler              ; TMR5
127                DCD     SPI3_IRQHandler              ; SPI3
128                DCD     UART4_IRQHandler             ; UART4
129                DCD     UART5_IRQHandler             ; UART5
130                DCD     TMR6_IRQHandler              ; TMR6
131                DCD     TMR7_IRQHandler              ; TMR7
132                DCD     DMA2_Channel1_IRQHandler     ; DMA2 Channel1
133                DCD     DMA2_Channel2_IRQHandler     ; DMA2 Channel2
134                DCD     DMA2_Channel3_IRQHandler     ; DMA2 Channel3
135                DCD     DMA2_Channel4_IRQHandler     ; DMA2 Channel4
136                DCD     DMA2_Channel5_IRQHandler     ; DMA2 Channel5
137                DCD     ETH_IRQHandler               ; ETH
138                DCD     ETH_WKUP_IRQHandler          ; ETH Wake up
139                DCD     CAN2_TX_IRQHandler           ; CAN2 TX
140                DCD     CAN2_RX0_IRQHandler          ; CAN2 RX0
141                DCD     CAN2_RX1_IRQHandler          ; CAN2 RX1
142                DCD     CAN2_SCE_IRQHandler          ; CAN2 SCE
143                DCD     OTG_FS_IRQHandler            ; OTG FS
144__Vectors_End
145
146__Vectors_Size  EQU  __Vectors_End - __Vectors
147
148                AREA    |.text|, CODE, READONLY
149
150; Reset handler
151Reset_Handler   PROC
152                EXPORT  Reset_Handler                [WEAK]
153                IMPORT  __main
154                IMPORT  SystemInit
155                LDR     R0, =SystemInit
156                BLX     R0
157                LDR     R0, =__main
158                BX      R0
159                ENDP
160
161; Dummy Exception Handlers (infinite loops which can be modified)
162
163NMI_Handler     PROC
164                EXPORT  NMI_Handler                  [WEAK]
165                B       .
166                ENDP
167HardFault_Handler\
168                PROC
169                EXPORT  HardFault_Handler            [WEAK]
170                B       .
171                ENDP
172MemManage_Handler\
173                PROC
174                EXPORT  MemManage_Handler            [WEAK]
175                B       .
176                ENDP
177BusFault_Handler\
178                PROC
179                EXPORT  BusFault_Handler             [WEAK]
180                B       .
181                ENDP
182UsageFault_Handler\
183                PROC
184                EXPORT  UsageFault_Handler           [WEAK]
185                B       .
186                ENDP
187SVC_Handler     PROC
188                EXPORT  SVC_Handler                  [WEAK]
189                B       .
190                ENDP
191DebugMon_Handler\
192                PROC
193                EXPORT  DebugMon_Handler             [WEAK]
194                B       .
195                ENDP
196PendSV_Handler  PROC
197                EXPORT  PendSV_Handler               [WEAK]
198                B       .
199                ENDP
200SysTick_Handler PROC
201                EXPORT  SysTick_Handler              [WEAK]
202                B       .
203                ENDP
204
205Default_Handler PROC
206
207                EXPORT  WWDT_IRQHandler              [WEAK]
208                EXPORT  PVD_IRQHandler               [WEAK]
209                EXPORT  TAMPER_IRQHandler            [WEAK]
210                EXPORT  RTC_IRQHandler               [WEAK]
211                EXPORT  FLASH_IRQHandler             [WEAK]
212                EXPORT  RCM_IRQHandler               [WEAK]
213                EXPORT  EINT0_IRQHandler             [WEAK]
214                EXPORT  EINT1_IRQHandler             [WEAK]
215                EXPORT  EINT2_IRQHandler             [WEAK]
216                EXPORT  EINT3_IRQHandler             [WEAK]
217                EXPORT  EINT4_IRQHandler             [WEAK]
218                EXPORT  DMA1_Channel1_IRQHandler     [WEAK]
219                EXPORT  DMA1_Channel2_IRQHandler     [WEAK]
220                EXPORT  DMA1_Channel3_IRQHandler     [WEAK]
221                EXPORT  DMA1_Channel4_IRQHandler     [WEAK]
222                EXPORT  DMA1_Channel5_IRQHandler     [WEAK]
223                EXPORT  DMA1_Channel6_IRQHandler     [WEAK]
224                EXPORT  DMA1_Channel7_IRQHandler     [WEAK]
225                EXPORT  ADC1_2_IRQHandler            [WEAK]
226                EXPORT  CAN1_TX_IRQHandler           [WEAK]
227                EXPORT  CAN1_RX0_IRQHandler          [WEAK]
228                EXPORT  CAN1_RX1_IRQHandler          [WEAK]
229                EXPORT  CAN1_SCE_IRQHandler          [WEAK]
230                EXPORT  EINT9_5_IRQHandler           [WEAK]
231                EXPORT  TMR1_BRK_IRQHandler          [WEAK]
232                EXPORT  TMR1_UP_IRQHandler           [WEAK]
233                EXPORT  TMR1_TRG_COM_IRQHandler      [WEAK]
234                EXPORT  TMR1_CC_IRQHandler           [WEAK]
235                EXPORT  TMR2_IRQHandler              [WEAK]
236                EXPORT  TMR3_IRQHandler              [WEAK]
237                EXPORT  TMR4_IRQHandler              [WEAK]
238                EXPORT  I2C1_EV_IRQHandler           [WEAK]
239                EXPORT  I2C1_ER_IRQHandler           [WEAK]
240                EXPORT  I2C2_EV_IRQHandler           [WEAK]
241                EXPORT  I2C2_ER_IRQHandler           [WEAK]
242                EXPORT  SPI1_IRQHandler              [WEAK]
243                EXPORT  SPI2_IRQHandler              [WEAK]
244                EXPORT  USART1_IRQHandler            [WEAK]
245                EXPORT  USART2_IRQHandler            [WEAK]
246                EXPORT  USART3_IRQHandler            [WEAK]
247                EXPORT  EINT15_10_IRQHandler         [WEAK]
248                EXPORT  RTCAlarm_IRQHandler          [WEAK]
249                EXPORT  OTG_FS_WKUP_IRQHandler       [WEAK]
250                EXPORT  TMR5_IRQHandler              [WEAK]
251                EXPORT  SPI3_IRQHandler              [WEAK]
252                EXPORT  UART4_IRQHandler             [WEAK]
253                EXPORT  UART5_IRQHandler             [WEAK]
254                EXPORT  TMR6_IRQHandler              [WEAK]
255                EXPORT  TMR7_IRQHandler              [WEAK]
256                EXPORT  DMA2_Channel1_IRQHandler     [WEAK]
257                EXPORT  DMA2_Channel2_IRQHandler     [WEAK]
258                EXPORT  DMA2_Channel3_IRQHandler     [WEAK]
259                EXPORT  DMA2_Channel4_IRQHandler     [WEAK]
260                EXPORT  DMA2_Channel5_IRQHandler     [WEAK]
261                EXPORT  ETH_IRQHandler               [WEAK]
262                EXPORT  ETH_WKUP_IRQHandler          [WEAK]
263                EXPORT  CAN2_TX_IRQHandler           [WEAK]
264                EXPORT  CAN2_RX0_IRQHandler          [WEAK]
265                EXPORT  CAN2_RX1_IRQHandler          [WEAK]
266                EXPORT  CAN2_SCE_IRQHandler          [WEAK]
267                EXPORT  OTG_FS_IRQHandler            [WEAK]
268
269WWDT_IRQHandler
270PVD_IRQHandler
271TAMPER_IRQHandler
272RTC_IRQHandler
273FLASH_IRQHandler
274RCM_IRQHandler
275EINT0_IRQHandler
276EINT1_IRQHandler
277EINT2_IRQHandler
278EINT3_IRQHandler
279EINT4_IRQHandler
280DMA1_Channel1_IRQHandler
281DMA1_Channel2_IRQHandler
282DMA1_Channel3_IRQHandler
283DMA1_Channel4_IRQHandler
284DMA1_Channel5_IRQHandler
285DMA1_Channel6_IRQHandler
286DMA1_Channel7_IRQHandler
287ADC1_2_IRQHandler
288CAN1_TX_IRQHandler
289CAN1_RX0_IRQHandler
290CAN1_RX1_IRQHandler
291CAN1_SCE_IRQHandler
292EINT9_5_IRQHandler
293TMR1_BRK_IRQHandler
294TMR1_UP_IRQHandler
295TMR1_TRG_COM_IRQHandler
296TMR1_CC_IRQHandler
297TMR2_IRQHandler
298TMR3_IRQHandler
299TMR4_IRQHandler
300I2C1_EV_IRQHandler
301I2C1_ER_IRQHandler
302I2C2_EV_IRQHandler
303I2C2_ER_IRQHandler
304SPI1_IRQHandler
305SPI2_IRQHandler
306USART1_IRQHandler
307USART2_IRQHandler
308USART3_IRQHandler
309EINT15_10_IRQHandler
310RTCAlarm_IRQHandler
311OTG_FS_WKUP_IRQHandler
312TMR5_IRQHandler
313SPI3_IRQHandler
314UART4_IRQHandler
315UART5_IRQHandler
316TMR6_IRQHandler
317TMR7_IRQHandler
318DMA2_Channel1_IRQHandler
319DMA2_Channel2_IRQHandler
320DMA2_Channel3_IRQHandler
321DMA2_Channel4_IRQHandler
322DMA2_Channel5_IRQHandler
323ETH_IRQHandler
324ETH_WKUP_IRQHandler
325CAN2_TX_IRQHandler
326CAN2_RX0_IRQHandler
327CAN2_RX1_IRQHandler
328CAN2_SCE_IRQHandler
329OTG_FS_IRQHandler
330                B       .
331
332                ENDP
333
334                ALIGN
335
336;*******************************************************************************
337; User Stack and Heap initialization
338;*******************************************************************************
339                 IF      :DEF:__MICROLIB
340
341                 EXPORT  __initial_sp
342                 EXPORT  __heap_base
343                 EXPORT  __heap_limit
344
345                 ELSE
346
347                 IMPORT  __use_two_region_memory
348                 EXPORT  __user_initial_stackheap
349
350__user_initial_stackheap
351
352                 LDR     R0, = Heap_Mem
353                 LDR     R1, = (Stack_Mem + Stack_Size)
354                 LDR     R2, = (Heap_Mem  + Heap_Size)
355                 LDR     R3, = Stack_Mem
356                 BX      LR
357
358                 ALIGN
359
360                 ENDIF
361
362                 END
363
364;*******************************END OF FILE************************************
365
366