1.section .stack, "aw"
2.stack_size = 0x200
3.stack_space: .space .stack_size
4
5.section .heap, "aw"
6.heap_size = 0x200
7.heap_space: .space .heap_size
8
9.section .vectors, "a"
10.global __Vectors
11.global __Vectors_End
12.global __Vectors_Size
13
14.type __Vectors, %function
15__Vectors:
16    .word .stack_space + .stack_size      // Stack Pointer
17    .word Reset_Handler                    // Reset
18    .word NMI_Handler                      // NMI
19    .word HardFault_Handler                // Hard Fault
20    .word 0                                 // Reserved
21    .word 0                                 // Reserved
22    .word 0                                 // Reserved
23    .word 0                                 // Reserved
24    .word 0                                 // Reserved
25    .word 0                                 // Reserved
26    .word 0                                 // Reserved
27    .word SVC_Handler                      // SVCall
28    .word 0                                 // Reserved
29    .word 0                                 // Reserved
30    .word PendSV_Handler                   // PendSV
31    .word SysTick_Handler                  // SysTick
32
33    // 中断处理函数
34    .word IRQ000_Handler
35    .word IRQ001_Handler
36    .word IRQ002_Handler
37    .word IRQ003_Handler
38    .word IRQ004_Handler
39    .word IRQ005_Handler
40    .word IRQ006_Handler
41    .word IRQ007_Handler
42    .word IRQ008_Handler
43    .word IRQ009_Handler
44    .word IRQ010_Handler
45    .word IRQ011_Handler
46    .word IRQ012_Handler
47    .word IRQ013_Handler
48    .word IRQ014_Handler
49    .word IRQ015_Handler
50    .word IRQ016_Handler
51    .word IRQ017_Handler
52    .word IRQ018_Handler
53    .word IRQ019_Handler
54    .word IRQ020_Handler
55    .word IRQ021_Handler
56    .word IRQ022_Handler
57    .word IRQ023_Handler
58    .word IRQ024_Handler
59    .word IRQ025_Handler
60    .word IRQ026_Handler
61    .word IRQ027_Handler
62    .word IRQ028_Handler
63    .word IRQ029_Handler
64    .word IRQ030_Handler
65    .word IRQ031_Handler
66
67.global __Vectors_End
68__Vectors_End:
69.global __Vectors_Size
70__Vectors_Size = __Vectors_End - __Vectors
71
72.section .text
73.global Reset_Handler
74.type Reset_Handler, %function
75Reset_Handler:
76    // 重置处理
77    ldr r0, =0xE000ED08
78    ldr r1, =.stack_space
79    str r1, [r0]                     // 设置堆栈指针
80
81    bl SystemInit                    // 调用系统初始化
82    bl entry                        // 调用主函数
83    b .                              // 无限循环
84
85// 异常处理程序
86.type NMI_Handler, %function
87NMI_Handler:
88    b .
89
90.type HardFault_Handler, %function
91HardFault_Handler:
92    b .
93
94.type SVC_Handler, %function
95SVC_Handler:
96    b .
97
98.type PendSV_Handler, %function
99PendSV_Handler:
100    b .
101
102.type SysTick_Handler, %function
103SysTick_Handler:
104    b .
105
106.type Default_Handler, %function
107Default_Handler:
108    b .
109
110// 中断处理函数的默认实现
111.weak IRQ000_Handler
112.thumb_set IRQ000_Handler, Default_Handler
113
114.weak IRQ001_Handler
115.thumb_set IRQ001_Handler, Default_Handler
116
117.weak IRQ002_Handler
118.thumb_set IRQ002_Handler, Default_Handler
119
120.weak IRQ003_Handler
121.thumb_set IRQ003_Handler, Default_Handler
122
123.weak IRQ004_Handler
124.thumb_set IRQ004_Handler, Default_Handler
125
126.weak IRQ005_Handler
127.thumb_set IRQ005_Handler, Default_Handler
128
129.weak IRQ006_Handler
130.thumb_set IRQ006_Handler, Default_Handler
131
132.weak IRQ007_Handler
133.thumb_set IRQ007_Handler, Default_Handler
134
135.weak IRQ008_Handler
136.thumb_set IRQ008_Handler, Default_Handler
137
138.weak IRQ009_Handler
139.thumb_set IRQ009_Handler, Default_Handler
140
141.weak IRQ010_Handler
142.thumb_set IRQ010_Handler, Default_Handler
143
144.weak IRQ011_Handler
145.thumb_set IRQ011_Handler, Default_Handler
146
147.weak IRQ012_Handler
148.thumb_set IRQ012_Handler, Default_Handler
149
150.weak IRQ013_Handler
151.thumb_set IRQ013_Handler, Default_Handler
152
153.weak IRQ014_Handler
154.thumb_set IRQ014_Handler, Default_Handler
155
156.weak IRQ015_Handler
157.thumb_set IRQ015_Handler, Default_Handler
158
159.weak IRQ016_Handler
160.thumb_set IRQ016_Handler, Default_Handler
161
162.weak IRQ017_Handler
163.thumb_set IRQ017_Handler, Default_Handler
164
165.weak IRQ018_Handler
166.thumb_set IRQ018_Handler, Default_Handler
167
168.weak IRQ019_Handler
169.thumb_set IRQ019_Handler, Default_Handler
170
171.weak IRQ020_Handler
172.thumb_set IRQ020_Handler, Default_Handler
173
174.weak IRQ021_Handler
175.thumb_set IRQ021_Handler, Default_Handler
176
177.weak IRQ022_Handler
178.thumb_set IRQ022_Handler, Default_Handler
179
180.weak IRQ023_Handler
181.thumb_set IRQ023_Handler, Default_Handler
182
183.weak IRQ024_Handler
184.thumb_set IRQ024_Handler, Default_Handler
185
186.weak IRQ025_Handler
187.thumb_set IRQ025_Handler, Default_Handler
188
189.weak IRQ026_Handler
190.thumb_set IRQ026_Handler, Default_Handler
191
192.weak IRQ027_Handler
193.thumb_set IRQ027_Handler, Default_Handler
194
195.weak IRQ028_Handler
196.thumb_set IRQ028_Handler, Default_Handler
197
198.weak IRQ029_Handler
199.thumb_set IRQ029_Handler, Default_Handler
200
201.weak IRQ030_Handler
202.thumb_set IRQ030_Handler, Default_Handler
203
204.weak IRQ031_Handler
205.thumb_set IRQ031_Handler, Default_Handler
206
207.end
208