Mcucpp

Форк
0
/
startup_stm32_103.c 
170 строк · 3.4 Кб
1
#include "vectors_stm32_103.h"
2
#include <stm32f1xx.h>
3

4
void DefaultIrqHandler(void)
5
{
6
	while (1)
7
		;
8
}
9

10
void ResetISR(void) __attribute__((__interrupt__));
11

12
extern int main(void);
13

14
extern unsigned long _etext;
15
extern unsigned long _sdata;
16
extern unsigned long _edata;
17
extern unsigned long _sbss;
18
extern unsigned long _ebss;
19
extern unsigned long _eheap;
20
extern unsigned long __ctors_start__;
21
extern unsigned long __ctors_end__;
22

23
/* stm32 vectors */
24
__attribute__ ((section(".isr_vectors"), used))
25
void (* const g_pfnVectors[])(void) =
26
{
27
	(void (*)(void))((unsigned long)&_eheap),
28
	ResetISR,
29
	NMIException,
30
	HardFaultException,
31
	MemManageException,
32
	BusFaultException,
33
	UsageFaultException,
34
	0, 0, 0, 0, /* Reserved */
35
	DebugMonitor,
36
	0, /* Reserved */
37
	SVCHandler,
38
	PendSVC,
39
	SysTickHandler,
40
	WWDG_IRQHandler,
41
	PVD_IRQHandler,
42
	TAMPER_IRQHandler,
43
	RTC_IRQHandler,
44
	FLASH_IRQHandler,
45
	RCC_IRQHandler,
46
	EXTI0_IRQHandler,
47
	EXTI1_IRQHandler,
48
	EXTI2_IRQHandler,
49
	EXTI3_IRQHandler,
50
	EXTI4_IRQHandler,
51
	DMA1_Channel1_IRQHandler,
52
	DMA1_Channel2_IRQHandler,
53
	DMA1_Channel3_IRQHandler,
54
	DMA1_Channel4_IRQHandler,
55
	DMA1_Channel5_IRQHandler,
56
	DMA1_Channel6_IRQHandler,
57
	DMA1_Channel7_IRQHandler,
58
	ADC1_2_IRQHandler,
59
	USB_HP_CAN1_TX_IRQHandler,
60
	USB_LP_CAN1_RX0_IRQHandler,
61
	CAN1_RX1_IRQHandler,
62
	CAN1_SCE_IRQHandler,
63
	EXTI9_5_IRQHandler,
64
	
65
#if defined(STM32F103XG)
66
	TIM1_BRK_TIM9_IRQHandler,
67
	TIM1_UP_TIM10_IRQHandler,
68
	TIM1_TRG_COM_TIM11_IRQHandler,
69
#else
70
	TIM1_BRK_IRQHandler,
71
	TIM1_UP_IRQHandler,
72
	TIM1_TRG_COM_IRQHandler,
73
#endif
74
	TIM1_CC_IRQHandler,
75
	TIM2_IRQHandler,
76
	TIM3_IRQHandler,
77
	TIM4_IRQHandler,
78
	I2C1_EV_IRQHandler,
79
	I2C1_ER_IRQHandler,
80
	I2C2_EV_IRQHandler,
81
	I2C2_ER_IRQHandler,
82
	SPI1_IRQHandler,
83
	SPI2_IRQHandler,
84
	USART1_IRQHandler,
85
	USART2_IRQHandler,
86
	USART3_IRQHandler,
87
	EXTI15_10_IRQHandler,
88
	RTC_Alarm_IRQHandler,
89
	USBWakeUp_IRQHandler,
90

91
#if defined(STM32F103XE)
92
	TIM8_BRK_IRQHandler,
93
	TIM8_UP_IRQHandler,
94
	TIM8_TRG_COM_IRQHandler,
95
	TIM8_CC_IRQHandler,
96
	ADC3_IRQHandler,
97
	FSMC_IRQHandler,
98
	SDIO_IRQHandler,
99
	TIM5_IRQHandler,
100
	SPI3_IRQHandler,
101
	UART4_IRQHandler,
102
	UART5_IRQHandler,
103
	TIM6_IRQHandler,
104
	TIM7_IRQHandler,
105
	DMA2_Channel1_IRQHandler,
106
	DMA2_Channel2_IRQHandler,
107
	DMA2_Channel3_IRQHandler,
108
	DMA2_Channel4_5_IRQHandler,
109

110
#elif defined(STM32F103XG)
111
	TIM8_BRK_TIM12_IRQHandler,
112
	TIM8_UP_TIM13_IRQHandler,
113
	TIM8_TRG_COM_TIM14_IRQHandler,
114
	TIM8_CC_IRQHandler,
115
	ADC3_IRQHandler,
116
	FSMC_IRQHandler,
117
	SDIO_IRQHandler,
118
	TIM5_IRQHandler,
119
	SPI3_IRQHandler,
120
	UART4_IRQHandler,
121
	UART5_IRQHandler,
122
	TIM6_IRQHandler,
123
	TIM7_IRQHandler,
124
	DMA2_Channel1_IRQHandler,
125
	DMA2_Channel2_IRQHandler,
126
	DMA2_Channel3_IRQHandler,
127
	DMA2_Channel4_5_IRQHandler,
128
#elif defined(STM32F103XB)
129

130
#else
131
	#error "Unsupported device"
132
#endif
133
	
134
};
135

136
/* stm32 reset code */
137

138

139
__attribute__((noreturn, __interrupt__)) void ResetISR(void)
140
{
141
	unsigned long volatile * pSrc;
142
	unsigned long volatile * pDest;
143

144
	// copy the data segment initializers from flash to SRAM
145
	pSrc = &_etext;
146
	for (pDest = &_sdata; pDest < &_edata;)
147
	{
148
		*pDest++ = *pSrc++;
149
	}
150

151
	// zero fill the bss segment
152
	for (pDest = &_sbss; pDest < &_ebss;)
153
	{
154
		*pDest++ = 0;
155
	}
156

157
	// call global object ctors
158
	typedef void (*voidFunc)();
159
	for (pDest = &__ctors_start__; pDest < &__ctors_end__; pDest++)
160
	{
161
		((voidFunc) (*pDest))();
162
	}
163

164
	// call the application entry point
165

166
	main();
167

168
	for (;;)
169
		;
170
}
171

172

173

174

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.