1{$goto on}
2unit lm4f120;
3
4interface
5
6const
7 Flash_Base             = $00000000;
8 ROM_Base               = $01000000;
9 SRAM_Base              = $20000000;
10 Bitband_Base           = $22000000;
11
12 // FiRM Peripherals
13 Watchdog0_Base         = $40000000;
14 Watchdog1_Base         = $40001000;
15 GPIOA_Base             = $40004000;
16 GPIOB_Base             = $40005000;
17 GPIOC_Base             = $40006000;
18 GPIOD_Base             = $40007000;
19 SSI0_Base              = $40008000;
20 SSI1_Base              = $40009000;
21 SSI2_Base              = $4000A000;
22 SSI3_Base              = $4000B000;
23 UART0_Base             = $4000C000;
24 UART1_Base             = $4000D000;
25 UART2_Base             = $4000E000;
26 UART3_Base             = $4000F000;
27 UART4_Base             = $40010000;
28 UART5_Base             = $40011000;
29 UART6_Base             = $40012000;
30 UART7_Base             = $40013000;
31
32 // Peripherals
33 I2C0_Base              = $40020000;
34 I2C1_Base              = $40021000;
35 I2C2_Base              = $40022000;
36 I2C3_Base              = $40023000;
37 GPIOE_Base             = $40024000;
38 GPIOF_Base             = $40025000;
39 Timer0_1632_Base       = $40030000;
40 Timer1_1632_Base       = $40031000;
41 Timer2_1632_Base       = $40032000;
42 Timer3_1632_Base       = $40033000;
43 Timer4_1632_Base       = $40034000;
44 Timer5_1632_Base       = $40035000;
45 Timer0_3264_Base       = $40036000;
46 Timer1_3264_Base       = $40037000;
47 ADC0_Base              = $40038000;
48 ADC1_Base              = $40039000;
49 AnalogComp_Base        = $4003C000;
50 CAN0_Base              = $40040000;
51 Timer2_3264_Base       = $4004C000;
52 Timer3_3264_Base       = $4004D000;
53 Timer4_3264_Base       = $4004E000;
54 Timer5_3264_Base       = $4004F000;
55 USB_Base               = $40050000;
56 GPIOA_AHB_Base         = $40058000;
57 GPIOB_AHB_Base         = $40059000;
58 GPIOC_AHB_Base         = $4005A000;
59 GPIOD_AHB_Base         = $4005B000;
60 GPIOE_AHB_Base         = $4005C000;
61 GPIOF_AHB_Base         = $4005D000;
62 EEPROMKeyLocker_Base   = $400AF000;
63 SystemException_Base   = $400F9000;
64 Hibernation_Base       = $400FC000;
65 FlashControl_Base      = $400FD000;
66 SystemControl_Base     = $400FE000;
67 uDMA_Base              = $400FF000;
68 PeriphBitband_Base     = $42000000;
69// Private Peripheral Bus
70 ITM_Base               = $E0000000;
71 DWT_Base               = $E0001000;
72 FPB_Base               = $E0002000;
73 CortexM4F_Base         = $E000E000;
74 TPIU_Base              = $E0040000;
75 ETM_Base               = $E0041000;
76
77implementation
78
79procedure NMI_interrupt; external name 'NMI_interrupt';
80procedure Hardfault_interrupt; external name 'Hardfault_interrupt';
81procedure MemManage_interrupt; external name 'MemManage_interrupt';
82procedure BusFault_interrupt; external name 'BusFault_interrupt';
83procedure UsageFault_interrupt; external name 'UsageFault_interrupt';
84procedure SWI_interrupt; external name 'SWI_interrupt';
85procedure DebugMonitor_interrupt; external name 'DebugMonitor_interrupt';
86procedure PendingSV_interrupt; external name 'PendingSV_interrupt';
87procedure SysTick_interrupt; external name 'SysTick_interrupt';
88
89procedure GPIO_Port_A_interrupt; external name 'GPIO_Port_A_interrupt';
90procedure GPIO_Port_B_interrupt; external name 'GPIO_Port_B_interrupt';
91procedure GPIO_Port_C_interrupt; external name 'GPIO_Port_C_interrupt';
92procedure GPIO_Port_D_interrupt; external name 'GPIO_Port_D_interrupt';
93procedure GPIO_Port_E_interrupt; external name 'GPIO_Port_E_interrupt';
94procedure UART0_interrupt; external name 'UART0_interrupt';
95procedure UART1_interrupt; external name 'UART1_interrupt';
96procedure SSI0_interrupt; external name 'SSI0_interrupt';
97procedure I2C0_interrupt; external name 'I2C0_interrupt';
98procedure ADC0_Seq_0_interrupt; external name 'ADC0_Seq_0_interrupt';
99procedure ADC0_Seq_1_interrupt; external name 'ADC0_Seq_1_interrupt';
100procedure ADC0_Seq_2_interrupt; external name 'ADC0_Seq_2_interrupt';
101procedure ADC0_Seq_3_interrupt; external name 'ADC0_Seq_3_interrupt';
102procedure Watchdog_0_and_1_interrupt; external name 'Watchdog_0_and_1_interrupt';
103procedure Timer_1632_0A_interrupt; external name 'Timer_1632_0A_interrupt';
104procedure Timer_1632_0B_interrupt; external name 'Timer_1632_0B_interrupt';
105procedure Timer_1632_1A_interrupt; external name 'Timer_1632_1A_interrupt';
106procedure Timer_1632_1B_interrupt; external name 'Timer_1632_1B_interrupt';
107procedure Timer_1632_2A_interrupt; external name 'Timer_1632_2A_interrupt';
108procedure Timer_1632_2B_interrupt; external name 'Timer_1632_2B_interrupt';
109procedure Analog_Comp_0_interrupt; external name 'Analog_Comp_0_interrupt';
110procedure Analog_Comp_1_interrupt; external name 'Analog_Comp_1_interrupt';
111procedure System_Control_interrupt; external name 'System_Control_interrupt';
112procedure Flash_and_EEPROM_interrupt; external name 'Flash_and_EEPROM_interrupt';
113procedure GPIO_Port_F_interrupt; external name 'GPIO_Port_F_interrupt';
114procedure UART2_interrupt; external name 'UART2_interrupt';
115procedure SSI1_interrupt; external name 'SSI1_interrupt';
116procedure Timer_1632_3A_interrupt; external name 'Timer_1632_3A_interrupt';
117procedure Timer_1632_3B_interrupt; external name 'Timer_1632_3B_interrupt';
118procedure I2C1_interrupt; external name 'I2C1_interrupt';
119procedure CAN0_interrupt; external name 'CAN0_interrupt';
120procedure Hibernation_interrupt; external name 'Hibernation_interrupt';
121procedure USB_interrupt; external name 'USB_interrupt';
122procedure uDMA_Software_interrupt; external name 'uDMA_Software_interrupt';
123procedure uDMA_Error_interrupt; external name 'uDMA_Error_interrupt';
124procedure ADC1_Seq_0_interrupt; external name 'ADC1_Seq_0_interrupt';
125procedure ADC1_Seq_1_interrupt; external name 'ADC1_Seq_1_interrupt';
126procedure ADC1_Seq_2_interrupt; external name 'ADC1_Seq_2_interrupt';
127procedure ADC1_Seq_3_interrupt; external name 'ADC1_Seq_3_interrupt';
128procedure SSI2_interrupt; external name 'SSI2_interrupt';
129procedure SSI3_interrupt; external name 'SSI3_interrupt';
130procedure UART3_interrupt; external name 'UART3_interrupt';
131procedure UART4_interrupt; external name 'UART4_interrupt';
132procedure UART5_interrupt; external name 'UART5_interrupt';
133procedure UART6_interrupt; external name 'UART6_interrupt';
134procedure UART7_interrupt; external name 'UART7_interrupt';
135procedure I2C2_interrupt; external name 'I2C2_interrupt';
136procedure I2C3_interrupt; external name 'I2C3_interrupt';
137procedure Timer_1632_4A_interrupt; external name 'Timer_1632_4A_interrupt';
138procedure Timer_1632_4B_interrupt; external name 'Timer_1632_4B_interrupt';
139procedure Timer_1632_5A_interrupt; external name 'Timer_1632_5A_interrupt';
140procedure Timer_1632_5B_interrupt; external name 'Timer_1632_5B_interrupt';
141procedure Timer_3264_0A_interrupt; external name 'Timer_3264_0A_interrupt';
142procedure Timer_3264_0B_interrupt; external name 'Timer_3264_0B_interrupt';
143procedure Timer_3264_1A_interrupt; external name 'Timer_3264_1A_interrupt';
144procedure Timer_3264_1B_interrupt; external name 'Timer_3264_1B_interrupt';
145procedure Timer_3264_2A_interrupt; external name 'Timer_3264_2A_interrupt';
146procedure Timer_3264_2B_interrupt; external name 'Timer_3264_2B_interrupt';
147procedure Timer_3264_3A_interrupt; external name 'Timer_3264_3A_interrupt';
148procedure Timer_3264_3B_interrupt; external name 'Timer_3264_3B_interrupt';
149procedure Timer_3264_4A_interrupt; external name 'Timer_3264_4A_interrupt';
150procedure Timer_3264_4B_interrupt; external name 'Timer_3264_4B_interrupt';
151procedure Timer_3264_5A_interrupt; external name 'Timer_3264_5A_interrupt';
152procedure Timer_3264_5B_interrupt; external name 'Timer_3264_5B_interrupt';
153procedure System_Exception_imprecise_interrupt; external name 'System_Exception_imprecise_interrupt';
154
155{$i cortexm4f_start.inc}
156
157procedure Vectors; assembler; nostackframe;
158label interrupt_vectors;
159asm
160  .section ".init.interrupt_vectors"
161interrupt_vectors:
162  .long _stack_top
163  .long Startup
164  .long NMI_interrupt
165  .long Hardfault_interrupt
166  .long MemManage_interrupt
167  .long BusFault_interrupt
168  .long UsageFault_interrupt
169  .long 0
170  .long 0
171  .long 0
172  .long 0
173  .long SWI_interrupt
174  .long DebugMonitor_interrupt
175  .long 0
176  .long PendingSV_interrupt
177  .long SysTick_interrupt
178
179  .long GPIO_Port_A_interrupt
180  .long GPIO_Port_B_interrupt
181  .long GPIO_Port_C_interrupt
182  .long GPIO_Port_D_interrupt
183  .long GPIO_Port_E_interrupt
184  .long UART0_interrupt
185  .long UART1_interrupt
186  .long SSI0_interrupt
187  .long I2C0_interrupt
188  .long 0
189  .long 0
190  .long 0
191  .long 0
192  .long 0
193  .long ADC0_Seq_0_interrupt
194  .long ADC0_Seq_1_interrupt
195  .long ADC0_Seq_2_interrupt
196  .long ADC0_Seq_3_interrupt
197  .long Watchdog_0_and_1_interrupt
198  .long Timer_1632_0A_interrupt
199  .long Timer_1632_0B_interrupt
200  .long Timer_1632_1A_interrupt
201  .long Timer_1632_1B_interrupt
202  .long Timer_1632_2A_interrupt
203  .long Timer_1632_2B_interrupt
204  .long Analog_Comp_0_interrupt
205  .long 0
206  .long Analog_Comp_1_interrupt
207  .long System_Control_interrupt
208  .long Flash_and_EEPROM_interrupt
209  .long GPIO_Port_F_interrupt
210  .long 0
211  .long 0
212  .long UART2_interrupt
213  .long SSI1_interrupt
214  .long Timer_1632_3A_interrupt
215  .long Timer_1632_3B_interrupt
216  .long I2C1_interrupt
217  .long 0
218  .long CAN0_interrupt
219  .long 0
220  .long 0
221  .long 0
222  .long Hibernation_interrupt
223  .long USB_interrupt
224  .long 0
225  .long uDMA_Software_interrupt
226  .long uDMA_Error_interrupt
227  .long ADC1_Seq_0_interrupt
228  .long ADC1_Seq_1_interrupt
229  .long ADC1_Seq_2_interrupt
230  .long ADC1_Seq_3_interrupt
231  .long 0
232  .long 0
233  .long 0
234  .long 0
235  .long 0
236  .long SSI2_interrupt
237  .long SSI3_interrupt
238  .long UART3_interrupt
239  .long UART4_interrupt
240  .long UART5_interrupt
241  .long UART6_interrupt
242  .long UART7_interrupt
243  .long 0
244  .long 0
245  .long 0
246  .long 0
247  .long I2C2_interrupt
248  .long I2C3_interrupt
249  .long Timer_1632_4A_interrupt
250  .long Timer_1632_4B_interrupt
251  .long 0
252  .long 0
253  .long 0
254  .long 0
255  .long 0
256  .long 0
257  .long 0
258  .long 0
259  .long 0
260  .long 0
261  .long 0
262  .long 0
263  .long 0
264  .long 0
265  .long 0
266  .long 0
267  .long 0
268  .long 0
269  .long 0
270  .long 0
271  .long Timer_1632_5A_interrupt
272  .long Timer_1632_5B_interrupt
273  .long Timer_3264_0A_interrupt
274  .long Timer_3264_0B_interrupt
275  .long Timer_3264_1A_interrupt
276  .long Timer_3264_1B_interrupt
277  .long Timer_3264_2A_interrupt
278  .long Timer_3264_2B_interrupt
279  .long Timer_3264_3A_interrupt
280  .long Timer_3264_3B_interrupt
281  .long Timer_3264_4A_interrupt
282  .long Timer_3264_4B_interrupt
283  .long Timer_3264_5A_interrupt
284  .long Timer_3264_5B_interrupt
285  .long System_Exception_imprecise_interrupt
286
287  .weak NMI_interrupt
288  .weak Hardfault_interrupt
289  .weak MemManage_interrupt
290  .weak BusFault_interrupt
291  .weak UsageFault_interrupt
292  .weak SWI_interrupt
293  .weak DebugMonitor_interrupt
294  .weak PendingSV_interrupt
295  .weak SysTick_interrupt
296
297  .weak GPIO_Port_A_interrupt
298  .weak GPIO_Port_B_interrupt
299  .weak GPIO_Port_C_interrupt
300  .weak GPIO_Port_D_interrupt
301  .weak GPIO_Port_E_interrupt
302  .weak UART0_interrupt
303  .weak UART1_interrupt
304  .weak SSI0_interrupt
305  .weak I2C0_interrupt
306  .weak ADC0_Seq_0_interrupt
307  .weak ADC0_Seq_1_interrupt
308  .weak ADC0_Seq_2_interrupt
309  .weak ADC0_Seq_3_interrupt
310  .weak Watchdog_0_and_1_interrupt
311  .weak Timer_1632_0A_interrupt
312  .weak Timer_1632_0B_interrupt
313  .weak Timer_1632_1A_interrupt
314  .weak Timer_1632_1B_interrupt
315  .weak Timer_1632_2A_interrupt
316  .weak Timer_1632_2B_interrupt
317  .weak Analog_Comp_0_interrupt
318  .weak Analog_Comp_1_interrupt
319  .weak System_Control_interrupt
320  .weak Flash_and_EEPROM_interrupt
321  .weak GPIO_Port_F_interrupt
322  .weak UART2_interrupt
323  .weak SSI1_interrupt
324  .weak Timer_1632_3A_interrupt
325  .weak Timer_1632_3B_interrupt
326  .weak I2C1_interrupt
327  .weak CAN0_interrupt
328  .weak Hibernation_interrupt
329  .weak USB_interrupt
330  .weak uDMA_Software_interrupt
331  .weak uDMA_Error_interrupt
332  .weak ADC1_Seq_0_interrupt
333  .weak ADC1_Seq_1_interrupt
334  .weak ADC1_Seq_2_interrupt
335  .weak ADC1_Seq_3_interrupt
336  .weak SSI2_interrupt
337  .weak SSI3_interrupt
338  .weak UART3_interrupt
339  .weak UART4_interrupt
340  .weak UART5_interrupt
341  .weak UART6_interrupt
342  .weak UART7_interrupt
343  .weak I2C2_interrupt
344  .weak I2C3_interrupt
345  .weak Timer_1632_4A_interrupt
346  .weak Timer_1632_4B_interrupt
347  .weak Timer_1632_5A_interrupt
348  .weak Timer_1632_5B_interrupt
349  .weak Timer_3264_0A_interrupt
350  .weak Timer_3264_0B_interrupt
351  .weak Timer_3264_1A_interrupt
352  .weak Timer_3264_1B_interrupt
353  .weak Timer_3264_2A_interrupt
354  .weak Timer_3264_2B_interrupt
355  .weak Timer_3264_3A_interrupt
356  .weak Timer_3264_3B_interrupt
357  .weak Timer_3264_4A_interrupt
358  .weak Timer_3264_4B_interrupt
359  .weak Timer_3264_5A_interrupt
360  .weak Timer_3264_5B_interrupt
361  .weak System_Exception_imprecise_interrupt
362
363  .set NMI_interrupt, HaltProc
364  .set Hardfault_interrupt, HaltProc
365  .set MemManage_interrupt, HaltProc
366  .set BusFault_interrupt, HaltProc
367  .set UsageFault_interrupt, HaltProc
368  .set SWI_interrupt, HaltProc
369  .set DebugMonitor_interrupt, HaltProc
370  .set PendingSV_interrupt, HaltProc
371  .set SysTick_interrupt, HaltProc
372
373  .set GPIO_Port_A_interrupt, HaltProc
374  .set GPIO_Port_B_interrupt, HaltProc
375  .set GPIO_Port_C_interrupt, HaltProc
376  .set GPIO_Port_D_interrupt, HaltProc
377  .set GPIO_Port_E_interrupt, HaltProc
378  .set UART0_interrupt, HaltProc
379  .set UART1_interrupt, HaltProc
380  .set SSI0_interrupt, HaltProc
381  .set I2C0_interrupt, HaltProc
382  .set ADC0_Seq_0_interrupt, HaltProc
383  .set ADC0_Seq_1_interrupt, HaltProc
384  .set ADC0_Seq_2_interrupt, HaltProc
385  .set ADC0_Seq_3_interrupt, HaltProc
386  .set Watchdog_0_and_1_interrupt, HaltProc
387  .set Timer_1632_0A_interrupt, HaltProc
388  .set Timer_1632_0B_interrupt, HaltProc
389  .set Timer_1632_1A_interrupt, HaltProc
390  .set Timer_1632_1B_interrupt, HaltProc
391  .set Timer_1632_2A_interrupt, HaltProc
392  .set Timer_1632_2B_interrupt, HaltProc
393  .set Analog_Comp_0_interrupt, HaltProc
394  .set Analog_Comp_1_interrupt, HaltProc
395  .set System_Control_interrupt, HaltProc
396  .set Flash_and_EEPROM_interrupt, HaltProc
397  .set GPIO_Port_F_interrupt, HaltProc
398  .set UART2_interrupt, HaltProc
399  .set SSI1_interrupt, HaltProc
400  .set Timer_1632_3A_interrupt, HaltProc
401  .set Timer_1632_3B_interrupt, HaltProc
402  .set I2C1_interrupt, HaltProc
403  .set CAN0_interrupt, HaltProc
404  .set Hibernation_interrupt, HaltProc
405  .set USB_interrupt, HaltProc
406  .set uDMA_Software_interrupt, HaltProc
407  .set uDMA_Error_interrupt, HaltProc
408  .set ADC1_Seq_0_interrupt, HaltProc
409  .set ADC1_Seq_1_interrupt, HaltProc
410  .set ADC1_Seq_2_interrupt, HaltProc
411  .set ADC1_Seq_3_interrupt, HaltProc
412  .set SSI2_interrupt, HaltProc
413  .set SSI3_interrupt, HaltProc
414  .set UART3_interrupt, HaltProc
415  .set UART4_interrupt, HaltProc
416  .set UART5_interrupt, HaltProc
417  .set UART6_interrupt, HaltProc
418  .set UART7_interrupt, HaltProc
419  .set I2C2_interrupt, HaltProc
420  .set I2C3_interrupt, HaltProc
421  .set Timer_1632_4A_interrupt, HaltProc
422  .set Timer_1632_4B_interrupt, HaltProc
423  .set Timer_1632_5A_interrupt, HaltProc
424  .set Timer_1632_5B_interrupt, HaltProc
425  .set Timer_3264_0A_interrupt, HaltProc
426  .set Timer_3264_0B_interrupt, HaltProc
427  .set Timer_3264_1A_interrupt, HaltProc
428  .set Timer_3264_1B_interrupt, HaltProc
429  .set Timer_3264_2A_interrupt, HaltProc
430  .set Timer_3264_2B_interrupt, HaltProc
431  .set Timer_3264_3A_interrupt, HaltProc
432  .set Timer_3264_3B_interrupt, HaltProc
433  .set Timer_3264_4A_interrupt, HaltProc
434  .set Timer_3264_4B_interrupt, HaltProc
435  .set Timer_3264_5A_interrupt, HaltProc
436  .set Timer_3264_5B_interrupt, HaltProc
437  .set System_Exception_imprecise_interrupt, HaltProc
438
439  .text
440end;
441
442end.
443
444