mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-22 11:49:23 +02:00
446 lines
15 KiB
ObjectPascal
446 lines
15 KiB
ObjectPascal
{$goto on}
|
|
{$IFNDEF FPC_DOTTEDUNITS}
|
|
unit lm4f120;
|
|
{$ENDIF FPC_DOTTEDUNITS}
|
|
|
|
interface
|
|
|
|
const
|
|
Flash_Base = $00000000;
|
|
ROM_Base = $01000000;
|
|
SRAM_Base = $20000000;
|
|
Bitband_Base = $22000000;
|
|
|
|
// FiRM Peripherals
|
|
Watchdog0_Base = $40000000;
|
|
Watchdog1_Base = $40001000;
|
|
GPIOA_Base = $40004000;
|
|
GPIOB_Base = $40005000;
|
|
GPIOC_Base = $40006000;
|
|
GPIOD_Base = $40007000;
|
|
SSI0_Base = $40008000;
|
|
SSI1_Base = $40009000;
|
|
SSI2_Base = $4000A000;
|
|
SSI3_Base = $4000B000;
|
|
UART0_Base = $4000C000;
|
|
UART1_Base = $4000D000;
|
|
UART2_Base = $4000E000;
|
|
UART3_Base = $4000F000;
|
|
UART4_Base = $40010000;
|
|
UART5_Base = $40011000;
|
|
UART6_Base = $40012000;
|
|
UART7_Base = $40013000;
|
|
|
|
// Peripherals
|
|
I2C0_Base = $40020000;
|
|
I2C1_Base = $40021000;
|
|
I2C2_Base = $40022000;
|
|
I2C3_Base = $40023000;
|
|
GPIOE_Base = $40024000;
|
|
GPIOF_Base = $40025000;
|
|
Timer0_1632_Base = $40030000;
|
|
Timer1_1632_Base = $40031000;
|
|
Timer2_1632_Base = $40032000;
|
|
Timer3_1632_Base = $40033000;
|
|
Timer4_1632_Base = $40034000;
|
|
Timer5_1632_Base = $40035000;
|
|
Timer0_3264_Base = $40036000;
|
|
Timer1_3264_Base = $40037000;
|
|
ADC0_Base = $40038000;
|
|
ADC1_Base = $40039000;
|
|
AnalogComp_Base = $4003C000;
|
|
CAN0_Base = $40040000;
|
|
Timer2_3264_Base = $4004C000;
|
|
Timer3_3264_Base = $4004D000;
|
|
Timer4_3264_Base = $4004E000;
|
|
Timer5_3264_Base = $4004F000;
|
|
USB_Base = $40050000;
|
|
GPIOA_AHB_Base = $40058000;
|
|
GPIOB_AHB_Base = $40059000;
|
|
GPIOC_AHB_Base = $4005A000;
|
|
GPIOD_AHB_Base = $4005B000;
|
|
GPIOE_AHB_Base = $4005C000;
|
|
GPIOF_AHB_Base = $4005D000;
|
|
EEPROMKeyLocker_Base = $400AF000;
|
|
SystemException_Base = $400F9000;
|
|
Hibernation_Base = $400FC000;
|
|
FlashControl_Base = $400FD000;
|
|
SystemControl_Base = $400FE000;
|
|
uDMA_Base = $400FF000;
|
|
PeriphBitband_Base = $42000000;
|
|
// Private Peripheral Bus
|
|
ITM_Base = $E0000000;
|
|
DWT_Base = $E0001000;
|
|
FPB_Base = $E0002000;
|
|
CortexM4F_Base = $E000E000;
|
|
TPIU_Base = $E0040000;
|
|
ETM_Base = $E0041000;
|
|
|
|
implementation
|
|
|
|
procedure NMI_interrupt; external name 'NMI_interrupt';
|
|
procedure Hardfault_interrupt; external name 'Hardfault_interrupt';
|
|
procedure MemManage_interrupt; external name 'MemManage_interrupt';
|
|
procedure BusFault_interrupt; external name 'BusFault_interrupt';
|
|
procedure UsageFault_interrupt; external name 'UsageFault_interrupt';
|
|
procedure SWI_interrupt; external name 'SWI_interrupt';
|
|
procedure DebugMonitor_interrupt; external name 'DebugMonitor_interrupt';
|
|
procedure PendingSV_interrupt; external name 'PendingSV_interrupt';
|
|
procedure SysTick_interrupt; external name 'SysTick_interrupt';
|
|
|
|
procedure GPIO_Port_A_interrupt; external name 'GPIO_Port_A_interrupt';
|
|
procedure GPIO_Port_B_interrupt; external name 'GPIO_Port_B_interrupt';
|
|
procedure GPIO_Port_C_interrupt; external name 'GPIO_Port_C_interrupt';
|
|
procedure GPIO_Port_D_interrupt; external name 'GPIO_Port_D_interrupt';
|
|
procedure GPIO_Port_E_interrupt; external name 'GPIO_Port_E_interrupt';
|
|
procedure UART0_interrupt; external name 'UART0_interrupt';
|
|
procedure UART1_interrupt; external name 'UART1_interrupt';
|
|
procedure SSI0_interrupt; external name 'SSI0_interrupt';
|
|
procedure I2C0_interrupt; external name 'I2C0_interrupt';
|
|
procedure ADC0_Seq_0_interrupt; external name 'ADC0_Seq_0_interrupt';
|
|
procedure ADC0_Seq_1_interrupt; external name 'ADC0_Seq_1_interrupt';
|
|
procedure ADC0_Seq_2_interrupt; external name 'ADC0_Seq_2_interrupt';
|
|
procedure ADC0_Seq_3_interrupt; external name 'ADC0_Seq_3_interrupt';
|
|
procedure Watchdog_0_and_1_interrupt; external name 'Watchdog_0_and_1_interrupt';
|
|
procedure Timer_1632_0A_interrupt; external name 'Timer_1632_0A_interrupt';
|
|
procedure Timer_1632_0B_interrupt; external name 'Timer_1632_0B_interrupt';
|
|
procedure Timer_1632_1A_interrupt; external name 'Timer_1632_1A_interrupt';
|
|
procedure Timer_1632_1B_interrupt; external name 'Timer_1632_1B_interrupt';
|
|
procedure Timer_1632_2A_interrupt; external name 'Timer_1632_2A_interrupt';
|
|
procedure Timer_1632_2B_interrupt; external name 'Timer_1632_2B_interrupt';
|
|
procedure Analog_Comp_0_interrupt; external name 'Analog_Comp_0_interrupt';
|
|
procedure Analog_Comp_1_interrupt; external name 'Analog_Comp_1_interrupt';
|
|
procedure System_Control_interrupt; external name 'System_Control_interrupt';
|
|
procedure Flash_and_EEPROM_interrupt; external name 'Flash_and_EEPROM_interrupt';
|
|
procedure GPIO_Port_F_interrupt; external name 'GPIO_Port_F_interrupt';
|
|
procedure UART2_interrupt; external name 'UART2_interrupt';
|
|
procedure SSI1_interrupt; external name 'SSI1_interrupt';
|
|
procedure Timer_1632_3A_interrupt; external name 'Timer_1632_3A_interrupt';
|
|
procedure Timer_1632_3B_interrupt; external name 'Timer_1632_3B_interrupt';
|
|
procedure I2C1_interrupt; external name 'I2C1_interrupt';
|
|
procedure CAN0_interrupt; external name 'CAN0_interrupt';
|
|
procedure Hibernation_interrupt; external name 'Hibernation_interrupt';
|
|
procedure USB_interrupt; external name 'USB_interrupt';
|
|
procedure uDMA_Software_interrupt; external name 'uDMA_Software_interrupt';
|
|
procedure uDMA_Error_interrupt; external name 'uDMA_Error_interrupt';
|
|
procedure ADC1_Seq_0_interrupt; external name 'ADC1_Seq_0_interrupt';
|
|
procedure ADC1_Seq_1_interrupt; external name 'ADC1_Seq_1_interrupt';
|
|
procedure ADC1_Seq_2_interrupt; external name 'ADC1_Seq_2_interrupt';
|
|
procedure ADC1_Seq_3_interrupt; external name 'ADC1_Seq_3_interrupt';
|
|
procedure SSI2_interrupt; external name 'SSI2_interrupt';
|
|
procedure SSI3_interrupt; external name 'SSI3_interrupt';
|
|
procedure UART3_interrupt; external name 'UART3_interrupt';
|
|
procedure UART4_interrupt; external name 'UART4_interrupt';
|
|
procedure UART5_interrupt; external name 'UART5_interrupt';
|
|
procedure UART6_interrupt; external name 'UART6_interrupt';
|
|
procedure UART7_interrupt; external name 'UART7_interrupt';
|
|
procedure I2C2_interrupt; external name 'I2C2_interrupt';
|
|
procedure I2C3_interrupt; external name 'I2C3_interrupt';
|
|
procedure Timer_1632_4A_interrupt; external name 'Timer_1632_4A_interrupt';
|
|
procedure Timer_1632_4B_interrupt; external name 'Timer_1632_4B_interrupt';
|
|
procedure Timer_1632_5A_interrupt; external name 'Timer_1632_5A_interrupt';
|
|
procedure Timer_1632_5B_interrupt; external name 'Timer_1632_5B_interrupt';
|
|
procedure Timer_3264_0A_interrupt; external name 'Timer_3264_0A_interrupt';
|
|
procedure Timer_3264_0B_interrupt; external name 'Timer_3264_0B_interrupt';
|
|
procedure Timer_3264_1A_interrupt; external name 'Timer_3264_1A_interrupt';
|
|
procedure Timer_3264_1B_interrupt; external name 'Timer_3264_1B_interrupt';
|
|
procedure Timer_3264_2A_interrupt; external name 'Timer_3264_2A_interrupt';
|
|
procedure Timer_3264_2B_interrupt; external name 'Timer_3264_2B_interrupt';
|
|
procedure Timer_3264_3A_interrupt; external name 'Timer_3264_3A_interrupt';
|
|
procedure Timer_3264_3B_interrupt; external name 'Timer_3264_3B_interrupt';
|
|
procedure Timer_3264_4A_interrupt; external name 'Timer_3264_4A_interrupt';
|
|
procedure Timer_3264_4B_interrupt; external name 'Timer_3264_4B_interrupt';
|
|
procedure Timer_3264_5A_interrupt; external name 'Timer_3264_5A_interrupt';
|
|
procedure Timer_3264_5B_interrupt; external name 'Timer_3264_5B_interrupt';
|
|
procedure System_Exception_imprecise_interrupt; external name 'System_Exception_imprecise_interrupt';
|
|
|
|
{$i cortexm4f_start.inc}
|
|
|
|
procedure Vectors; assembler; nostackframe;
|
|
label interrupt_vectors;
|
|
asm
|
|
.section ".init.interrupt_vectors"
|
|
interrupt_vectors:
|
|
.long _stack_top
|
|
.long Startup
|
|
.long NMI_interrupt
|
|
.long Hardfault_interrupt
|
|
.long MemManage_interrupt
|
|
.long BusFault_interrupt
|
|
.long UsageFault_interrupt
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long SWI_interrupt
|
|
.long DebugMonitor_interrupt
|
|
.long 0
|
|
.long PendingSV_interrupt
|
|
.long SysTick_interrupt
|
|
|
|
.long GPIO_Port_A_interrupt
|
|
.long GPIO_Port_B_interrupt
|
|
.long GPIO_Port_C_interrupt
|
|
.long GPIO_Port_D_interrupt
|
|
.long GPIO_Port_E_interrupt
|
|
.long UART0_interrupt
|
|
.long UART1_interrupt
|
|
.long SSI0_interrupt
|
|
.long I2C0_interrupt
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long ADC0_Seq_0_interrupt
|
|
.long ADC0_Seq_1_interrupt
|
|
.long ADC0_Seq_2_interrupt
|
|
.long ADC0_Seq_3_interrupt
|
|
.long Watchdog_0_and_1_interrupt
|
|
.long Timer_1632_0A_interrupt
|
|
.long Timer_1632_0B_interrupt
|
|
.long Timer_1632_1A_interrupt
|
|
.long Timer_1632_1B_interrupt
|
|
.long Timer_1632_2A_interrupt
|
|
.long Timer_1632_2B_interrupt
|
|
.long Analog_Comp_0_interrupt
|
|
.long 0
|
|
.long Analog_Comp_1_interrupt
|
|
.long System_Control_interrupt
|
|
.long Flash_and_EEPROM_interrupt
|
|
.long GPIO_Port_F_interrupt
|
|
.long 0
|
|
.long 0
|
|
.long UART2_interrupt
|
|
.long SSI1_interrupt
|
|
.long Timer_1632_3A_interrupt
|
|
.long Timer_1632_3B_interrupt
|
|
.long I2C1_interrupt
|
|
.long 0
|
|
.long CAN0_interrupt
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long Hibernation_interrupt
|
|
.long USB_interrupt
|
|
.long 0
|
|
.long uDMA_Software_interrupt
|
|
.long uDMA_Error_interrupt
|
|
.long ADC1_Seq_0_interrupt
|
|
.long ADC1_Seq_1_interrupt
|
|
.long ADC1_Seq_2_interrupt
|
|
.long ADC1_Seq_3_interrupt
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long SSI2_interrupt
|
|
.long SSI3_interrupt
|
|
.long UART3_interrupt
|
|
.long UART4_interrupt
|
|
.long UART5_interrupt
|
|
.long UART6_interrupt
|
|
.long UART7_interrupt
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long I2C2_interrupt
|
|
.long I2C3_interrupt
|
|
.long Timer_1632_4A_interrupt
|
|
.long Timer_1632_4B_interrupt
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long Timer_1632_5A_interrupt
|
|
.long Timer_1632_5B_interrupt
|
|
.long Timer_3264_0A_interrupt
|
|
.long Timer_3264_0B_interrupt
|
|
.long Timer_3264_1A_interrupt
|
|
.long Timer_3264_1B_interrupt
|
|
.long Timer_3264_2A_interrupt
|
|
.long Timer_3264_2B_interrupt
|
|
.long Timer_3264_3A_interrupt
|
|
.long Timer_3264_3B_interrupt
|
|
.long Timer_3264_4A_interrupt
|
|
.long Timer_3264_4B_interrupt
|
|
.long Timer_3264_5A_interrupt
|
|
.long Timer_3264_5B_interrupt
|
|
.long System_Exception_imprecise_interrupt
|
|
|
|
.weak NMI_interrupt
|
|
.weak Hardfault_interrupt
|
|
.weak MemManage_interrupt
|
|
.weak BusFault_interrupt
|
|
.weak UsageFault_interrupt
|
|
.weak SWI_interrupt
|
|
.weak DebugMonitor_interrupt
|
|
.weak PendingSV_interrupt
|
|
.weak SysTick_interrupt
|
|
|
|
.weak GPIO_Port_A_interrupt
|
|
.weak GPIO_Port_B_interrupt
|
|
.weak GPIO_Port_C_interrupt
|
|
.weak GPIO_Port_D_interrupt
|
|
.weak GPIO_Port_E_interrupt
|
|
.weak UART0_interrupt
|
|
.weak UART1_interrupt
|
|
.weak SSI0_interrupt
|
|
.weak I2C0_interrupt
|
|
.weak ADC0_Seq_0_interrupt
|
|
.weak ADC0_Seq_1_interrupt
|
|
.weak ADC0_Seq_2_interrupt
|
|
.weak ADC0_Seq_3_interrupt
|
|
.weak Watchdog_0_and_1_interrupt
|
|
.weak Timer_1632_0A_interrupt
|
|
.weak Timer_1632_0B_interrupt
|
|
.weak Timer_1632_1A_interrupt
|
|
.weak Timer_1632_1B_interrupt
|
|
.weak Timer_1632_2A_interrupt
|
|
.weak Timer_1632_2B_interrupt
|
|
.weak Analog_Comp_0_interrupt
|
|
.weak Analog_Comp_1_interrupt
|
|
.weak System_Control_interrupt
|
|
.weak Flash_and_EEPROM_interrupt
|
|
.weak GPIO_Port_F_interrupt
|
|
.weak UART2_interrupt
|
|
.weak SSI1_interrupt
|
|
.weak Timer_1632_3A_interrupt
|
|
.weak Timer_1632_3B_interrupt
|
|
.weak I2C1_interrupt
|
|
.weak CAN0_interrupt
|
|
.weak Hibernation_interrupt
|
|
.weak USB_interrupt
|
|
.weak uDMA_Software_interrupt
|
|
.weak uDMA_Error_interrupt
|
|
.weak ADC1_Seq_0_interrupt
|
|
.weak ADC1_Seq_1_interrupt
|
|
.weak ADC1_Seq_2_interrupt
|
|
.weak ADC1_Seq_3_interrupt
|
|
.weak SSI2_interrupt
|
|
.weak SSI3_interrupt
|
|
.weak UART3_interrupt
|
|
.weak UART4_interrupt
|
|
.weak UART5_interrupt
|
|
.weak UART6_interrupt
|
|
.weak UART7_interrupt
|
|
.weak I2C2_interrupt
|
|
.weak I2C3_interrupt
|
|
.weak Timer_1632_4A_interrupt
|
|
.weak Timer_1632_4B_interrupt
|
|
.weak Timer_1632_5A_interrupt
|
|
.weak Timer_1632_5B_interrupt
|
|
.weak Timer_3264_0A_interrupt
|
|
.weak Timer_3264_0B_interrupt
|
|
.weak Timer_3264_1A_interrupt
|
|
.weak Timer_3264_1B_interrupt
|
|
.weak Timer_3264_2A_interrupt
|
|
.weak Timer_3264_2B_interrupt
|
|
.weak Timer_3264_3A_interrupt
|
|
.weak Timer_3264_3B_interrupt
|
|
.weak Timer_3264_4A_interrupt
|
|
.weak Timer_3264_4B_interrupt
|
|
.weak Timer_3264_5A_interrupt
|
|
.weak Timer_3264_5B_interrupt
|
|
.weak System_Exception_imprecise_interrupt
|
|
|
|
.set NMI_interrupt, HaltProc
|
|
.set Hardfault_interrupt, HaltProc
|
|
.set MemManage_interrupt, HaltProc
|
|
.set BusFault_interrupt, HaltProc
|
|
.set UsageFault_interrupt, HaltProc
|
|
.set SWI_interrupt, HaltProc
|
|
.set DebugMonitor_interrupt, HaltProc
|
|
.set PendingSV_interrupt, HaltProc
|
|
.set SysTick_interrupt, HaltProc
|
|
|
|
.set GPIO_Port_A_interrupt, HaltProc
|
|
.set GPIO_Port_B_interrupt, HaltProc
|
|
.set GPIO_Port_C_interrupt, HaltProc
|
|
.set GPIO_Port_D_interrupt, HaltProc
|
|
.set GPIO_Port_E_interrupt, HaltProc
|
|
.set UART0_interrupt, HaltProc
|
|
.set UART1_interrupt, HaltProc
|
|
.set SSI0_interrupt, HaltProc
|
|
.set I2C0_interrupt, HaltProc
|
|
.set ADC0_Seq_0_interrupt, HaltProc
|
|
.set ADC0_Seq_1_interrupt, HaltProc
|
|
.set ADC0_Seq_2_interrupt, HaltProc
|
|
.set ADC0_Seq_3_interrupt, HaltProc
|
|
.set Watchdog_0_and_1_interrupt, HaltProc
|
|
.set Timer_1632_0A_interrupt, HaltProc
|
|
.set Timer_1632_0B_interrupt, HaltProc
|
|
.set Timer_1632_1A_interrupt, HaltProc
|
|
.set Timer_1632_1B_interrupt, HaltProc
|
|
.set Timer_1632_2A_interrupt, HaltProc
|
|
.set Timer_1632_2B_interrupt, HaltProc
|
|
.set Analog_Comp_0_interrupt, HaltProc
|
|
.set Analog_Comp_1_interrupt, HaltProc
|
|
.set System_Control_interrupt, HaltProc
|
|
.set Flash_and_EEPROM_interrupt, HaltProc
|
|
.set GPIO_Port_F_interrupt, HaltProc
|
|
.set UART2_interrupt, HaltProc
|
|
.set SSI1_interrupt, HaltProc
|
|
.set Timer_1632_3A_interrupt, HaltProc
|
|
.set Timer_1632_3B_interrupt, HaltProc
|
|
.set I2C1_interrupt, HaltProc
|
|
.set CAN0_interrupt, HaltProc
|
|
.set Hibernation_interrupt, HaltProc
|
|
.set USB_interrupt, HaltProc
|
|
.set uDMA_Software_interrupt, HaltProc
|
|
.set uDMA_Error_interrupt, HaltProc
|
|
.set ADC1_Seq_0_interrupt, HaltProc
|
|
.set ADC1_Seq_1_interrupt, HaltProc
|
|
.set ADC1_Seq_2_interrupt, HaltProc
|
|
.set ADC1_Seq_3_interrupt, HaltProc
|
|
.set SSI2_interrupt, HaltProc
|
|
.set SSI3_interrupt, HaltProc
|
|
.set UART3_interrupt, HaltProc
|
|
.set UART4_interrupt, HaltProc
|
|
.set UART5_interrupt, HaltProc
|
|
.set UART6_interrupt, HaltProc
|
|
.set UART7_interrupt, HaltProc
|
|
.set I2C2_interrupt, HaltProc
|
|
.set I2C3_interrupt, HaltProc
|
|
.set Timer_1632_4A_interrupt, HaltProc
|
|
.set Timer_1632_4B_interrupt, HaltProc
|
|
.set Timer_1632_5A_interrupt, HaltProc
|
|
.set Timer_1632_5B_interrupt, HaltProc
|
|
.set Timer_3264_0A_interrupt, HaltProc
|
|
.set Timer_3264_0B_interrupt, HaltProc
|
|
.set Timer_3264_1A_interrupt, HaltProc
|
|
.set Timer_3264_1B_interrupt, HaltProc
|
|
.set Timer_3264_2A_interrupt, HaltProc
|
|
.set Timer_3264_2B_interrupt, HaltProc
|
|
.set Timer_3264_3A_interrupt, HaltProc
|
|
.set Timer_3264_3B_interrupt, HaltProc
|
|
.set Timer_3264_4A_interrupt, HaltProc
|
|
.set Timer_3264_4B_interrupt, HaltProc
|
|
.set Timer_3264_5A_interrupt, HaltProc
|
|
.set Timer_3264_5B_interrupt, HaltProc
|
|
.set System_Exception_imprecise_interrupt, HaltProc
|
|
|
|
.text
|
|
end;
|
|
|
|
end.
|
|
|