2 #include <stm32f10x_map.h>
7 typedef void (*ISR_func)(void);
10 #define SECTION(x) __attribute__ ((section(#x)))
11 #define ISR_VECTOR_SECTION SECTION(.isr_vector)
21 #define UNHANDLED_ALIAS __attribute__((weak, alias("unhandled_int")));
22 void Main_Stack_End(
void);
23 void HardFault_handler(
void)
__attribute__((weak, alias("dHardFault_handler")));
24 void MemManage_handler(
void)
__attribute__((weak, alias("dMemManage_handler")));
25 void BusFault_handler(
void)
__attribute__((weak, alias("dBusFault_handler")));
26 void UsageFault_handler(
void)
__attribute__((weak, alias("dUsageFault_handler")));
27 void Reserved_handler(
void) UNHANDLED_ALIAS;
28 void SVCall_handler(
void) UNHANDLED_ALIAS;
29 void DebugMonitor_handler(
void) UNHANDLED_ALIAS;
30 void PendSV_handler(
void) UNHANDLED_ALIAS;
31 void SysTick_handler(
void) UNHANDLED_ALIAS;
32 void WWDG_handler(
void) UNHANDLED_ALIAS;
33 void PVD_handler(
void) UNHANDLED_ALIAS;
34 void TAMPER_handler(
void) UNHANDLED_ALIAS;
35 void RTC_handler(
void) UNHANDLED_ALIAS;
36 void FLASH_handler(
void) UNHANDLED_ALIAS;
37 void RCC_handler(
void) UNHANDLED_ALIAS;
38 void EXTI0_handler(
void) UNHANDLED_ALIAS;
39 void EXTI1_handler(
void) UNHANDLED_ALIAS;
40 void EXTI2_handler(
void) UNHANDLED_ALIAS;
41 void EXTI3_handler(
void) UNHANDLED_ALIAS;
42 void EXTI4_handler(
void) UNHANDLED_ALIAS;
43 void DMA1_Channel1_handler(
void) UNHANDLED_ALIAS;
44 void DMA1_Channel2_handler(
void) UNHANDLED_ALIAS;
45 void DMA1_Channel3_handler(
void) UNHANDLED_ALIAS;
46 void DMA1_Channel4_handler(
void) UNHANDLED_ALIAS;
47 void DMA1_Channel5_handler(
void) UNHANDLED_ALIAS;
48 void DMA1_Channel6_handler(
void) UNHANDLED_ALIAS;
49 void DMA1_Channel7_handler(
void) UNHANDLED_ALIAS;
50 void ADC1_2_handler(
void) UNHANDLED_ALIAS;
51 void USB_HP_CAN_TX_handler(
void) UNHANDLED_ALIAS;
52 void USB_LP_CAN_RX0_handler(
void) UNHANDLED_ALIAS;
53 void CAN_RX1_handler(
void) UNHANDLED_ALIAS;
54 void CAN_SCE_handler(
void) UNHANDLED_ALIAS;
55 void EXTI9_5_handler(
void) UNHANDLED_ALIAS;
56 void TIM1_BRK_handler(
void) UNHANDLED_ALIAS;
57 void TIM1_UP_handler(
void) UNHANDLED_ALIAS;
58 void TIM1_TRG_COM_handler(
void) UNHANDLED_ALIAS;
59 void TIM1_CC_handler(
void) UNHANDLED_ALIAS;
60 void TIM2_handler(
void) UNHANDLED_ALIAS;
61 void TIM3_handler(
void) UNHANDLED_ALIAS;
62 void TIM4_handler(
void) UNHANDLED_ALIAS;
63 void I2C1_EV_handler(
void) UNHANDLED_ALIAS;
64 void I2C1_ER_handler(
void) UNHANDLED_ALIAS;
65 void I2C2_EV_handler(
void) UNHANDLED_ALIAS;
66 void I2C2_ER_handler(
void) UNHANDLED_ALIAS;
67 void SPI1_handler(
void) UNHANDLED_ALIAS;
68 void SPI2_handler(
void) UNHANDLED_ALIAS;
69 void USART1_handler(
void) UNHANDLED_ALIAS;
70 void USART2_handler(
void) UNHANDLED_ALIAS;
71 void USART3_handler(
void) UNHANDLED_ALIAS;
72 void EXTI15_10_handler(
void) UNHANDLED_ALIAS;
73 void RTCAlarm_handler(
void) UNHANDLED_ALIAS;
74 void USBWakeup_handler(
void) UNHANDLED_ALIAS;
75 void TIM8_BRK_handler(
void) UNHANDLED_ALIAS;
76 void TIM8_UP_handler(
void) UNHANDLED_ALIAS;
77 void TIM8_TRG_COM_handler(
void) UNHANDLED_ALIAS;
78 void TIM8_CC_handler(
void) UNHANDLED_ALIAS;
79 void ADC3_handler(
void) UNHANDLED_ALIAS;
80 void FSMC_handler(
void) UNHANDLED_ALIAS;
81 void SDIO_handler(
void) UNHANDLED_ALIAS;
82 void TIM5_handler(
void) UNHANDLED_ALIAS;
83 void SPI3_handler(
void) UNHANDLED_ALIAS;
84 void UART4_handler(
void) UNHANDLED_ALIAS;
85 void UART5_handler(
void) UNHANDLED_ALIAS;
86 void TIM6_handler(
void) UNHANDLED_ALIAS;
87 void TIM7_handler(
void) UNHANDLED_ALIAS;
88 void DMA2_Channel1_handler(
void) UNHANDLED_ALIAS;
89 void DMA2_Channel2_handler(
void) UNHANDLED_ALIAS;
90 void DMA2_Channel3_handler(
void) UNHANDLED_ALIAS;
91 void DMA2_Channel4_5_handler(
void) UNHANDLED_ALIAS;
93 const ISR_func isr_vector[76] ISR_VECTOR_SECTION =
107 DebugMonitor_handler,
122 DMA1_Channel1_handler,
123 DMA1_Channel2_handler,
124 DMA1_Channel3_handler,
125 DMA1_Channel4_handler,
126 DMA1_Channel5_handler,
127 DMA1_Channel6_handler,
128 DMA1_Channel7_handler,
130 USB_HP_CAN_TX_handler,
131 USB_LP_CAN_RX0_handler,
137 TIM1_TRG_COM_handler,
156 TIM8_TRG_COM_handler,
167 DMA2_Channel1_handler,
168 DMA2_Channel2_handler,
169 DMA2_Channel3_handler,
170 DMA2_Channel4_5_handler
176 extern uint8_t _data[];
177 extern uint8_t _etext[];
178 extern uint8_t _edata[];
181 copy_initialized(
void)
183 uint8_t *ram = _data;
184 uint8_t *rom = _etext;
185 while(ram < _edata) {
190 extern uint8_t __bss_start[];
191 extern uint8_t __bss_end[];
196 uint8_t *m = __bss_start;
197 while(m < __bss_end) {
203 start_hse_clock(
void)
206 RCC->CR |= RCC_CR_HSEON;
208 while(!(RCC->CR & RCC_CR_HSERDY));
214 RCC->CFGR = (RCC_CFGR_MCO_NOCLOCK
217 | RCC_CFGR_PPRE2_DIV1
218 | RCC_CFGR_PPRE1_DIV2
222 RCC->CR |= RCC_CR_PLLON;
224 while(!(RCC->CR & RCC_CR_PLLRDY));
226 MODIFY_REG(RCC->CFGR, RCC_CFGR_SW,RCC_CFGR_SW_PLL);
230 enable_fault_exceptions(
void)
232 SCB->SHCSR |= (SCB_SHCSR_MEMFAULTENA | SCB_SHCSR_BUSFAULTENA
233 | SCB_SHCSR_USGFAULTENA);
241 enable_fault_exceptions();
263 dHardFault_handler(
void)
269 dUsageFault_handler(
void)
275 dMemManage_handler(
void)
281 dBusFault_handler(
void)