1919#include <stdint.h>
2020#include <stm32f1xx.h>
2121#include <main.h>
22-
23- extern uint32_t _etext ;
24- extern uint32_t _sdata ;
25- extern uint32_t _edata ;
26- extern uint32_t _la_data ;
27-
28- extern uint32_t _sbss ;
29- extern uint32_t _ebss ;
30- extern uint32_t _stack_top ;
31-
32-
33- void Reset_Handler (void );
34- void Default_Handler (void );
35- void NMI_Handler (void ) __attribute__((weak , alias ("Default_Handler" )));
36- void HardFault_Handler (void ) __attribute__((weak , alias ("Default_Handler" )));
37- void MemManage_Handler (void ) __attribute__((weak , alias ("Default_Handler" )));
38- void BusFault_Handler (void ) __attribute__((weak , alias ("Default_Handler" )));
39- void UsageFault_Handler (void ) __attribute__((weak , alias ("Default_Handler" )));
40- void SVC_Handler (void ) __attribute__((weak , alias ("Default_Handler" )));
41- void DebugMon_Handler (void ) __attribute__((weak , alias ("Default_Handler" )));
42- void PendSV_Handler (void ) __attribute__((weak , alias ("Default_Handler" )));
43- void SysTick_Handler (void ) __attribute__((weak , alias ("Default_Handler" )));
44- void WWDG_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
45- void PVD_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
46- void TAMP_STAMP_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
47- void RTC_WKUP_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
48- void RCC_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
49- void EXTI0_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
50- void EXTI1_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
51- void EXTI2_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
52- void EXTI3_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
53- void EXTI4_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
54- void DMA1_Channel1_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
55- void DMA1_Channel2_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
56- void DMA1_Channel3_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
57- void DMA1_Channel4_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
58- void DMA1_Channel5_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
59- void DMA1_Channel6_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
60- void DMA1_Channel7_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
61- void ADC_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
62- void USB_HP_CAN_TX_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
63- void USB_LP_CAN_RX0_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
64- void CAN_RX1_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
65- void CAN_SCE_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
66- void EXTI9_5_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
67- void TIM1_BRK_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
68- void TIM1_UP_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
69- void TIM1_TRG_COM_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
70- void TIM1_CC_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
71- void TIM2_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
72- void TIM3_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
73- void TIM4_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
74- void I2C1_EV_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
75- void I2C1_ER_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
76- void I2C2_EV_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
77- void I2C2_ER_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
78- void SPI1_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
79- void SPI2_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
80- void USART1_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
81- void USART2_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
82- void USART3_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
83- void EXTI15_10_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
84- void RTC_Alarm_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
85- void USB_Wakeup_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
86- void TIM8_BRK_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
87- void TIM8_UP_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
88- void TIM8_TRG_COM_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
89- void TIM8_CC_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
90- void ADC3_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
91- void FSMC_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
92- void SDIO_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
93- void TIM5_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
94- void SPI3_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
95- void UART4_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
96- void UART5_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
97- void TIM6_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
98- void TIM7_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
99- void DMA2_Channel1_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
100- void DMA2_Channel2_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
101- void DMA2_Channel3_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
102- void DMA2_Channel4_5_IRQHandler (void ) __attribute__((weak , alias ("Default_Handler" )));
22+ #include <startup_stm32f1.h>
10323
10424// Define the vector table
10525uint32_t vectors [] __attribute__((section (".isr_vector" ))) = {
@@ -182,14 +102,14 @@ uint32_t vectors[] __attribute__((section(".isr_vector"))) = {
182102};
183103
184104
185- void Default_Handler (void )
105+ void __attribute__(( noreturn )) Default_Handler (void )
186106{
187107 while (1 )
188108 ;
189109}
190110
191111
192- void Reset_Handler (void )
112+ void __attribute__(( noreturn )) Reset_Handler (void )
193113{
194114 // copy .data section to SRAM
195115 uint32_t * start_sram = (uint32_t * )& _sdata ;
@@ -206,7 +126,16 @@ void Reset_Handler(void)
206126 * start_bss ++ = 0 ;
207127 }
208128
129+ // set value of SystemCoreClock variable
209130 SystemCoreClockUpdate ();
210- // now invoke main
131+
132+ // Call main function
211133 main ();
134+
135+ // loop continuously
136+ while (1 )
137+ {
138+ __asm("nop" );
139+ }
140+
212141}
0 commit comments