[fpc-pascal] ARM-embedded & Interrupt numbers
Koenraad Lelong
fpascal1 at de-brouwerij.be
Fri Aug 14 09:08:20 CEST 2015
Hi,
I'm trying to restart my arm-embedded project.
A few years ago I had a working compiler, with some utility-files.
I made a new cross-compiler (fpc svn 31290). But I don't find where the
interrupt-numbers of an STM32F103xx processor are defined.
So I made an inc-file and added that to e.g.
rtl/embedded/arm/stm32f10x_md.pp, because that's the processor I'm
working with.
The inc-file does contain ifdef's for the different STM32F10x processors
though, so all stm32F10x files could contain that inc-file.
Is this the way to do it ? Or is there better way ? Or does this exist
already ?
Comments please.
If that's a proper way to do this, how could this be included in a next
version of fpc ? Do I make a bug-report including the new file, with
diffs for the modified files ?
How do I make a proper diff ?
Thanks,
Koenraad.
Code snippet of the interrupt-numbers :
const
NonMaskableInt_IRQn = -14; // 2 Non Maskable // interrupt
HardFault_IRQn = -13; // 4 Cortex-M3 Memory Management
// interrupt
MemoryManagement_IRQn = -12; // 4 Cortex-M3 Memory Management
// interrupt
BusFault_IRQn = -11; // 5 Cortex-M3 Bus Fault //
interrupt
UsageFault_IRQn = -10; // 6 Cortex-M3 Usage Fault //
interrupt
SVCall_IRQn = -5; // 11 Cortex-M3 SV Call //
interrupt
DebugMonitor_IRQn = -4; // 12 Cortex-M3 Debug Monitor //
interrupt
PendSV_IRQn = -2; // 14 Cortex-M3 Pend SV //
interrupt
SysTick_IRQn = -1; // 15 Cortex-M3 System Tick //
interrupt
WWDG_IRQn = 0; // Window WatchDog // interrupt
PVD_IRQn = 1; // PVD through EXTI Line
detection // interrupt
TAMPER_IRQn = 2; // Tamper // interrupt
RTC_IRQn = 3; // RTC global // interrupt
FLASH_IRQn = 4; // FLASH global // interrupt
RCC_IRQn = 5; // RCC global // interrupt
EXTI0_IRQn = 6; // EXTI Line0 // interrupt
EXTI1_IRQn = 7; // EXTI Line1 // interrupt
EXTI2_IRQn = 8; // EXTI Line2 // interrupt
EXTI3_IRQn = 9; // EXTI Line3 // interrupt
EXTI4_IRQn = 10; // EXTI Line4 // interrupt
DMA1_Channel1_IRQn = 11; // DMA1 Channel 1 global //
interrupt
DMA1_Channel2_IRQn = 12; // DMA1 Channel 2 global //
interrupt
DMA1_Channel3_IRQn = 13; // DMA1 Channel 3 global //
interrupt
DMA1_Channel4_IRQn = 14; // DMA1 Channel 4 global //
interrupt
DMA1_Channel5_IRQn = 15; // DMA1 Channel 5 global //
interrupt
DMA1_Channel6_IRQn = 16; // DMA1 Channel 6 global //
interrupt
DMA1_Channel7_IRQn = 17; // DMA1 Channel 7 global // interrupt
{$ifdef stm32f10x_ld}
ADC1_2_IRQn = 18; // ADC1 et ADC2 global //
interrupt
USB_HP_CAN1_TX_IRQn = 19; // USB High Priority or CAN1 TX
Interrupts
USB_LP_CAN1_RX0_IRQn = 20; // USB Low Priority or CAN1 RX0
Interrupts
CAN1_RX1_IRQn = 21; // CAN1 RX1 // interrupt
CAN1_SCE_IRQn = 22; // CAN1 SCE // interrupt
EXTI9_5_IRQn = 23; // External Line[9:5] Interrupts
TIM1_BRK_IRQn = 24; // TIM1 Break // interrupt
TIM1_UP_IRQn = 25; // TIM1 Update // interrupt
TIM1_TRG_COM_IRQn = 26; // TIM1 Trigger and Commutation //
interrupt
TIM1_CC_IRQn = 27; // TIM1 Capture Compare //
interrupt
TIM2_IRQn = 28; // TIM2 global // interrupt
TIM3_IRQn = 29; // TIM3 global // interrupt
I2C1_EV_IRQn = 31; // I2C1 Event // interrupt
I2C1_ER_IRQn = 32; // I2C1 Error // interrupt
SPI1_IRQn = 35; // SPI1 global // interrupt
USART1_IRQn = 37; // USART1 global // interrupt
USART2_IRQn = 38; // USART2 global // interrupt
EXTI15_10_IRQn = 40; // External Line[15:10] Interrupts
RTCAlarm_IRQn = 41; // RTC Alarm through EXTI Line //
interrupt
USBWakeUp_IRQn = 42; // USB WakeUp from suspend through
EXTI Line // interrupt
{$endif}
{$ifdef STM32F10X_LD_VL}
ADC1_2_IRQn = 18; // ADC1 et ADC2 global //
interrupt
EXTI9_5_IRQn = 23; // External Line[9:5] Interrupts
TIM1_BRK_IRQn = 24; // TIM1 Break // interrupt
TIM1_UP_IRQn = 25; // TIM1 Update // interrupt
....
More information about the fpc-pascal
mailing list