fpc/rtl/embedded/arm/stm32f407xx.pp
2023-07-27 19:04:03 +02:00

1265 lines
62 KiB
ObjectPascal
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{$IFNDEF FPC_DOTTEDUNITS}
unit stm32f407xx;
{$ENDIF FPC_DOTTEDUNITS}
interface
{$PACKRECORDS 2}
{$GOTO ON}
{$MODESWITCH ADVANCEDRECORDS}
// *
// ******************************************************************************
// * @file stm32f407xx.h
// * @author MCD Application Team
// * @version V2.4.0
// * @date 14-August-2015
// CMSIS STM32F407xx Device Peripheral Access Layer Header File.
// *
// * This file contains:
// * - Data structures and the address mapping for all peripherals
// * - Peripheral's registers declarations and bits definition
// * - Macros to access peripherals registers hardware
// *
// ******************************************************************************
// * @attention
// *
// * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
// *
// * Redistribution and use in source and binary forms, with or without modification,
// * are permitted provided that the following conditions are met:
// * 1. Redistributions of source code must retain the above copyright notice,
// * this list of conditions and the following disclaimer.
// * 2. Redistributions in binary form must reproduce the above copyright notice,
// * this list of conditions and the following disclaimer in the documentation
// * and/or other materials provided with the distribution.
// * 3. Neither the name of STMicroelectronics nor the names of its contributors
// * may be used to endorse or promote products derived from this software
// * without specific prior written permission.
// *
// * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
// * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// *
// ******************************************************************************
// Configuration of the Cortex-M4 Processor and Core Peripherals
// STM32F4XX Interrupt Number Definition, according to the selected device
// * in @ref Library_configuration_section
type
TIRQn_Enum = (
NonMaskableInt_IRQn = -14, // 2 Non Maskable Interrupt
MemoryManagement_IRQn = -12, // 4 Cortex-M4 Memory Management Interrupt
BusFault_IRQn = -11, // 5 Cortex-M4 Bus Fault Interrupt
UsageFault_IRQn = -10, // 6 Cortex-M4 Usage Fault Interrupt
SVCall_IRQn = -5, // 11 Cortex-M4 SV Call Interrupt
DebugMonitor_IRQn = -4, // 12 Cortex-M4 Debug Monitor Interrupt
PendSV_IRQn = -2, // 14 Cortex-M4 Pend SV Interrupt
SysTick_IRQn = -1, // 15 Cortex-M4 System Tick Interrupt
WWDG_IRQn = 0, // Window WatchDog Interrupt
PVD_IRQn = 1, // PVD through EXTI Line detection Interrupt
TAMP_STAMP_IRQn = 2, // Tamper and TimeStamp interrupts through the EXTI line
RTC_WKUP_IRQn = 3, // RTC Wakeup interrupt through the EXTI line
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_Stream0_IRQn = 11, // DMA1 Stream 0 global Interrupt
DMA1_Stream1_IRQn = 12, // DMA1 Stream 1 global Interrupt
DMA1_Stream2_IRQn = 13, // DMA1 Stream 2 global Interrupt
DMA1_Stream3_IRQn = 14, // DMA1 Stream 3 global Interrupt
DMA1_Stream4_IRQn = 15, // DMA1 Stream 4 global Interrupt
DMA1_Stream5_IRQn = 16, // DMA1 Stream 5 global Interrupt
DMA1_Stream6_IRQn = 17, // DMA1 Stream 6 global Interrupt
ADC_IRQn = 18, // ADC1, ADC2 and ADC3 global Interrupts
CAN1_TX_IRQn = 19, // CAN1 TX Interrupt
CAN1_RX0_IRQn = 20, // CAN1 RX0 Interrupt
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_TIM9_IRQn = 24, // TIM1 Break interrupt and TIM9 global interrupt
TIM1_UP_TIM10_IRQn = 25, // TIM1 Update Interrupt and TIM10 global interrupt
TIM1_TRG_COM_TIM11_IRQn = 26, // TIM1 Trigger and Commutation Interrupt and TIM11 global interrupt
TIM1_CC_IRQn = 27, // TIM1 Capture Compare Interrupt
TIM2_IRQn = 28, // TIM2 global Interrupt
TIM3_IRQn = 29, // TIM3 global Interrupt
TIM4_IRQn = 30, // TIM4 global Interrupt
I2C1_EV_IRQn = 31, // I2C1 Event Interrupt
I2C1_ER_IRQn = 32, // I2C1 Error Interrupt
I2C2_EV_IRQn = 33, // I2C2 Event Interrupt
I2C2_ER_IRQn = 34, // I2C2 Error Interrupt
SPI1_IRQn = 35, // SPI1 global Interrupt
SPI2_IRQn = 36, // SPI2 global Interrupt
USART1_IRQn = 37, // USART1 global Interrupt
USART2_IRQn = 38, // USART2 global Interrupt
USART3_IRQn = 39, // USART3 global Interrupt
EXTI15_10_IRQn = 40, // External Line[15:10] Interrupts
RTC_Alarm_IRQn = 41, // RTC Alarm (A and B) through EXTI Line Interrupt
OTG_FS_WKUP_IRQn = 42, // USB OTG FS Wakeup through EXTI line interrupt
TIM8_BRK_TIM12_IRQn = 43, // TIM8 Break Interrupt and TIM12 global interrupt
TIM8_UP_TIM13_IRQn = 44, // TIM8 Update Interrupt and TIM13 global interrupt
TIM8_TRG_COM_TIM14_IRQn = 45, // TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt
TIM8_CC_IRQn = 46, // TIM8 Capture Compare Interrupt
DMA1_Stream7_IRQn = 47, // DMA1 Stream7 Interrupt
FSMC_IRQn = 48, // FSMC global Interrupt
SDIO_IRQn = 49, // SDIO global Interrupt
TIM5_IRQn = 50, // TIM5 global Interrupt
SPI3_IRQn = 51, // SPI3 global Interrupt
UART4_IRQn = 52, // UART4 global Interrupt
UART5_IRQn = 53, // UART5 global Interrupt
TIM6_DAC_IRQn = 54, // TIM6 global and DAC1&2 underrun error interrupts
TIM7_IRQn = 55, // TIM7 global interrupt
DMA2_Stream0_IRQn = 56, // DMA2 Stream 0 global Interrupt
DMA2_Stream1_IRQn = 57, // DMA2 Stream 1 global Interrupt
DMA2_Stream2_IRQn = 58, // DMA2 Stream 2 global Interrupt
DMA2_Stream3_IRQn = 59, // DMA2 Stream 3 global Interrupt
DMA2_Stream4_IRQn = 60, // DMA2 Stream 4 global Interrupt
ETH_IRQn = 61, // Ethernet global Interrupt
ETH_WKUP_IRQn = 62, // Ethernet Wakeup through EXTI line Interrupt
CAN2_TX_IRQn = 63, // CAN2 TX Interrupt
CAN2_RX0_IRQn = 64, // CAN2 RX0 Interrupt
CAN2_RX1_IRQn = 65, // CAN2 RX1 Interrupt
CAN2_SCE_IRQn = 66, // CAN2 SCE Interrupt
OTG_FS_IRQn = 67, // USB OTG FS global Interrupt
DMA2_Stream5_IRQn = 68, // DMA2 Stream 5 global interrupt
DMA2_Stream6_IRQn = 69, // DMA2 Stream 6 global interrupt
DMA2_Stream7_IRQn = 70, // DMA2 Stream 7 global interrupt
USART6_IRQn = 71, // USART6 global interrupt
I2C3_EV_IRQn = 72, // I2C3 event interrupt
I2C3_ER_IRQn = 73, // I2C3 error interrupt
OTG_HS_EP1_OUT_IRQn = 74, // USB OTG HS End Point 1 Out global interrupt
OTG_HS_EP1_IN_IRQn = 75, // USB OTG HS End Point 1 In global interrupt
OTG_HS_WKUP_IRQn = 76, // USB OTG HS Wakeup through EXTI interrupt
OTG_HS_IRQn = 77, // USB OTG HS global interrupt
DCMI_IRQn = 78, // DCMI global interrupt
HASH_RNG_IRQn = 80, // Hash and RNG global interrupt
FPU_IRQn = 81 // FPU global interrupt
);
TADC_Registers = record
SR : longword; // ADC status register
CR1 : longword; // ADC control register 1
CR2 : longword; // ADC control register 2
SMPR1 : longword; // ADC sample time register 1
SMPR2 : longword; // ADC sample time register 2
JOFR1 : longword; // ADC injected channel data offset register 1
JOFR2 : longword; // ADC injected channel data offset register 2
JOFR3 : longword; // ADC injected channel data offset register 3
JOFR4 : longword; // ADC injected channel data offset register 4
HTR : longword; // ADC watchdog higher threshold register
LTR : longword; // ADC watchdog lower threshold register
SQR1 : longword; // ADC regular sequence register 1
SQR2 : longword; // ADC regular sequence register 2
SQR3 : longword; // ADC regular sequence register 3
JSQR : longword; // ADC injected sequence register
JDR1 : longword; // ADC injected data register 1
JDR2 : longword; // ADC injected data register 2
JDR3 : longword; // ADC injected data register 3
JDR4 : longword; // ADC injected data register 4
DR : longword; // ADC regular data register
end;
TADC_COMMON_Registers = record
CSR : longword; // ADC Common status register
CCR : longword; // ADC common control register
CDR : longword; // ADC common regular data register for dual
end;
TCAN_TXMAILBOX_Registers = record
TIR : longword; // CAN TX mailbox identifier register
TDTR : longword; // CAN mailbox data length control and time stamp register
TDLR : longword; // CAN mailbox data low register
TDHR : longword; // CAN mailbox data high register
end;
TCAN_FIFOMAILBOX_Registers = record
RIR : longword; // CAN receive FIFO mailbox identifier register
RDTR : longword; // CAN receive FIFO mailbox data length control and time stamp register
RDLR : longword; // CAN receive FIFO mailbox data low register
RDHR : longword; // CAN receive FIFO mailbox data high register
end;
TCAN_FILTERREGISTER_Registers = record
FR1 : longword; // CAN Filter bank register 1
FR2 : longword; // CAN Filter bank register 1
end;
TCAN_Registers = record
MCR : longword; // CAN master control register
MSR : longword; // CAN master status register
TSR : longword; // CAN transmit status register
RF0R : longword; // CAN receive FIFO 0 register
RF1R : longword; // CAN receive FIFO 1 register
IER : longword; // CAN interrupt enable register
ESR : longword; // CAN error status register
BTR : longword; // CAN bit timing register
RESERVED0 : array[0..87] of longword; // Reserved, 0x020 - 0x17F
sTxMailBox : array[0..2] of TCAN_TXMAILBOX_Registers; // CAN Tx MailBox
sFIFOMailBox : array[0..1] of TCAN_FIFOMAILBOX_Registers; // CAN FIFO MailBox
RESERVED1 : array[0..11] of longword; // Reserved, 0x1D0 - 0x1FF
FMR : longword; // CAN filter master register
FM1R : longword; // CAN filter mode register
RESERVED2 : longword; // Reserved, 0x208
FS1R : longword; // CAN filter scale register
RESERVED3 : longword; // Reserved, 0x210
FFA1R : longword; // CAN filter FIFO assignment register
RESERVED4 : longword; // Reserved, 0x218
FA1R : longword; // CAN filter activation register
RESERVED5 : array[0..7] of longword; // Reserved, 0x220-0x23F
sFilterRegister : array[0..27] of TCAN_FILTERREGISTER_Registers; // CAN Filter Register
end;
TCRC_Registers = record
DR : longword; // CRC Data register
IDR : byte; // CRC Independent data register
RESERVED0 : byte; // Reserved, 0x05
RESERVED1 : word; // Reserved, 0x06
CR : longword; // CRC Control register
end;
TDAC_Registers = record
CR : longword; // DAC control register
SWTRIGR : longword; // DAC software trigger register
DHR12R1 : longword; // DAC channel1 12-bit right-aligned data holding register
DHR12L1 : longword; // DAC channel1 12-bit left aligned data holding register
DHR8R1 : longword; // DAC channel1 8-bit right aligned data holding register
DHR12R2 : longword; // DAC channel2 12-bit right aligned data holding register
DHR12L2 : longword; // DAC channel2 12-bit left aligned data holding register
DHR8R2 : longword; // DAC channel2 8-bit right-aligned data holding register
DHR12RD : longword; // Dual DAC 12-bit right-aligned data holding register
DHR12LD : longword; // DUAL DAC 12-bit left aligned data holding register
DHR8RD : longword; // DUAL DAC 8-bit right aligned data holding register
DOR1 : longword; // DAC channel1 data output register
DOR2 : longword; // DAC channel2 data output register
SR : longword; // DAC status register
end;
TDBGMCU_Registers = record
IDCODE : longword; // MCU device ID code
CR : longword; // Debug MCU configuration register
APB1FZ : longword; // Debug MCU APB1 freeze register
APB2FZ : longword; // Debug MCU APB2 freeze register
end;
TDCMI_Registers = record
CR : longword; // DCMI control register 1
SR : longword; // DCMI status register
RISR : longword; // DCMI raw interrupt status register
IER : longword; // DCMI interrupt enable register
MISR : longword; // DCMI masked interrupt status register
ICR : longword; // DCMI interrupt clear register
ESCR : longword; // DCMI embedded synchronization code register
ESUR : longword; // DCMI embedded synchronization unmask register
CWSTRTR : longword; // DCMI crop window start
CWSIZER : longword; // DCMI crop window size
DR : longword; // DCMI data register
end;
TDMA_STREAM_Registers = record
CR : longword; // DMA stream x configuration register
NDTR : longword; // DMA stream x number of data register
PAR : longword; // DMA stream x peripheral address register
M0AR : longword; // DMA stream x memory 0 address register
M1AR : longword; // DMA stream x memory 1 address register
FCR : longword; // DMA stream x FIFO control register
end;
TDMA_Registers = record
LISR : longword; // DMA low interrupt status register
HISR : longword; // DMA high interrupt status register
LIFCR : longword; // DMA low interrupt flag clear register
HIFCR : longword; // DMA high interrupt flag clear register
end;
TETH_Registers = record
MACCR : longword;
MACFFR : longword;
MACHTHR : longword;
MACHTLR : longword;
MACMIIAR : longword;
MACMIIDR : longword;
MACFCR : longword;
MACVLANTR : longword; // 8
RESERVED0 : array[0..1] of longword;
MACRWUFFR : longword; // 11
MACPMTCSR : longword;
RESERVED1 : array[0..1] of longword;
MACSR : longword; // 15
MACIMR : longword;
MACA0HR : longword;
MACA0LR : longword;
MACA1HR : longword;
MACA1LR : longword;
MACA2HR : longword;
MACA2LR : longword;
MACA3HR : longword;
MACA3LR : longword; // 24
RESERVED2 : array[0..39] of longword;
MMCCR : longword; // 65
MMCRIR : longword;
MMCTIR : longword;
MMCRIMR : longword;
MMCTIMR : longword; // 69
RESERVED3 : array[0..13] of longword;
MMCTGFSCCR : longword; // 84
MMCTGFMSCCR : longword;
RESERVED4 : array[0..4] of longword;
MMCTGFCR : longword;
RESERVED5 : array[0..9] of longword;
MMCRFCECR : longword;
MMCRFAECR : longword;
RESERVED6 : array[0..9] of longword;
MMCRGUFCR : longword;
RESERVED7 : array[0..333] of longword;
PTPTSCR : longword;
PTPSSIR : longword;
PTPTSHR : longword;
PTPTSLR : longword;
PTPTSHUR : longword;
PTPTSLUR : longword;
PTPTSAR : longword;
PTPTTHR : longword;
PTPTTLR : longword;
RESERVED8 : longword;
PTPTSSR : longword;
RESERVED9 : array[0..564] of longword;
DMABMR : longword;
DMATPDR : longword;
DMARPDR : longword;
DMARDLAR : longword;
DMATDLAR : longword;
DMASR : longword;
DMAOMR : longword;
DMAIER : longword;
DMAMFBOCR : longword;
DMARSWTR : longword;
RESERVED10 : array[0..7] of longword;
DMACHTDR : longword;
DMACHRDR : longword;
DMACHTBAR : longword;
DMACHRBAR : longword;
end;
TEXTI_Registers = record
IMR : longword; // EXTI Interrupt mask register
EMR : longword; // EXTI Event mask register
RTSR : longword; // EXTI Rising trigger selection register
FTSR : longword; // EXTI Falling trigger selection register
SWIER : longword; // EXTI Software interrupt event register
PR : longword; // EXTI Pending register
end;
TFLASH_Registers = record
ACR : longword; // FLASH access control register
KEYR : longword; // FLASH key register
OPTKEYR : longword; // FLASH option key register
SR : longword; // FLASH status register
CR : longword; // FLASH control register
OPTCR : longword; // FLASH option control register
OPTCR1 : longword; // FLASH option control register 1
end;
TFSMC_BANK1_Registers = record
BTCR : array[0..7] of longword; // NOR/PSRAM chip-select control register(BCR) and chip-select timing register(BTR)
end;
TFSMC_BANK1E_Registers = record
BWTR : array[0..6] of longword; // NOR/PSRAM write timing registers
end;
TFSMC_BANK2_3_Registers = record
PCR2 : longword; // NAND Flash control register 2
SR2 : longword; // NAND Flash FIFO status and interrupt register 2
PMEM2 : longword; // NAND Flash Common memory space timing register 2
PATT2 : longword; // NAND Flash Attribute memory space timing register 2
RESERVED0 : longword; // Reserved, 0x70
ECCR2 : longword; // NAND Flash ECC result registers 2
RESERVED1 : longword; // Reserved, 0x78
RESERVED2 : longword; // Reserved, 0x7C
PCR3 : longword; // NAND Flash control register 3
SR3 : longword; // NAND Flash FIFO status and interrupt register 3
PMEM3 : longword; // NAND Flash Common memory space timing register 3
PATT3 : longword; // NAND Flash Attribute memory space timing register 3
RESERVED3 : longword; // Reserved, 0x90
ECCR3 : longword; // NAND Flash ECC result registers 3
end;
TFSMC_BANK4_Registers = record
PCR4 : longword; // PC Card control register 4
SR4 : longword; // PC Card FIFO status and interrupt register 4
PMEM4 : longword; // PC Card Common memory space timing register 4
PATT4 : longword; // PC Card Attribute memory space timing register 4
PIO4 : longword; // PC Card I/O space timing register 4
end;
TGPIO_Registers = record
MODER : longword; // GPIO port mode register
OTYPER : longword; // GPIO port output type register
OSPEEDR : longword; // GPIO port output speed register
PUPDR : longword; // GPIO port pull-up/pull-down register
IDR : longword; // GPIO port input data register
ODR : longword; // GPIO port output data register
BSRR : longword; // GPIO port bit set/reset register
LCKR : longword; // GPIO port configuration lock register
AFR : array[0..1] of longword; // GPIO alternate function registers
end;
TSYSCFG_Registers = record
MEMRMP : longword; // SYSCFG memory remap register
PMC : longword; // SYSCFG peripheral mode configuration register
EXTICR : array[0..3] of longword; // SYSCFG external interrupt configuration registers
RESERVED : array[0..1] of longword; // Reserved, 0x18-0x1C
CMPCR : longword; // SYSCFG Compensation cell control register
end;
TI2C_Registers = record
CR1 : longword; // I2C Control register 1
CR2 : longword; // I2C Control register 2
OAR1 : longword; // I2C Own address register 1
OAR2 : longword; // I2C Own address register 2
DR : longword; // I2C Data register
SR1 : longword; // I2C Status register 1
SR2 : longword; // I2C Status register 2
CCR : longword; // I2C Clock control register
TRISE : longword; // I2C TRISE register
FLTR : longword; // I2C FLTR register
end;
TIWDG_Registers = record
KR : longword; // IWDG Key register
PR : longword; // IWDG Prescaler register
RLR : longword; // IWDG Reload register
SR : longword; // IWDG Status register
end;
TPWR_Registers = record
CR : longword; // PWR power control register
CSR : longword; // PWR power control/status register
end;
TRCC_Registers = record
CR : longword; // RCC clock control register
PLLCFGR : longword; // RCC PLL configuration register
CFGR : longword; // RCC clock configuration register
CIR : longword; // RCC clock interrupt register
AHB1RSTR : longword; // RCC AHB1 peripheral reset register
AHB2RSTR : longword; // RCC AHB2 peripheral reset register
AHB3RSTR : longword; // RCC AHB3 peripheral reset register
RESERVED0 : longword; // Reserved, 0x1C
APB1RSTR : longword; // RCC APB1 peripheral reset register
APB2RSTR : longword; // RCC APB2 peripheral reset register
RESERVED1 : array[0..1] of longword; // Reserved, 0x28-0x2C
AHB1ENR : longword; // RCC AHB1 peripheral clock register
AHB2ENR : longword; // RCC AHB2 peripheral clock register
AHB3ENR : longword; // RCC AHB3 peripheral clock register
RESERVED2 : longword; // Reserved, 0x3C
APB1ENR : longword; // RCC APB1 peripheral clock enable register
APB2ENR : longword; // RCC APB2 peripheral clock enable register
RESERVED3 : array[0..1] of longword; // Reserved, 0x48-0x4C
AHB1LPENR : longword; // RCC AHB1 peripheral clock enable in low power mode register
AHB2LPENR : longword; // RCC AHB2 peripheral clock enable in low power mode register
AHB3LPENR : longword; // RCC AHB3 peripheral clock enable in low power mode register
RESERVED4 : longword; // Reserved, 0x5C
APB1LPENR : longword; // RCC APB1 peripheral clock enable in low power mode register
APB2LPENR : longword; // RCC APB2 peripheral clock enable in low power mode register
RESERVED5 : array[0..1] of longword; // Reserved, 0x68-0x6C
BDCR : longword; // RCC Backup domain control register
CSR : longword; // RCC clock control & status register
RESERVED6 : array[0..1] of longword; // Reserved, 0x78-0x7C
SSCGR : longword; // RCC spread spectrum clock generation register
PLLI2SCFGR : longword; // RCC PLLI2S configuration register
RESERVED7 : longword; // Reserved, 0x88
DCKCFGR : longWord; // RCC Dedicated Clocks Configuration Register
end;
TRTC_Registers = record
TR : longword; // RTC time register
DR : longword; // RTC date register
CR : longword; // RTC control register
ISR : longword; // RTC initialization and status register
PRER : longword; // RTC prescaler register
WUTR : longword; // RTC wakeup timer register
CALIBR : longword; // RTC calibration register
ALRMAR : longword; // RTC alarm A register
ALRMBR : longword; // RTC alarm B register
WPR : longword; // RTC write protection register
SSR : longword; // RTC sub second register
SHIFTR : longword; // RTC shift control register
TSTR : longword; // RTC time stamp time register
TSDR : longword; // RTC time stamp date register
TSSSR : longword; // RTC time-stamp sub second register
CALR : longword; // RTC calibration register
TAFCR : longword; // RTC tamper and alternate function configuration register
ALRMASSR : longword; // RTC alarm A sub second register
ALRMBSSR : longword; // RTC alarm B sub second register
RESERVED7 : longword; // Reserved, 0x4C
BKP0R : longword; // RTC backup register 1
BKP1R : longword; // RTC backup register 1
BKP2R : longword; // RTC backup register 2
BKP3R : longword; // RTC backup register 3
BKP4R : longword; // RTC backup register 4
BKP5R : longword; // RTC backup register 5
BKP6R : longword; // RTC backup register 6
BKP7R : longword; // RTC backup register 7
BKP8R : longword; // RTC backup register 8
BKP9R : longword; // RTC backup register 9
BKP10R : longword; // RTC backup register 10
BKP11R : longword; // RTC backup register 11
BKP12R : longword; // RTC backup register 12
BKP13R : longword; // RTC backup register 13
BKP14R : longword; // RTC backup register 14
BKP15R : longword; // RTC backup register 15
BKP16R : longword; // RTC backup register 16
BKP17R : longword; // RTC backup register 17
BKP18R : longword; // RTC backup register 18
BKP19R : longword; // RTC backup register 19
end;
TSDIO_Registers = record
POWER : longword; // SDIO power control register
CLKCR : longword; // SDI clock control register
ARG : longword; // SDIO argument register
CMD : longword; // SDIO command register
RESPCMD : longword; // SDIO command response register
RESP1 : longword; // SDIO response 1 register
RESP2 : longword; // SDIO response 2 register
RESP3 : longword; // SDIO response 3 register
RESP4 : longword; // SDIO response 4 register
DTIMER : longword; // SDIO data timer register
DLEN : longword; // SDIO data length register
DCTRL : longword; // SDIO data control register
DCOUNT : longword; // SDIO data counter register
STA : longword; // SDIO status register
ICR : longword; // SDIO interrupt clear register
MASK : longword; // SDIO mask register
RESERVED0 : array[0..1] of longword; // Reserved, 0x40-0x44
FIFOCNT : longword; // SDIO FIFO counter register
RESERVED1 : array[0..12] of longword; // Reserved, 0x4C-0x7C
FIFO : longword; // SDIO data FIFO register
end;
TSPI_Registers = record
CR1 : longword; // SPI control register 1 (not used in I2S mode)
CR2 : longword; // SPI control register 2
SR : longword; // SPI status register
DR : longword; // SPI data register
CRCPR : longword; // SPI CRC polynomial register (not used in I2S mode)
RXCRCR : longword; // SPI RX CRC register (not used in I2S mode)
TXCRCR : longword; // SPI TX CRC register (not used in I2S mode)
I2SCFGR : longword; // SPI_I2S configuration register
I2SPR : longword; // SPI_I2S prescaler register
end;
TTIM_Registers = record
CR1 : longword; // TIM control register 1
CR2 : longword; // TIM control register 2
SMCR : longword; // TIM slave mode control register
DIER : longword; // TIM DMA/interrupt enable register
SR : longword; // TIM status register
EGR : longword; // TIM event generation register
CCMR1 : longword; // TIM capture/compare mode register 1
CCMR2 : longword; // TIM capture/compare mode register 2
CCER : longword; // TIM capture/compare enable register
CNT : longword; // TIM counter register
PSC : longword; // TIM prescaler
ARR : longword; // TIM auto-reload register
RCR : longword; // TIM repetition counter register
CCR1 : longword; // TIM capture/compare register 1
CCR2 : longword; // TIM capture/compare register 2
CCR3 : longword; // TIM capture/compare register 3
CCR4 : longword; // TIM capture/compare register 4
BDTR : longword; // TIM break and dead-time register
DCR : longword; // TIM DMA control register
DMAR : longword; // TIM DMA address for full transfer
&OR : longword; // TIM option register
end;
TUSART_Registers = record
SR : longword; // USART Status register
DR : longword; // USART Data register
BRR : longword; // USART Baud rate register
CR1 : longword; // USART Control register 1
CR2 : longword; // USART Control register 2
CR3 : longword; // USART Control register 3
GTPR : longword; // USART Guard time and prescaler register
end;
TWWDG_Registers = record
CR : longword; // WWDG Control register
CFR : longword; // WWDG Configuration register
SR : longword; // WWDG Status register
end;
TRNG_Registers = record
CR : longword; // RNG control register
SR : longword; // RNG status register
DR : longword; // RNG data register
end;
TUSB_OTG_GLOBAL_Registers = record
GOTGCTL : longword; // USB_OTG Control and Status Register 000h
GOTGINT : longword; // USB_OTG Interrupt Register 004h
GAHBCFG : longword; // Core AHB Configuration Register 008h
GUSBCFG : longword; // Core USB Configuration Register 00Ch
GRSTCTL : longword; // Core Reset Register 010h
GINTSTS : longword; // Core Interrupt Register 014h
GINTMSK : longword; // Core Interrupt Mask Register 018h
GRXSTSR : longword; // Receive Sts Q Read Register 01Ch
GRXSTSP : longword; // Receive Sts Q Read & POP Register 020h
GRXFSIZ : longword; // Receive FIFO Size Register 024h
DIEPTXF0_HNPTXFSIZ : longword; // EP0 / Non Periodic Tx FIFO Size Register 028h
HNPTXSTS : longword; // Non Periodic Tx FIFO/Queue Sts reg 02Ch
RESERVED30 : array[0..1] of longword; // Reserved 030h
GCCFG : longword; // General Purpose IO Register 038h
CID : longword; // User ID Register 03Ch
RESERVED40 : array[0..47] of longword; // Reserved 040h-0FFh
HPTXFSIZ : longword; // Host Periodic Tx FIFO Size Reg 100h
DIEPTXF : array[0..14] of longword; // dev Periodic Transmit FIFO
end;
TUSB_OTG_DEVICE_Registers = record
DCFG : longword; // dev Configuration Register 800h
DCTL : longword; // dev Control Register 804h
DSTS : longword; // dev Status Register (RO) 808h
RESERVED0C : longword; // Reserved 80Ch
DIEPMSK : longword; // dev IN Endpoint Mask 810h
DOEPMSK : longword; // dev OUT Endpoint Mask 814h
DAINT : longword; // dev All Endpoints Itr Reg 818h
DAINTMSK : longword; // dev All Endpoints Itr Mask 81Ch
RESERVED20 : longword; // Reserved 820h
RESERVED9 : longword; // Reserved 824h
DVBUSDIS : longword; // dev VBUS discharge Register 828h
DVBUSPULSE : longword; // dev VBUS Pulse Register 82Ch
DTHRCTL : longword; // dev thr 830h
DIEPEMPMSK : longword; // dev empty msk 834h
DEACHINT : longword; // dedicated EP interrupt 838h
DEACHMSK : longword; // dedicated EP msk 83Ch
RESERVED40 : longword; // dedicated EP mask 840h
DINEP1MSK : longword; // dedicated EP mask 844h
RESERVED44 : array[0..14] of longword; // Reserved 844-87Ch
DOUTEP1MSK : longword; // dedicated EP msk 884h
end;
TUSB_OTG_INENDPOINT_Registers = record
DIEPCTL : longword; // dev IN Endpoint Control Reg 900h + (ep_num * 20h) + 00h
RESERVED04 : longword; // Reserved 900h + (ep_num * 20h) + 04h
DIEPINT : longword; // dev IN Endpoint Itr Reg 900h + (ep_num * 20h) + 08h
RESERVED0C : longword; // Reserved 900h + (ep_num * 20h) + 0Ch
DIEPTSIZ : longword; // IN Endpoint Txfer Size 900h + (ep_num * 20h) + 10h
DIEPDMA : longword; // IN Endpoint DMA Address Reg 900h + (ep_num * 20h) + 14h
DTXFSTS : longword; // IN Endpoint Tx FIFO Status Reg 900h + (ep_num * 20h) + 18h
RESERVED18 : longword; // Reserved 900h+(ep_num*20h)+1Ch-900h+ (ep_num * 20h) + 1Ch
end;
TUSB_OTG_OUTENDPOINT_Registers = record
DOEPCTL : longword; // dev OUT Endpoint Control Reg B00h + (ep_num * 20h) + 00h
RESERVED04 : longword; // Reserved B00h + (ep_num * 20h) + 04h
DOEPINT : longword; // dev OUT Endpoint Itr Reg B00h + (ep_num * 20h) + 08h
RESERVED0C : longword; // Reserved B00h + (ep_num * 20h) + 0Ch
DOEPTSIZ : longword; // dev OUT Endpoint Txfer Size B00h + (ep_num * 20h) + 10h
DOEPDMA : longword; // dev OUT Endpoint DMA Address B00h + (ep_num * 20h) + 14h
RESERVED18 : array[0..1] of longword; // Reserved B00h + (ep_num * 20h) + 18h - B00h + (ep_num * 20h) + 1Ch
end;
TUSB_OTG_HOST_Registers = record
HCFG : longword; // Host Configuration Register 400h
HFIR : longword; // Host Frame Interval Register 404h
HFNUM : longword; // Host Frame Nbr/Frame Remaining 408h
RESERVED40C : longword; // Reserved 40Ch
HPTXSTS : longword; // Host Periodic Tx FIFO/ Queue Status 410h
HAINT : longword; // Host All Channels Interrupt Register 414h
HAINTMSK : longword; // Host All Channels Interrupt Mask 418h
end;
TUSB_OTG_HOSTCHANNEL_Registers = record
HCCHAR : longword;
HCSPLT : longword;
HCINT : longword;
HCINTMSK : longword;
HCTSIZ : longword;
HCDMA : longword;
RESERVED : array[0..1] of longword;
end;
const
FLASH_BASE = $08000000; // FLASH(up to 1 MB) base address in the alias region
CCMDATARAM_BASE = $10000000; // CCM(core coupled memory) data RAM(64 KB) base address in the alias region
SRAM1_BASE = $20000000; // SRAM1(112 KB) base address in the alias region
SRAM2_BASE = $2001C000; // SRAM2(16 KB) base address in the alias region
PERIPH_BASE = $40000000; // Peripheral base address in the alias region
BKPSRAM_BASE = $40024000; // Backup SRAM(4 KB) base address in the alias region
FSMC_R_BASE = $A0000000; // FSMC registers base address
SRAM1_BB_BASE = $22000000; // SRAM1(112 KB) base address in the bit-band region
SRAM2_BB_BASE = $22380000; // SRAM2(16 KB) base address in the bit-band region
PERIPH_BB_BASE = $42000000; // Peripheral base address in the bit-band region
BKPSRAM_BB_BASE = $42480000; // Backup SRAM(4 KB) base address in the bit-band region
SRAM_BASE = $20000000;
SRAM_BB_BASE = $22000000;
APB1PERIPH_BASE = $40000000;
APB2PERIPH_BASE = PERIPH_BASE + $00010000;
AHB1PERIPH_BASE = PERIPH_BASE + $00020000;
AHB2PERIPH_BASE = PERIPH_BASE + $10000000;
TIM2_BASE = APB1PERIPH_BASE + $0000;
TIM3_BASE = APB1PERIPH_BASE + $0400;
TIM4_BASE = APB1PERIPH_BASE + $0800;
TIM5_BASE = APB1PERIPH_BASE + $0C00;
TIM6_BASE = APB1PERIPH_BASE + $1000;
TIM7_BASE = APB1PERIPH_BASE + $1400;
TIM12_BASE = APB1PERIPH_BASE + $1800;
TIM13_BASE = APB1PERIPH_BASE + $1C00;
TIM14_BASE = APB1PERIPH_BASE + $2000;
RTC_BASE = APB1PERIPH_BASE + $2800;
WWDG_BASE = APB1PERIPH_BASE + $2C00;
IWDG_BASE = APB1PERIPH_BASE + $3000;
I2S2ext_BASE = APB1PERIPH_BASE + $3400;
SPI2_BASE = APB1PERIPH_BASE + $3800;
SPI3_BASE = APB1PERIPH_BASE + $3C00;
I2S3ext_BASE = APB1PERIPH_BASE + $4000;
USART2_BASE = APB1PERIPH_BASE + $4400;
USART3_BASE = APB1PERIPH_BASE + $4800;
UART4_BASE = APB1PERIPH_BASE + $4C00;
UART5_BASE = APB1PERIPH_BASE + $5000;
I2C1_BASE = APB1PERIPH_BASE + $5400;
I2C2_BASE = APB1PERIPH_BASE + $5800;
I2C3_BASE = APB1PERIPH_BASE + $5C00;
CAN1_BASE = APB1PERIPH_BASE + $6400;
CAN2_BASE = APB1PERIPH_BASE + $6800;
PWR_BASE = APB1PERIPH_BASE + $7000;
DAC_BASE = APB1PERIPH_BASE + $7400;
TIM1_BASE = APB2PERIPH_BASE + $0000;
TIM8_BASE = APB2PERIPH_BASE + $0400;
USART1_BASE = APB2PERIPH_BASE + $1000;
USART6_BASE = APB2PERIPH_BASE + $1400;
ADC1_BASE = APB2PERIPH_BASE + $2000;
ADC2_BASE = APB2PERIPH_BASE + $2100;
ADC3_BASE = APB2PERIPH_BASE + $2200;
ADC_BASE = APB2PERIPH_BASE + $2300;
SDIO_BASE = APB2PERIPH_BASE + $2C00;
SPI1_BASE = APB2PERIPH_BASE + $3000;
SYSCFG_BASE = APB2PERIPH_BASE + $3800;
EXTI_BASE = APB2PERIPH_BASE + $3C00;
TIM9_BASE = APB2PERIPH_BASE + $4000;
TIM10_BASE = APB2PERIPH_BASE + $4400;
TIM11_BASE = APB2PERIPH_BASE + $4800;
GPIOA_BASE = AHB1PERIPH_BASE + $0000;
GPIOB_BASE = AHB1PERIPH_BASE + $0400;
GPIOC_BASE = AHB1PERIPH_BASE + $0800;
GPIOD_BASE = AHB1PERIPH_BASE + $0C00;
GPIOE_BASE = AHB1PERIPH_BASE + $1000;
GPIOF_BASE = AHB1PERIPH_BASE + $1400;
GPIOG_BASE = AHB1PERIPH_BASE + $1800;
GPIOH_BASE = AHB1PERIPH_BASE + $1C00;
GPIOI_BASE = AHB1PERIPH_BASE + $2000;
CRC_BASE = AHB1PERIPH_BASE + $3000;
RCC_BASE = AHB1PERIPH_BASE + $3800;
FLASH_R_BASE = AHB1PERIPH_BASE + $3C00;
DMA1_BASE = AHB1PERIPH_BASE + $6000;
DMA1_Stream0_BASE = DMA1_BASE + $010;
DMA1_Stream1_BASE = DMA1_BASE + $028;
DMA1_Stream2_BASE = DMA1_BASE + $040;
DMA1_Stream3_BASE = DMA1_BASE + $058;
DMA1_Stream4_BASE = DMA1_BASE + $070;
DMA1_Stream5_BASE = DMA1_BASE + $088;
DMA1_Stream6_BASE = DMA1_BASE + $0A0;
DMA1_Stream7_BASE = DMA1_BASE + $0B8;
DMA2_BASE = AHB1PERIPH_BASE + $6400;
DMA2_Stream0_BASE = DMA2_BASE + $010;
DMA2_Stream1_BASE = DMA2_BASE + $028;
DMA2_Stream2_BASE = DMA2_BASE + $040;
DMA2_Stream3_BASE = DMA2_BASE + $058;
DMA2_Stream4_BASE = DMA2_BASE + $070;
DMA2_Stream5_BASE = DMA2_BASE + $088;
DMA2_Stream6_BASE = DMA2_BASE + $0A0;
DMA2_Stream7_BASE = DMA2_BASE + $0B8;
ETH_BASE = AHB1PERIPH_BASE + $8000;
ETH_MAC_BASE = AHB1PERIPH_BASE + $8000;
ETH_MMC_BASE = ETH_BASE + $0100;
ETH_PTP_BASE = ETH_BASE + $0700;
ETH_DMA_BASE = ETH_BASE + $1000;
DCMI_BASE = AHB2PERIPH_BASE + $50000;
RNG_BASE = AHB2PERIPH_BASE + $60800;
FSMC_Bank1_R_BASE = FSMC_R_BASE + $0000;
FSMC_Bank1E_R_BASE = FSMC_R_BASE + $0104;
FSMC_Bank2_3_R_BASE = FSMC_R_BASE + $0060;
FSMC_Bank4_R_BASE = FSMC_R_BASE + $00A0;
DBGMCU_BASE = $E0042000;
USB_OTG_HS_PERIPH_BASE = $40040000;
USB_OTG_FS_PERIPH_BASE = $50000000;
USB_OTG_GLOBAL_BASE = $000;
USB_OTG_DEVICE_BASE = $800;
USB_OTG_IN_ENDPOINT_BASE = $900;
USB_OTG_OUT_ENDPOINT_BASE = $B00;
USB_OTG_HOST_BASE = $400;
USB_OTG_HOST_PORT_BASE = $440;
USB_OTG_HOST_CHANNEL_BASE = $500;
USB_OTG_PCGCCTL_BASE = $E00;
USB_OTG_FIFO_BASE = $1000;
var
TIM2 : TTIM_Registers absolute TIM2_BASE;
TIM3 : TTIM_Registers absolute TIM3_BASE;
TIM4 : TTIM_Registers absolute TIM4_BASE;
TIM5 : TTIM_Registers absolute TIM5_BASE;
TIM6 : TTIM_Registers absolute TIM6_BASE;
TIM7 : TTIM_Registers absolute TIM7_BASE;
TIM12 : TTIM_Registers absolute TIM12_BASE;
TIM13 : TTIM_Registers absolute TIM13_BASE;
TIM14 : TTIM_Registers absolute TIM14_BASE;
RTC : TRTC_Registers absolute RTC_BASE;
WWDG : TWWDG_Registers absolute WWDG_BASE;
IWDG : TIWDG_Registers absolute IWDG_BASE;
I2S2ext : TSPI_Registers absolute I2S2ext_BASE;
SPI2 : TSPI_Registers absolute SPI2_BASE;
SPI3 : TSPI_Registers absolute SPI3_BASE;
I2S3ext : TSPI_Registers absolute I2S3ext_BASE;
USART2 : TUSART_Registers absolute USART2_BASE;
USART3 : TUSART_Registers absolute USART3_BASE;
UART4 : TUSART_Registers absolute UART4_BASE;
UART5 : TUSART_Registers absolute UART5_BASE;
I2C1 : TI2C_Registers absolute I2C1_BASE;
I2C2 : TI2C_Registers absolute I2C2_BASE;
I2C3 : TI2C_Registers absolute I2C3_BASE;
CAN1 : TCAN_Registers absolute CAN1_BASE;
CAN2 : TCAN_Registers absolute CAN2_BASE;
PWR : TPWR_Registers absolute PWR_BASE;
DAC : TDAC_Registers absolute DAC_BASE;
TIM1 : TTIM_Registers absolute TIM1_BASE;
TIM8 : TTIM_Registers absolute TIM8_BASE;
USART1 : TUSART_Registers absolute USART1_BASE;
USART6 : TUSART_Registers absolute USART6_BASE;
ADC : TADC_Common_Registers absolute ADC_BASE;
ADC1 : TADC_Registers absolute ADC1_BASE;
ADC2 : TADC_Registers absolute ADC2_BASE;
ADC3 : TADC_Registers absolute ADC3_BASE;
SDIO : TSDIO_Registers absolute SDIO_BASE;
SPI1 : TSPI_Registers absolute SPI1_BASE;
SYSCFG : TSYSCFG_Registers absolute SYSCFG_BASE;
EXTI : TEXTI_Registers absolute EXTI_BASE;
TIM9 : TTIM_Registers absolute TIM9_BASE;
TIM10 : TTIM_Registers absolute TIM10_BASE;
TIM11 : TTIM_Registers absolute TIM11_BASE;
GPIOA : TGPIO_Registers absolute GPIOA_BASE;
GPIOB : TGPIO_Registers absolute GPIOB_BASE;
GPIOC : TGPIO_Registers absolute GPIOC_BASE;
GPIOD : TGPIO_Registers absolute GPIOD_BASE;
GPIOE : TGPIO_Registers absolute GPIOE_BASE;
GPIOF : TGPIO_Registers absolute GPIOF_BASE;
GPIOG : TGPIO_Registers absolute GPIOG_BASE;
GPIOH : TGPIO_Registers absolute GPIOH_BASE;
GPIOI : TGPIO_Registers absolute GPIOI_BASE;
CRC : TCRC_Registers absolute CRC_BASE;
RCC : TRCC_Registers absolute RCC_BASE;
FLASH : TFLASH_Registers absolute FLASH_R_BASE;
DMA1 : TDMA_Registers absolute DMA1_BASE;
DMA1_Stream0 : TDMA_Stream_Registers absolute DMA1_Stream0_BASE;
DMA1_Stream1 : TDMA_Stream_Registers absolute DMA1_Stream1_BASE;
DMA1_Stream2 : TDMA_Stream_Registers absolute DMA1_Stream2_BASE;
DMA1_Stream3 : TDMA_Stream_Registers absolute DMA1_Stream3_BASE;
DMA1_Stream4 : TDMA_Stream_Registers absolute DMA1_Stream4_BASE;
DMA1_Stream5 : TDMA_Stream_Registers absolute DMA1_Stream5_BASE;
DMA1_Stream6 : TDMA_Stream_Registers absolute DMA1_Stream6_BASE;
DMA1_Stream7 : TDMA_Stream_Registers absolute DMA1_Stream7_BASE;
DMA2 : TDMA_Registers absolute DMA2_BASE;
DMA2_Stream0 : TDMA_Stream_Registers absolute DMA2_Stream0_BASE;
DMA2_Stream1 : TDMA_Stream_Registers absolute DMA2_Stream1_BASE;
DMA2_Stream2 : TDMA_Stream_Registers absolute DMA2_Stream2_BASE;
DMA2_Stream3 : TDMA_Stream_Registers absolute DMA2_Stream3_BASE;
DMA2_Stream4 : TDMA_Stream_Registers absolute DMA2_Stream4_BASE;
DMA2_Stream5 : TDMA_Stream_Registers absolute DMA2_Stream5_BASE;
DMA2_Stream6 : TDMA_Stream_Registers absolute DMA2_Stream6_BASE;
DMA2_Stream7 : TDMA_Stream_Registers absolute DMA2_Stream7_BASE;
ETH : TETH_Registers absolute ETH_BASE;
DCMI : TDCMI_Registers absolute DCMI_BASE;
RNG : TRNG_Registers absolute RNG_BASE;
FSMC_Bank1 : TFSMC_Bank1_Registers absolute FSMC_Bank1_R_BASE;
FSMC_Bank1E : TFSMC_Bank1E_Registers absolute FSMC_Bank1E_R_BASE;
FSMC_Bank2_3 : TFSMC_Bank2_3_Registers absolute FSMC_Bank2_3_R_BASE;
FSMC_Bank4 : TFSMC_Bank4_Registers absolute FSMC_Bank4_R_BASE;
DBGMCU : TDBGMCU_Registers absolute DBGMCU_BASE;
implementation
procedure NonMaskableInt_interrupt; external name 'NonMaskableInt_interrupt';
procedure MemoryManagement_interrupt; external name 'MemoryManagement_interrupt';
procedure BusFault_interrupt; external name 'BusFault_interrupt';
procedure UsageFault_interrupt; external name 'UsageFault_interrupt';
procedure SVCall_interrupt; external name 'SVCall_interrupt';
procedure DebugMonitor_interrupt; external name 'DebugMonitor_interrupt';
procedure PendSV_interrupt; external name 'PendSV_interrupt';
procedure SysTick_interrupt; external name 'SysTick_interrupt';
procedure WWDG_interrupt; external name 'WWDG_interrupt';
procedure PVD_interrupt; external name 'PVD_interrupt';
procedure TAMP_STAMP_interrupt; external name 'TAMP_STAMP_interrupt';
procedure RTC_WKUP_interrupt; external name 'RTC_WKUP_interrupt';
procedure FLASH_interrupt; external name 'FLASH_interrupt';
procedure RCC_interrupt; external name 'RCC_interrupt';
procedure EXTI0_interrupt; external name 'EXTI0_interrupt';
procedure EXTI1_interrupt; external name 'EXTI1_interrupt';
procedure EXTI2_interrupt; external name 'EXTI2_interrupt';
procedure EXTI3_interrupt; external name 'EXTI3_interrupt';
procedure EXTI4_interrupt; external name 'EXTI4_interrupt';
procedure DMA1_Stream0_interrupt; external name 'DMA1_Stream0_interrupt';
procedure DMA1_Stream1_interrupt; external name 'DMA1_Stream1_interrupt';
procedure DMA1_Stream2_interrupt; external name 'DMA1_Stream2_interrupt';
procedure DMA1_Stream3_interrupt; external name 'DMA1_Stream3_interrupt';
procedure DMA1_Stream4_interrupt; external name 'DMA1_Stream4_interrupt';
procedure DMA1_Stream5_interrupt; external name 'DMA1_Stream5_interrupt';
procedure DMA1_Stream6_interrupt; external name 'DMA1_Stream6_interrupt';
procedure ADC_interrupt; external name 'ADC_interrupt';
procedure CAN1_TX_interrupt; external name 'CAN1_TX_interrupt';
procedure CAN1_RX0_interrupt; external name 'CAN1_RX0_interrupt';
procedure CAN1_RX1_interrupt; external name 'CAN1_RX1_interrupt';
procedure CAN1_SCE_interrupt; external name 'CAN1_SCE_interrupt';
procedure EXTI9_5_interrupt; external name 'EXTI9_5_interrupt';
procedure TIM1_BRK_TIM9_interrupt; external name 'TIM1_BRK_TIM9_interrupt';
procedure TIM1_UP_TIM10_interrupt; external name 'TIM1_UP_TIM10_interrupt';
procedure TIM1_TRG_COM_TIM11_interrupt; external name 'TIM1_TRG_COM_TIM11_interrupt';
procedure TIM1_CC_interrupt; external name 'TIM1_CC_interrupt';
procedure TIM2_interrupt; external name 'TIM2_interrupt';
procedure TIM3_interrupt; external name 'TIM3_interrupt';
procedure TIM4_interrupt; external name 'TIM4_interrupt';
procedure I2C1_EV_interrupt; external name 'I2C1_EV_interrupt';
procedure I2C1_ER_interrupt; external name 'I2C1_ER_interrupt';
procedure I2C2_EV_interrupt; external name 'I2C2_EV_interrupt';
procedure I2C2_ER_interrupt; external name 'I2C2_ER_interrupt';
procedure SPI1_interrupt; external name 'SPI1_interrupt';
procedure SPI2_interrupt; external name 'SPI2_interrupt';
procedure USART1_interrupt; external name 'USART1_interrupt';
procedure USART2_interrupt; external name 'USART2_interrupt';
procedure USART3_interrupt; external name 'USART3_interrupt';
procedure EXTI15_10_interrupt; external name 'EXTI15_10_interrupt';
procedure RTC_Alarm_interrupt; external name 'RTC_Alarm_interrupt';
procedure OTG_FS_WKUP_interrupt; external name 'OTG_FS_WKUP_interrupt';
procedure TIM8_BRK_TIM12_interrupt; external name 'TIM8_BRK_TIM12_interrupt';
procedure TIM8_UP_TIM13_interrupt; external name 'TIM8_UP_TIM13_interrupt';
procedure TIM8_TRG_COM_TIM14_interrupt; external name 'TIM8_TRG_COM_TIM14_interrupt';
procedure TIM8_CC_interrupt; external name 'TIM8_CC_interrupt';
procedure DMA1_Stream7_interrupt; external name 'DMA1_Stream7_interrupt';
procedure FSMC_interrupt; external name 'FSMC_interrupt';
procedure SDIO_interrupt; external name 'SDIO_interrupt';
procedure TIM5_interrupt; external name 'TIM5_interrupt';
procedure SPI3_interrupt; external name 'SPI3_interrupt';
procedure UART4_interrupt; external name 'UART4_interrupt';
procedure UART5_interrupt; external name 'UART5_interrupt';
procedure TIM6_DAC_interrupt; external name 'TIM6_DAC_interrupt';
procedure TIM7_interrupt; external name 'TIM7_interrupt';
procedure DMA2_Stream0_interrupt; external name 'DMA2_Stream0_interrupt';
procedure DMA2_Stream1_interrupt; external name 'DMA2_Stream1_interrupt';
procedure DMA2_Stream2_interrupt; external name 'DMA2_Stream2_interrupt';
procedure DMA2_Stream3_interrupt; external name 'DMA2_Stream3_interrupt';
procedure DMA2_Stream4_interrupt; external name 'DMA2_Stream4_interrupt';
procedure ETH_interrupt; external name 'ETH_interrupt';
procedure ETH_WKUP_interrupt; external name 'ETH_WKUP_interrupt';
procedure CAN2_TX_interrupt; external name 'CAN2_TX_interrupt';
procedure CAN2_RX0_interrupt; external name 'CAN2_RX0_interrupt';
procedure CAN2_RX1_interrupt; external name 'CAN2_RX1_interrupt';
procedure CAN2_SCE_interrupt; external name 'CAN2_SCE_interrupt';
procedure OTG_FS_interrupt; external name 'OTG_FS_interrupt';
procedure DMA2_Stream5_interrupt; external name 'DMA2_Stream5_interrupt';
procedure DMA2_Stream6_interrupt; external name 'DMA2_Stream6_interrupt';
procedure DMA2_Stream7_interrupt; external name 'DMA2_Stream7_interrupt';
procedure USART6_interrupt; external name 'USART6_interrupt';
procedure I2C3_EV_interrupt; external name 'I2C3_EV_interrupt';
procedure I2C3_ER_interrupt; external name 'I2C3_ER_interrupt';
procedure OTG_HS_EP1_OUT_interrupt; external name 'OTG_HS_EP1_OUT_interrupt';
procedure OTG_HS_EP1_IN_interrupt; external name 'OTG_HS_EP1_IN_interrupt';
procedure OTG_HS_WKUP_interrupt; external name 'OTG_HS_WKUP_interrupt';
procedure OTG_HS_interrupt; external name 'OTG_HS_interrupt';
procedure DCMI_interrupt; external name 'DCMI_interrupt';
procedure HASH_RNG_interrupt; external name 'HASH_RNG_interrupt';
procedure FPU_interrupt; external name 'FPU_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 NonMaskableInt_interrupt
.long 0
.long MemoryManagement_interrupt
.long BusFault_interrupt
.long UsageFault_interrupt
.long 0
.long 0
.long 0
.long 0
.long SVCall_interrupt
.long DebugMonitor_interrupt
.long 0
.long PendSV_interrupt
.long SysTick_interrupt
.long WWDG_interrupt
.long PVD_interrupt
.long TAMP_STAMP_interrupt
.long RTC_WKUP_interrupt
.long FLASH_interrupt
.long RCC_interrupt
.long EXTI0_interrupt
.long EXTI1_interrupt
.long EXTI2_interrupt
.long EXTI3_interrupt
.long EXTI4_interrupt
.long DMA1_Stream0_interrupt
.long DMA1_Stream1_interrupt
.long DMA1_Stream2_interrupt
.long DMA1_Stream3_interrupt
.long DMA1_Stream4_interrupt
.long DMA1_Stream5_interrupt
.long DMA1_Stream6_interrupt
.long ADC_interrupt
.long CAN1_TX_interrupt
.long CAN1_RX0_interrupt
.long CAN1_RX1_interrupt
.long CAN1_SCE_interrupt
.long EXTI9_5_interrupt
.long TIM1_BRK_TIM9_interrupt
.long TIM1_UP_TIM10_interrupt
.long TIM1_TRG_COM_TIM11_interrupt
.long TIM1_CC_interrupt
.long TIM2_interrupt
.long TIM3_interrupt
.long TIM4_interrupt
.long I2C1_EV_interrupt
.long I2C1_ER_interrupt
.long I2C2_EV_interrupt
.long I2C2_ER_interrupt
.long SPI1_interrupt
.long SPI2_interrupt
.long USART1_interrupt
.long USART2_interrupt
.long USART3_interrupt
.long EXTI15_10_interrupt
.long RTC_Alarm_interrupt
.long OTG_FS_WKUP_interrupt
.long TIM8_BRK_TIM12_interrupt
.long TIM8_UP_TIM13_interrupt
.long TIM8_TRG_COM_TIM14_interrupt
.long TIM8_CC_interrupt
.long DMA1_Stream7_interrupt
.long FSMC_interrupt
.long SDIO_interrupt
.long TIM5_interrupt
.long SPI3_interrupt
.long UART4_interrupt
.long UART5_interrupt
.long TIM6_DAC_interrupt
.long TIM7_interrupt
.long DMA2_Stream0_interrupt
.long DMA2_Stream1_interrupt
.long DMA2_Stream2_interrupt
.long DMA2_Stream3_interrupt
.long DMA2_Stream4_interrupt
.long ETH_interrupt
.long ETH_WKUP_interrupt
.long CAN2_TX_interrupt
.long CAN2_RX0_interrupt
.long CAN2_RX1_interrupt
.long CAN2_SCE_interrupt
.long OTG_FS_interrupt
.long DMA2_Stream5_interrupt
.long DMA2_Stream6_interrupt
.long DMA2_Stream7_interrupt
.long USART6_interrupt
.long I2C3_EV_interrupt
.long I2C3_ER_interrupt
.long OTG_HS_EP1_OUT_interrupt
.long OTG_HS_EP1_IN_interrupt
.long OTG_HS_WKUP_interrupt
.long OTG_HS_interrupt
.long DCMI_interrupt
.long 0
.long HASH_RNG_interrupt
.long FPU_interrupt
.weak NonMaskableInt_interrupt
.weak MemoryManagement_interrupt
.weak BusFault_interrupt
.weak UsageFault_interrupt
.weak SVCall_interrupt
.weak DebugMonitor_interrupt
.weak PendSV_interrupt
.weak SysTick_interrupt
.weak WWDG_interrupt
.weak PVD_interrupt
.weak TAMP_STAMP_interrupt
.weak RTC_WKUP_interrupt
.weak FLASH_interrupt
.weak RCC_interrupt
.weak EXTI0_interrupt
.weak EXTI1_interrupt
.weak EXTI2_interrupt
.weak EXTI3_interrupt
.weak EXTI4_interrupt
.weak DMA1_Stream0_interrupt
.weak DMA1_Stream1_interrupt
.weak DMA1_Stream2_interrupt
.weak DMA1_Stream3_interrupt
.weak DMA1_Stream4_interrupt
.weak DMA1_Stream5_interrupt
.weak DMA1_Stream6_interrupt
.weak ADC_interrupt
.weak CAN1_TX_interrupt
.weak CAN1_RX0_interrupt
.weak CAN1_RX1_interrupt
.weak CAN1_SCE_interrupt
.weak EXTI9_5_interrupt
.weak TIM1_BRK_TIM9_interrupt
.weak TIM1_UP_TIM10_interrupt
.weak TIM1_TRG_COM_TIM11_interrupt
.weak TIM1_CC_interrupt
.weak TIM2_interrupt
.weak TIM3_interrupt
.weak TIM4_interrupt
.weak I2C1_EV_interrupt
.weak I2C1_ER_interrupt
.weak I2C2_EV_interrupt
.weak I2C2_ER_interrupt
.weak SPI1_interrupt
.weak SPI2_interrupt
.weak USART1_interrupt
.weak USART2_interrupt
.weak USART3_interrupt
.weak EXTI15_10_interrupt
.weak RTC_Alarm_interrupt
.weak OTG_FS_WKUP_interrupt
.weak TIM8_BRK_TIM12_interrupt
.weak TIM8_UP_TIM13_interrupt
.weak TIM8_TRG_COM_TIM14_interrupt
.weak TIM8_CC_interrupt
.weak DMA1_Stream7_interrupt
.weak FSMC_interrupt
.weak SDIO_interrupt
.weak TIM5_interrupt
.weak SPI3_interrupt
.weak UART4_interrupt
.weak UART5_interrupt
.weak TIM6_DAC_interrupt
.weak TIM7_interrupt
.weak DMA2_Stream0_interrupt
.weak DMA2_Stream1_interrupt
.weak DMA2_Stream2_interrupt
.weak DMA2_Stream3_interrupt
.weak DMA2_Stream4_interrupt
.weak ETH_interrupt
.weak ETH_WKUP_interrupt
.weak CAN2_TX_interrupt
.weak CAN2_RX0_interrupt
.weak CAN2_RX1_interrupt
.weak CAN2_SCE_interrupt
.weak OTG_FS_interrupt
.weak DMA2_Stream5_interrupt
.weak DMA2_Stream6_interrupt
.weak DMA2_Stream7_interrupt
.weak USART6_interrupt
.weak I2C3_EV_interrupt
.weak I2C3_ER_interrupt
.weak OTG_HS_EP1_OUT_interrupt
.weak OTG_HS_EP1_IN_interrupt
.weak OTG_HS_WKUP_interrupt
.weak OTG_HS_interrupt
.weak DCMI_interrupt
.weak HASH_RNG_interrupt
.weak FPU_interrupt
.set NonMaskableInt_interrupt, HaltProc
.set MemoryManagement_interrupt, HaltProc
.set BusFault_interrupt, HaltProc
.set UsageFault_interrupt, HaltProc
.set SVCall_interrupt, HaltProc
.set DebugMonitor_interrupt, HaltProc
.set PendSV_interrupt, HaltProc
.set SysTick_interrupt, HaltProc
.set WWDG_interrupt, HaltProc
.set PVD_interrupt, HaltProc
.set TAMP_STAMP_interrupt, HaltProc
.set RTC_WKUP_interrupt, HaltProc
.set FLASH_interrupt, HaltProc
.set RCC_interrupt, HaltProc
.set EXTI0_interrupt, HaltProc
.set EXTI1_interrupt, HaltProc
.set EXTI2_interrupt, HaltProc
.set EXTI3_interrupt, HaltProc
.set EXTI4_interrupt, HaltProc
.set DMA1_Stream0_interrupt, HaltProc
.set DMA1_Stream1_interrupt, HaltProc
.set DMA1_Stream2_interrupt, HaltProc
.set DMA1_Stream3_interrupt, HaltProc
.set DMA1_Stream4_interrupt, HaltProc
.set DMA1_Stream5_interrupt, HaltProc
.set DMA1_Stream6_interrupt, HaltProc
.set ADC_interrupt, HaltProc
.set CAN1_TX_interrupt, HaltProc
.set CAN1_RX0_interrupt, HaltProc
.set CAN1_RX1_interrupt, HaltProc
.set CAN1_SCE_interrupt, HaltProc
.set EXTI9_5_interrupt, HaltProc
.set TIM1_BRK_TIM9_interrupt, HaltProc
.set TIM1_UP_TIM10_interrupt, HaltProc
.set TIM1_TRG_COM_TIM11_interrupt, HaltProc
.set TIM1_CC_interrupt, HaltProc
.set TIM2_interrupt, HaltProc
.set TIM3_interrupt, HaltProc
.set TIM4_interrupt, HaltProc
.set I2C1_EV_interrupt, HaltProc
.set I2C1_ER_interrupt, HaltProc
.set I2C2_EV_interrupt, HaltProc
.set I2C2_ER_interrupt, HaltProc
.set SPI1_interrupt, HaltProc
.set SPI2_interrupt, HaltProc
.set USART1_interrupt, HaltProc
.set USART2_interrupt, HaltProc
.set USART3_interrupt, HaltProc
.set EXTI15_10_interrupt, HaltProc
.set RTC_Alarm_interrupt, HaltProc
.set OTG_FS_WKUP_interrupt, HaltProc
.set TIM8_BRK_TIM12_interrupt, HaltProc
.set TIM8_UP_TIM13_interrupt, HaltProc
.set TIM8_TRG_COM_TIM14_interrupt, HaltProc
.set TIM8_CC_interrupt, HaltProc
.set DMA1_Stream7_interrupt, HaltProc
.set FSMC_interrupt, HaltProc
.set SDIO_interrupt, HaltProc
.set TIM5_interrupt, HaltProc
.set SPI3_interrupt, HaltProc
.set UART4_interrupt, HaltProc
.set UART5_interrupt, HaltProc
.set TIM6_DAC_interrupt, HaltProc
.set TIM7_interrupt, HaltProc
.set DMA2_Stream0_interrupt, HaltProc
.set DMA2_Stream1_interrupt, HaltProc
.set DMA2_Stream2_interrupt, HaltProc
.set DMA2_Stream3_interrupt, HaltProc
.set DMA2_Stream4_interrupt, HaltProc
.set ETH_interrupt, HaltProc
.set ETH_WKUP_interrupt, HaltProc
.set CAN2_TX_interrupt, HaltProc
.set CAN2_RX0_interrupt, HaltProc
.set CAN2_RX1_interrupt, HaltProc
.set CAN2_SCE_interrupt, HaltProc
.set OTG_FS_interrupt, HaltProc
.set DMA2_Stream5_interrupt, HaltProc
.set DMA2_Stream6_interrupt, HaltProc
.set DMA2_Stream7_interrupt, HaltProc
.set USART6_interrupt, HaltProc
.set I2C3_EV_interrupt, HaltProc
.set I2C3_ER_interrupt, HaltProc
.set OTG_HS_EP1_OUT_interrupt, HaltProc
.set OTG_HS_EP1_IN_interrupt, HaltProc
.set OTG_HS_WKUP_interrupt, HaltProc
.set OTG_HS_interrupt, HaltProc
.set DCMI_interrupt, HaltProc
.set HASH_RNG_interrupt, HaltProc
.set FPU_interrupt, HaltProc
.text
end;
end.