19
19
#include <stdint.h>
20
20
#include <stm32f1xx.h>
21
21
#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>
103
23
104
24
// Define the vector table
105
25
uint32_t vectors [] __attribute__((section (".isr_vector" ))) = {
@@ -182,14 +102,14 @@ uint32_t vectors[] __attribute__((section(".isr_vector"))) = {
182
102
};
183
103
184
104
185
- void Default_Handler (void )
105
+ void __attribute__(( noreturn )) Default_Handler (void )
186
106
{
187
107
while (1 )
188
108
;
189
109
}
190
110
191
111
192
- void Reset_Handler (void )
112
+ void __attribute__(( noreturn )) Reset_Handler (void )
193
113
{
194
114
// copy .data section to SRAM
195
115
uint32_t * start_sram = (uint32_t * )& _sdata ;
@@ -206,7 +126,16 @@ void Reset_Handler(void)
206
126
* start_bss ++ = 0 ;
207
127
}
208
128
129
+ // set value of SystemCoreClock variable
209
130
SystemCoreClockUpdate ();
210
- // now invoke main
131
+
132
+ // Call main function
211
133
main ();
134
+
135
+ // loop continuously
136
+ while (1 )
137
+ {
138
+ __asm("nop" );
139
+ }
140
+
212
141
}
0 commit comments