1;/*!
2; * @file       startup_apm32f072.s
3; *
4; * @brief      APM32F072 devices vector table for EWARM toolchain.
5; *
6; * @version    V1.0.0
7; *
8; * @date       2022-02-21
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        MODULE  ?cstartup
27
28        SECTION CSTACK:DATA:NOROOT(3)
29
30        SECTION .intvec:CODE:NOROOT(2)
31
32        EXTERN  __iar_program_start
33        EXTERN  SystemInit
34        PUBLIC  __vector_table
35
36        DATA
37__vector_table
38        DCD     sfe(CSTACK)
39        DCD     Reset_Handler                  ; Reset Handler
40
41        DCD     NMI_Handler                    ; NMI Handler
42        DCD     HardFault_Handler              ; Hard Fault Handler
43        DCD     0                              ; Reserved
44        DCD     0                              ; Reserved
45        DCD     0                              ; Reserved
46        DCD     0                              ; Reserved
47        DCD     0                              ; Reserved
48        DCD     0                              ; Reserved
49        DCD     0                              ; Reserved
50        DCD     SVC_Handler                    ; SVCall Handler
51        DCD     0                              ; Reserved
52        DCD     0                              ; Reserved
53        DCD     PendSV_Handler                 ; PendSV Handler
54        DCD     SysTick_Handler                ; SysTick Handler
55
56        ; External Interrupts
57        DCD     WWDT_IRQHandler                ; Window Watchdog
58        DCD     PVD_VDDIO2_IRQHandler          ; PVD and VDDIO2 through EINT Line detect
59        DCD     RTC_IRQHandler                 ; RTC through EXTI Line
60        DCD     FLASH_IRQHandler               ; FLASH
61        DCD     RCM_CRS_IRQHandler             ; RCM and CRS
62        DCD     EINT0_1_IRQHandler             ; EINT Line 0 and 1
63        DCD     EINT2_3_IRQHandler             ; EINT Line 2 and 3
64        DCD     EINT4_15_IRQHandler            ; EINT Line 4 to 15
65        DCD     TSC_IRQHandler                 ; TSC
66        DCD     DMA1_CH1_IRQHandler            ; DMA1 Channel 1
67        DCD     DMA1_CH2_3_IRQHandler          ; DMA1 Channel 2 and Channel 3
68        DCD     DMA1_CH4_5_6_7_IRQHandler      ; DMA1 Channel 4, Channel 5, Channel 6 and Channel 7
69        DCD     ADC1_COMP_IRQHandler           ; ADC1, COMP1 and COMP2
70        DCD     TMR1_BRK_UP_TRG_COM_IRQHandler ; TMR1 Break, Update, Trigger and Commutation
71        DCD     TMR1_CC_IRQHandler             ; TMR1 Capture Compare
72        DCD     TMR2_IRQHandler                ; TMR2
73        DCD     TMR3_IRQHandler                ; TMR3
74        DCD     TMR6_DAC_IRQHandler            ; TMR6 and DAC
75        DCD     TMR7_IRQHandler                ; TMR7
76        DCD     TMR14_IRQHandler               ; TMR14
77        DCD     TMR15_IRQHandler               ; TMR15
78        DCD     TMR16_IRQHandler               ; TMR16
79        DCD     TMR17_IRQHandler               ; TMR17
80        DCD     I2C1_IRQHandler                ; I2C1
81        DCD     I2C2_IRQHandler                ; I2C2
82        DCD     SPI1_IRQHandler                ; SPI1
83        DCD     SPI2_IRQHandler                ; SPI2
84        DCD     USART1_IRQHandler              ; USART1
85        DCD     USART2_IRQHandler              ; USART2
86        DCD     USART3_4_IRQHandler            ; USART3 and USART4
87        DCD     CEC_CAN_IRQHandler             ; CEC and CAN
88        DCD     USBD_IRQHandler                ; USB
89
90        THUMB
91
92        PUBWEAK Reset_Handler
93        SECTION .text:CODE:NOROOT:REORDER(2)
94Reset_Handler
95
96        LDR     R0, =sfe(CSTACK)          ; set stack pointer
97        MSR     MSP, R0
98
99        LDR R0,=0x00000004
100        LDR R1, [R0]
101        LSRS R1, R1, #24
102        LDR R2,=0x1F
103        CMP R1, R2
104
105        BNE ApplicationStart
106
107        LDR R0,=0x40021018
108        LDR R1,=0x00000001
109        STR R1, [R0]
110
111        LDR R0,=0x40010000
112        LDR R1,=0x00000000
113        STR R1, [R0]
114ApplicationStart
115        LDR     R0, =SystemInit
116        BLX     R0
117        LDR     R0, =__iar_program_start
118        BX      R0
119
120        PUBWEAK NMI_Handler
121        SECTION .text:CODE:NOROOT:REORDER(1)
122NMI_Handler
123        B NMI_Handler
124
125        PUBWEAK HardFault_Handler
126        SECTION .text:CODE:NOROOT:REORDER(1)
127HardFault_Handler
128        B HardFault_Handler
129
130        PUBWEAK SVC_Handler
131        SECTION .text:CODE:NOROOT:REORDER(1)
132SVC_Handler
133        B SVC_Handler
134
135        PUBWEAK PendSV_Handler
136        SECTION .text:CODE:NOROOT:REORDER(1)
137PendSV_Handler
138        B PendSV_Handler
139
140        PUBWEAK SysTick_Handler
141        SECTION .text:CODE:NOROOT:REORDER(1)
142SysTick_Handler
143        B SysTick_Handler
144
145        PUBWEAK WWDT_IRQHandler
146        SECTION .text:CODE:NOROOT:REORDER(1)
147WWDT_IRQHandler
148        B WWDT_IRQHandler
149
150        PUBWEAK PVD_VDDIO2_IRQHandler
151        SECTION .text:CODE:NOROOT:REORDER(1)
152PVD_VDDIO2_IRQHandler
153        B PVD_VDDIO2_IRQHandler
154
155        PUBWEAK RTC_IRQHandler
156        SECTION .text:CODE:NOROOT:REORDER(1)
157RTC_IRQHandler
158        B RTC_IRQHandler
159
160        PUBWEAK FLASH_IRQHandler
161        SECTION .text:CODE:NOROOT:REORDER(1)
162FLASH_IRQHandler
163        B FLASH_IRQHandler
164
165        PUBWEAK RCM_CRS_IRQHandler
166        SECTION .text:CODE:NOROOT:REORDER(1)
167RCM_CRS_IRQHandler
168        B RCM_CRS_IRQHandler
169
170        PUBWEAK EINT0_1_IRQHandler
171        SECTION .text:CODE:NOROOT:REORDER(1)
172EINT0_1_IRQHandler
173        B EINT0_1_IRQHandler
174
175        PUBWEAK EINT2_3_IRQHandler
176        SECTION .text:CODE:NOROOT:REORDER(1)
177EINT2_3_IRQHandler
178        B EINT2_3_IRQHandler
179
180        PUBWEAK EINT4_15_IRQHandler
181        SECTION .text:CODE:NOROOT:REORDER(1)
182EINT4_15_IRQHandler
183        B EINT4_15_IRQHandler
184
185        PUBWEAK TSC_IRQHandler
186        SECTION .text:CODE:NOROOT:REORDER(1)
187TSC_IRQHandler
188        B TSC_IRQHandler
189
190        PUBWEAK DMA1_CH1_IRQHandler
191        SECTION .text:CODE:NOROOT:REORDER(1)
192DMA1_CH1_IRQHandler
193        B DMA1_CH1_IRQHandler
194
195        PUBWEAK DMA1_CH2_3_IRQHandler
196        SECTION .text:CODE:NOROOT:REORDER(1)
197DMA1_CH2_3_IRQHandler
198        B DMA1_CH2_3_IRQHandler
199
200        PUBWEAK DMA1_CH4_5_6_7_IRQHandler
201        SECTION .text:CODE:NOROOT:REORDER(1)
202DMA1_CH4_5_6_7_IRQHandler
203        B DMA1_CH4_5_6_7_IRQHandler
204
205        PUBWEAK ADC1_COMP_IRQHandler
206        SECTION .text:CODE:NOROOT:REORDER(1)
207ADC1_COMP_IRQHandler
208        B ADC1_COMP_IRQHandler
209
210        PUBWEAK TMR1_BRK_UP_TRG_COM_IRQHandler
211        SECTION .text:CODE:NOROOT:REORDER(1)
212TMR1_BRK_UP_TRG_COM_IRQHandler
213        B TMR1_BRK_UP_TRG_COM_IRQHandler
214
215        PUBWEAK TMR1_CC_IRQHandler
216        SECTION .text:CODE:NOROOT:REORDER(1)
217TMR1_CC_IRQHandler
218        B TMR1_CC_IRQHandler
219
220        PUBWEAK TMR2_IRQHandler
221        SECTION .text:CODE:NOROOT:REORDER(1)
222TMR2_IRQHandler
223        B TMR2_IRQHandler
224
225        PUBWEAK TMR3_IRQHandler
226        SECTION .text:CODE:NOROOT:REORDER(1)
227TMR3_IRQHandler
228        B TMR3_IRQHandler
229
230        PUBWEAK TMR6_DAC_IRQHandler
231        SECTION .text:CODE:NOROOT:REORDER(1)
232TMR6_DAC_IRQHandler
233        B TMR6_DAC_IRQHandler
234
235        PUBWEAK TMR7_IRQHandler
236        SECTION .text:CODE:NOROOT:REORDER(1)
237TMR7_IRQHandler
238        B TMR7_IRQHandler
239
240        PUBWEAK TMR14_IRQHandler
241        SECTION .text:CODE:NOROOT:REORDER(1)
242TMR14_IRQHandler
243        B TMR14_IRQHandler
244
245        PUBWEAK TMR15_IRQHandler
246        SECTION .text:CODE:NOROOT:REORDER(1)
247TMR15_IRQHandler
248        B TMR15_IRQHandler
249
250        PUBWEAK TMR16_IRQHandler
251        SECTION .text:CODE:NOROOT:REORDER(1)
252TMR16_IRQHandler
253        B TMR16_IRQHandler
254
255        PUBWEAK TMR17_IRQHandler
256        SECTION .text:CODE:NOROOT:REORDER(1)
257TMR17_IRQHandler
258        B TMR17_IRQHandler
259
260        PUBWEAK I2C1_IRQHandler
261        SECTION .text:CODE:NOROOT:REORDER(1)
262I2C1_IRQHandler
263        B I2C1_IRQHandler
264
265        PUBWEAK I2C2_IRQHandler
266        SECTION .text:CODE:NOROOT:REORDER(1)
267I2C2_IRQHandler
268        B I2C2_IRQHandler
269
270        PUBWEAK SPI1_IRQHandler
271        SECTION .text:CODE:NOROOT:REORDER(1)
272SPI1_IRQHandler
273        B SPI1_IRQHandler
274
275        PUBWEAK SPI2_IRQHandler
276        SECTION .text:CODE:NOROOT:REORDER(1)
277SPI2_IRQHandler
278        B SPI2_IRQHandler
279
280        PUBWEAK USART1_IRQHandler
281        SECTION .text:CODE:NOROOT:REORDER(1)
282USART1_IRQHandler
283        B USART1_IRQHandler
284
285        PUBWEAK USART2_IRQHandler
286        SECTION .text:CODE:NOROOT:REORDER(1)
287USART2_IRQHandler
288        B USART2_IRQHandler
289
290        PUBWEAK USART3_4_IRQHandler
291        SECTION .text:CODE:NOROOT:REORDER(1)
292USART3_4_IRQHandler
293        B USART3_4_IRQHandler
294
295        PUBWEAK CEC_CAN_IRQHandler
296        SECTION .text:CODE:NOROOT:REORDER(1)
297CEC_CAN_IRQHandler
298        B CEC_CAN_IRQHandler
299
300        PUBWEAK USBD_IRQHandler
301        SECTION .text:CODE:NOROOT:REORDER(1)
302USBD_IRQHandler
303        B USBD_IRQHandler
304
305        END
306