[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