Mcucpp
1#include "vectors_stm32_103.h"2#include <stm32f1xx.h>3
4void DefaultIrqHandler(void)5{
6while (1)7;8}
9
10void ResetISR(void) __attribute__((__interrupt__));11
12extern int main(void);13
14extern unsigned long _etext;15extern unsigned long _sdata;16extern unsigned long _edata;17extern unsigned long _sbss;18extern unsigned long _ebss;19extern unsigned long _eheap;20extern unsigned long __ctors_start__;21extern unsigned long __ctors_end__;22
23/* stm32 vectors */
24__attribute__ ((section(".isr_vectors"), used))25void (* const g_pfnVectors[])(void) =26{
27(void (*)(void))((unsigned long)&_eheap),28ResetISR,29NMIException,30HardFaultException,31MemManageException,32BusFaultException,33UsageFaultException,340, 0, 0, 0, /* Reserved */35DebugMonitor,360, /* Reserved */37SVCHandler,38PendSVC,39SysTickHandler,40WWDG_IRQHandler,41PVD_IRQHandler,42TAMPER_IRQHandler,43RTC_IRQHandler,44FLASH_IRQHandler,45RCC_IRQHandler,46EXTI0_IRQHandler,47EXTI1_IRQHandler,48EXTI2_IRQHandler,49EXTI3_IRQHandler,50EXTI4_IRQHandler,51DMA1_Channel1_IRQHandler,52DMA1_Channel2_IRQHandler,53DMA1_Channel3_IRQHandler,54DMA1_Channel4_IRQHandler,55DMA1_Channel5_IRQHandler,56DMA1_Channel6_IRQHandler,57DMA1_Channel7_IRQHandler,58ADC1_2_IRQHandler,59USB_HP_CAN1_TX_IRQHandler,60USB_LP_CAN1_RX0_IRQHandler,61CAN1_RX1_IRQHandler,62CAN1_SCE_IRQHandler,63EXTI9_5_IRQHandler,64
65#if defined(STM32F103XG)66TIM1_BRK_TIM9_IRQHandler,67TIM1_UP_TIM10_IRQHandler,68TIM1_TRG_COM_TIM11_IRQHandler,69#else70TIM1_BRK_IRQHandler,71TIM1_UP_IRQHandler,72TIM1_TRG_COM_IRQHandler,73#endif74TIM1_CC_IRQHandler,75TIM2_IRQHandler,76TIM3_IRQHandler,77TIM4_IRQHandler,78I2C1_EV_IRQHandler,79I2C1_ER_IRQHandler,80I2C2_EV_IRQHandler,81I2C2_ER_IRQHandler,82SPI1_IRQHandler,83SPI2_IRQHandler,84USART1_IRQHandler,85USART2_IRQHandler,86USART3_IRQHandler,87EXTI15_10_IRQHandler,88RTC_Alarm_IRQHandler,89USBWakeUp_IRQHandler,90
91#if defined(STM32F103XE)92TIM8_BRK_IRQHandler,93TIM8_UP_IRQHandler,94TIM8_TRG_COM_IRQHandler,95TIM8_CC_IRQHandler,96ADC3_IRQHandler,97FSMC_IRQHandler,98SDIO_IRQHandler,99TIM5_IRQHandler,100SPI3_IRQHandler,101UART4_IRQHandler,102UART5_IRQHandler,103TIM6_IRQHandler,104TIM7_IRQHandler,105DMA2_Channel1_IRQHandler,106DMA2_Channel2_IRQHandler,107DMA2_Channel3_IRQHandler,108DMA2_Channel4_5_IRQHandler,109
110#elif defined(STM32F103XG)111TIM8_BRK_TIM12_IRQHandler,112TIM8_UP_TIM13_IRQHandler,113TIM8_TRG_COM_TIM14_IRQHandler,114TIM8_CC_IRQHandler,115ADC3_IRQHandler,116FSMC_IRQHandler,117SDIO_IRQHandler,118TIM5_IRQHandler,119SPI3_IRQHandler,120UART4_IRQHandler,121UART5_IRQHandler,122TIM6_IRQHandler,123TIM7_IRQHandler,124DMA2_Channel1_IRQHandler,125DMA2_Channel2_IRQHandler,126DMA2_Channel3_IRQHandler,127DMA2_Channel4_5_IRQHandler,128#elif defined(STM32F103XB)129
130#else131#error "Unsupported device"132#endif133
134};135
136/* stm32 reset code */
137
138
139__attribute__((noreturn, __interrupt__)) void ResetISR(void)140{
141unsigned long volatile * pSrc;142unsigned long volatile * pDest;143
144// copy the data segment initializers from flash to SRAM145pSrc = &_etext;146for (pDest = &_sdata; pDest < &_edata;)147{148*pDest++ = *pSrc++;149}150
151// zero fill the bss segment152for (pDest = &_sbss; pDest < &_ebss;)153{154*pDest++ = 0;155}156
157// call global object ctors158typedef void (*voidFunc)();159for (pDest = &__ctors_start__; pDest < &__ctors_end__; pDest++)160{161((voidFunc) (*pDest))();162}163
164// call the application entry point165
166main();167
168for (;;)169;170}
171
172
173
174