Module/stm32l4x2/STM32L4x2_startup.c
2024-01-16 16:14:54 +01:00

248 lines
8.5 KiB
C

#include <stdint.h>
#if defined (__cplusplus)
extern "C" {
#endif
extern void (*__init_array_start)();
extern void (*__init_array_end) ();
void static_init() {
void (**p)();
for (p = &__init_array_start; p < &__init_array_end; p++) (*p)();
}
#define WEAK __attribute__ ((weak))
#define ALIAS(f) __attribute__ ((weak, alias (#f)))
extern unsigned int _estack;
extern unsigned int _sidata;
extern unsigned int _sdata;
extern unsigned int _edata;
extern unsigned int _sbss;
extern unsigned int _ebss;
WEAK void Reset_Handler (void);
WEAK void DefaultHandler (void);
void NonMaskableInt_Handler (void) ALIAS(Default_Handler);
void HardFault_Handler (void) ALIAS(Default_Handler);
void MemoryManagement_Handler (void) ALIAS(Default_Handler);
void BusFault_Handler (void) ALIAS(Default_Handler);
void UsageFault_Handler (void) ALIAS(Default_Handler);
void SVCall_Handler (void) ALIAS(Default_Handler);
void DebugMonitor_Handler (void) ALIAS(Default_Handler);
void PendSV_Handler (void) ALIAS(Default_Handler);
void SysTick_Handler (void) ALIAS(Default_Handler);
void WWDG_IRQHandler (void) ALIAS(Default_Handler);
void PVD_PVM_IRQHandler (void) ALIAS(Default_Handler);
void RTC_TAMP_STAMP_IRQHandler (void) ALIAS(Default_Handler);
void RTC_WKUP_IRQHandler (void) ALIAS(Default_Handler);
void FLASH_IRQHandler (void) ALIAS(Default_Handler);
void RCC_IRQHandler (void) ALIAS(Default_Handler);
void EXTI0_IRQHandler (void) ALIAS(Default_Handler);
void EXTI1_IRQHandler (void) ALIAS(Default_Handler);
void EXTI2_IRQHandler (void) ALIAS(Default_Handler);
void EXTI3_IRQHandler (void) ALIAS(Default_Handler);
void EXTI4_IRQHandler (void) ALIAS(Default_Handler);
void DMA1_CH1_IRQHandler (void) ALIAS(Default_Handler);
void DMA1_CH2_IRQHandler (void) ALIAS(Default_Handler);
void DMA1_CH3_IRQHandler (void) ALIAS(Default_Handler);
void DMA1_CH4_IRQHandler (void) ALIAS(Default_Handler);
void DMA1_CH5_IRQHandler (void) ALIAS(Default_Handler);
void DMA1_CH6_IRQHandler (void) ALIAS(Default_Handler);
void DMA1_CH7_IRQHandler (void) ALIAS(Default_Handler);
void ADC1_IRQHandler (void) ALIAS(Default_Handler);
void CAN1_TX_IRQHandler (void) ALIAS(Default_Handler);
void CAN1_RX0_IRQHandler (void) ALIAS(Default_Handler);
void CAN1_RX1_IRQHandler (void) ALIAS(Default_Handler);
void CAN1_SCE_IRQHandler (void) ALIAS(Default_Handler);
void EXTI9_5_IRQHandler (void) ALIAS(Default_Handler);
void TIM1_BRK_TIM15_IRQHandler (void) ALIAS(Default_Handler);
void TIM1_UP_TIM16_IRQHandler (void) ALIAS(Default_Handler);
void TIM1_TRG_COM_IRQHandler (void) ALIAS(Default_Handler);
void TIM1_CC_IRQHandler (void) ALIAS(Default_Handler);
void TIM2_IRQHandler (void) ALIAS(Default_Handler);
void TIM3_IRQHandler (void) ALIAS(Default_Handler);
void I2C1_EV_IRQHandler (void) ALIAS(Default_Handler);
void I2C1_ER_IRQHandler (void) ALIAS(Default_Handler);
void I2C2_EV_IRQHandler (void) ALIAS(Default_Handler);
void I2C2_ER_IRQHandler (void) ALIAS(Default_Handler);
void SPI1_IRQHandler (void) ALIAS(Default_Handler);
void SPI2_IRQHandler (void) ALIAS(Default_Handler);
void USART1_IRQHandler (void) ALIAS(Default_Handler);
void USART2_IRQHandler (void) ALIAS(Default_Handler);
void USART3_IRQHandler (void) ALIAS(Default_Handler);
void EXTI15_10_IRQHandler (void) ALIAS(Default_Handler);
void RTC_ALARM_IRQHandler (void) ALIAS(Default_Handler);
void DFSDM1_FLT3_IRQHandler (void) ALIAS(Default_Handler);
void ADC3_IRQHandler (void) ALIAS(Default_Handler);
void SDMMC1_IRQHandler (void) ALIAS(Default_Handler);
void SPI3_IRQHandler (void) ALIAS(Default_Handler);
void UART4_IRQHandler (void) ALIAS(Default_Handler);
void TIM6_DACUNDER_IRQHandler (void) ALIAS(Default_Handler);
void TIM7_IRQHandler (void) ALIAS(Default_Handler);
void DMA2_CH1_IRQHandler (void) ALIAS(Default_Handler);
void DMA2_CH2_IRQHandler (void) ALIAS(Default_Handler);
void DMA2_CH3_IRQHandler (void) ALIAS(Default_Handler);
void DMA2_CH4_IRQHandler (void) ALIAS(Default_Handler);
void DMA2_CH5_IRQHandler (void) ALIAS(Default_Handler);
void DFSDM1_FLT0_IRQHandler (void) ALIAS(Default_Handler);
void DFSDM1_FLT1_IRQHandler (void) ALIAS(Default_Handler);
void DFSDM1_FLT2_IRQHandler (void) ALIAS(Default_Handler);
void COMP_IRQHandler (void) ALIAS(Default_Handler);
void LPTIM1_IRQHandler (void) ALIAS(Default_Handler);
void LPTIM2_IRQHandler (void) ALIAS(Default_Handler);
void USB_FS_IRQHandler (void) ALIAS(Default_Handler);
void DMA2_CH6_IRQHandler (void) ALIAS(Default_Handler);
void DMA2_CH7_IRQHandler (void) ALIAS(Default_Handler);
void LPUART1_IRQHandler (void) ALIAS(Default_Handler);
void QUADSPI_IRQHandler (void) ALIAS(Default_Handler);
void I2C3_EV_IRQHandler (void) ALIAS(Default_Handler);
void I2C3_ER_IRQHandler (void) ALIAS(Default_Handler);
void SAI1_IRQHandler (void) ALIAS(Default_Handler);
void SWPMI1_IRQHandler (void) ALIAS(Default_Handler);
void TSC_IRQHandler (void) ALIAS(Default_Handler);
void LCD_IRQHandler (void) ALIAS(Default_Handler);
void AES_IRQHandler (void) ALIAS(Default_Handler);
void RNG_IRQHandler (void) ALIAS(Default_Handler);
void CRS_IRQHandler (void) ALIAS(Default_Handler);
void I2C4_EV_IRQHandler (void) ALIAS(Default_Handler);
void I2C4_ER_IRQHandler (void) ALIAS(Default_Handler);
extern int main (void);
extern void SystemInit (void);
extern void SystemCoreClockUpdate (void);
#if defined (__cplusplus)
}; // extern "C"
#endif
typedef void (*handler) (void);
__attribute__ ((section(".isr_vector")))
handler Vectors[] = {
(handler) &_estack,
Reset_Handler,
NonMaskableInt_Handler,
HardFault_Handler,
MemoryManagement_Handler,
BusFault_Handler,
UsageFault_Handler,
0,
0,
0,
0,
SVCall_Handler,
DebugMonitor_Handler,
0,
PendSV_Handler,
SysTick_Handler,
WWDG_IRQHandler,
PVD_PVM_IRQHandler,
RTC_TAMP_STAMP_IRQHandler,
RTC_WKUP_IRQHandler,
FLASH_IRQHandler,
RCC_IRQHandler,
EXTI0_IRQHandler,
EXTI1_IRQHandler,
EXTI2_IRQHandler,
EXTI3_IRQHandler,
EXTI4_IRQHandler,
DMA1_CH1_IRQHandler,
DMA1_CH2_IRQHandler,
DMA1_CH3_IRQHandler,
DMA1_CH4_IRQHandler,
DMA1_CH5_IRQHandler,
DMA1_CH6_IRQHandler,
DMA1_CH7_IRQHandler,
ADC1_IRQHandler,
CAN1_TX_IRQHandler,
CAN1_RX0_IRQHandler,
CAN1_RX1_IRQHandler,
CAN1_SCE_IRQHandler,
EXTI9_5_IRQHandler,
TIM1_BRK_TIM15_IRQHandler,
TIM1_UP_TIM16_IRQHandler,
TIM1_TRG_COM_IRQHandler,
TIM1_CC_IRQHandler,
TIM2_IRQHandler,
TIM3_IRQHandler,
0,
I2C1_EV_IRQHandler,
I2C1_ER_IRQHandler,
I2C2_EV_IRQHandler,
I2C2_ER_IRQHandler,
SPI1_IRQHandler,
SPI2_IRQHandler,
USART1_IRQHandler,
USART2_IRQHandler,
USART3_IRQHandler,
EXTI15_10_IRQHandler,
RTC_ALARM_IRQHandler,
DFSDM1_FLT3_IRQHandler,
0,
0,
0,
0,
ADC3_IRQHandler,
0,
SDMMC1_IRQHandler,
0,
SPI3_IRQHandler,
UART4_IRQHandler,
0,
TIM6_DACUNDER_IRQHandler,
TIM7_IRQHandler,
DMA2_CH1_IRQHandler,
DMA2_CH2_IRQHandler,
DMA2_CH3_IRQHandler,
DMA2_CH4_IRQHandler,
DMA2_CH5_IRQHandler,
DFSDM1_FLT0_IRQHandler,
DFSDM1_FLT1_IRQHandler,
DFSDM1_FLT2_IRQHandler,
COMP_IRQHandler,
LPTIM1_IRQHandler,
LPTIM2_IRQHandler,
USB_FS_IRQHandler,
DMA2_CH6_IRQHandler,
DMA2_CH7_IRQHandler,
LPUART1_IRQHandler,
QUADSPI_IRQHandler,
I2C3_EV_IRQHandler,
I2C3_ER_IRQHandler,
SAI1_IRQHandler,
0,
SWPMI1_IRQHandler,
TSC_IRQHandler,
LCD_IRQHandler,
AES_IRQHandler,
RNG_IRQHandler,
0,
CRS_IRQHandler,
I2C4_EV_IRQHandler,
I2C4_ER_IRQHandler,
};
void Reset_Handler(void) {
unsigned int *src, *dst, *end;
/* Zero fill the bss section */
dst = &_sbss;
end = &_ebss;
while (dst < end) *dst++ = 0U;
/* Copy data section from flash to RAM */
src = &_sidata;
dst = &_sdata;
end = &_edata;
while (dst < end) *dst++ = *src++;
SystemInit();
SystemCoreClockUpdate(); // Potřebné pro USART
static_init(); // Zde zavolám globální konstruktory
main();
for (;;);
}
void Default_Handler (void) {
asm volatile ("bkpt 1");
}