1 |
582 |
jeremybenn |
/******************** (C) COPYRIGHT 2007 STMicroelectronics ********************
|
2 |
|
|
* File Name : stm32f10x_vector.c
|
3 |
|
|
* Author : MCD Tools Team
|
4 |
|
|
* Date First Issued : 05/14/2007
|
5 |
|
|
* Description : This file contains the vector table for STM32F10x.
|
6 |
|
|
* After Reset the Cortex-M3 processor is in Thread mode,
|
7 |
|
|
* priority is Privileged, and the Stack is set to Main.
|
8 |
|
|
********************************************************************************
|
9 |
|
|
* History:
|
10 |
|
|
* 05/14/2007: V0.2
|
11 |
|
|
*
|
12 |
|
|
********************************************************************************
|
13 |
|
|
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
|
14 |
|
|
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
|
15 |
|
|
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
|
16 |
|
|
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
|
17 |
|
|
* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
|
18 |
|
|
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
|
19 |
|
|
*******************************************************************************/
|
20 |
|
|
|
21 |
|
|
/* Includes ----------------------------------------------------------------------*/
|
22 |
|
|
|
23 |
|
|
void NMIException(void);
|
24 |
|
|
void HardFaultException(void);
|
25 |
|
|
void MemManageException(void);
|
26 |
|
|
void BusFaultException(void);
|
27 |
|
|
void UsageFaultException(void);
|
28 |
|
|
void DebugMonitor(void);
|
29 |
|
|
void SVCHandler(void);
|
30 |
|
|
void PendSVC(void);
|
31 |
|
|
void SysTickHandler(void);
|
32 |
|
|
void WWDG_IRQHandler(void);
|
33 |
|
|
void PVD_IRQHandler(void);
|
34 |
|
|
void TAMPER_IRQHandler(void);
|
35 |
|
|
void RTC_IRQHandler(void);
|
36 |
|
|
void FLASH_IRQHandler(void);
|
37 |
|
|
void RCC_IRQHandler(void);
|
38 |
|
|
void EXTI0_IRQHandler(void);
|
39 |
|
|
void EXTI1_IRQHandler(void);
|
40 |
|
|
void EXTI2_IRQHandler(void);
|
41 |
|
|
void EXTI3_IRQHandler(void);
|
42 |
|
|
void EXTI4_IRQHandler(void);
|
43 |
|
|
void DMAChannel1_IRQHandler(void);
|
44 |
|
|
void DMAChannel2_IRQHandler(void);
|
45 |
|
|
void DMAChannel3_IRQHandler(void);
|
46 |
|
|
void DMAChannel4_IRQHandler(void);
|
47 |
|
|
void DMAChannel5_IRQHandler(void);
|
48 |
|
|
void DMAChannel6_IRQHandler(void);
|
49 |
|
|
void DMAChannel7_IRQHandler(void);
|
50 |
|
|
void ADC_IRQHandler(void);
|
51 |
|
|
void USB_HP_CAN_TX_IRQHandler(void);
|
52 |
|
|
void USB_LP_CAN_RX0_IRQHandler(void);
|
53 |
|
|
void CAN_RX1_IRQHandler(void);
|
54 |
|
|
void CAN_SCE_IRQHandler(void);
|
55 |
|
|
void EXTI9_5_IRQHandler(void);
|
56 |
|
|
void TIM1_BRK_IRQHandler(void);
|
57 |
|
|
void TIM1_UP_IRQHandler(void);
|
58 |
|
|
void TIM1_TRG_COM_IRQHandler(void);
|
59 |
|
|
void TIM1_CC_IRQHandler(void);
|
60 |
|
|
void TIM2_IRQHandler(void);
|
61 |
|
|
void TIM3_IRQHandler(void);
|
62 |
|
|
void TIM4_IRQHandler(void);
|
63 |
|
|
void I2C1_EV_IRQHandler(void);
|
64 |
|
|
void I2C1_ER_IRQHandler(void);
|
65 |
|
|
void I2C2_EV_IRQHandler(void);
|
66 |
|
|
void I2C2_ER_IRQHandler(void);
|
67 |
|
|
void SPI1_IRQHandler(void);
|
68 |
|
|
void SPI2_IRQHandler(void);
|
69 |
|
|
void USART1_IRQHandler(void);
|
70 |
|
|
void USART2_IRQHandler(void);
|
71 |
|
|
void USART3_IRQHandler(void);
|
72 |
|
|
void EXTI15_10_IRQHandler(void);
|
73 |
|
|
void RTCAlarm_IRQHandler(void);
|
74 |
|
|
void USBWakeUp_IRQHandler(void);
|
75 |
|
|
|
76 |
|
|
|
77 |
|
|
/* Exported types --------------------------------------------------------------*/
|
78 |
|
|
/* Exported constants --------------------------------------------------------*/
|
79 |
|
|
extern unsigned long _etext;
|
80 |
|
|
extern unsigned long _sidata; /* start address for the initialization values of the .data section. defined in linker script */
|
81 |
|
|
extern unsigned long _sdata; /* start address for the .data section. defined in linker script */
|
82 |
|
|
extern unsigned long _edata; /* end address for the .data section. defined in linker script */
|
83 |
|
|
|
84 |
|
|
extern unsigned long _sbss; /* start address for the .bss section. defined in linker script */
|
85 |
|
|
extern unsigned long _ebss; /* end address for the .bss section. defined in linker script */
|
86 |
|
|
|
87 |
|
|
extern void _estack; /* init value for the stack pointer. defined in linker script */
|
88 |
|
|
|
89 |
|
|
|
90 |
|
|
|
91 |
|
|
/* Private typedef -----------------------------------------------------------*/
|
92 |
|
|
/* function prototypes ------------------------------------------------------*/
|
93 |
|
|
void Reset_Handler(void) __attribute__((__interrupt__));
|
94 |
|
|
extern int main(void);
|
95 |
|
|
extern void xPortPendSVHandler(void);
|
96 |
|
|
extern void xPortSysTickHandler(void);
|
97 |
|
|
extern void vTimer2IntHandler( void );
|
98 |
|
|
extern void vPortSVCHandler( void );
|
99 |
|
|
|
100 |
|
|
|
101 |
|
|
/******************************************************************************
|
102 |
|
|
*
|
103 |
|
|
* The minimal vector table for a Cortex M3. Note that the proper constructs
|
104 |
|
|
* must be placed on this to ensure that it ends up at physical address
|
105 |
|
|
* 0x0000.0000.
|
106 |
|
|
*
|
107 |
|
|
******************************************************************************/
|
108 |
|
|
|
109 |
|
|
|
110 |
|
|
__attribute__ ((section(".isr_vector")))
|
111 |
|
|
void (* const g_pfnVectors[])(void) =
|
112 |
|
|
{
|
113 |
|
|
&_estack, // The initial stack pointer
|
114 |
|
|
Reset_Handler, // The reset handler
|
115 |
|
|
NMIException,
|
116 |
|
|
HardFaultException,
|
117 |
|
|
MemManageException,
|
118 |
|
|
BusFaultException,
|
119 |
|
|
UsageFaultException,
|
120 |
|
|
(void*)0, (void*)0, (void*)0, (void*)0, /* Reserved */
|
121 |
|
|
vPortSVCHandler,
|
122 |
|
|
DebugMonitor,
|
123 |
|
|
(void*)0, /* Reserved */
|
124 |
|
|
xPortPendSVHandler,
|
125 |
|
|
xPortSysTickHandler,
|
126 |
|
|
WWDG_IRQHandler,
|
127 |
|
|
PVD_IRQHandler,
|
128 |
|
|
TAMPER_IRQHandler,
|
129 |
|
|
RTC_IRQHandler,
|
130 |
|
|
FLASH_IRQHandler,
|
131 |
|
|
RCC_IRQHandler,
|
132 |
|
|
EXTI0_IRQHandler,
|
133 |
|
|
EXTI1_IRQHandler,
|
134 |
|
|
EXTI2_IRQHandler,
|
135 |
|
|
EXTI3_IRQHandler,
|
136 |
|
|
EXTI4_IRQHandler,
|
137 |
|
|
DMAChannel1_IRQHandler,
|
138 |
|
|
DMAChannel2_IRQHandler,
|
139 |
|
|
DMAChannel3_IRQHandler,
|
140 |
|
|
DMAChannel4_IRQHandler,
|
141 |
|
|
DMAChannel5_IRQHandler,
|
142 |
|
|
DMAChannel6_IRQHandler,
|
143 |
|
|
DMAChannel7_IRQHandler,
|
144 |
|
|
ADC_IRQHandler,
|
145 |
|
|
USB_HP_CAN_TX_IRQHandler,
|
146 |
|
|
USB_LP_CAN_RX0_IRQHandler,
|
147 |
|
|
CAN_RX1_IRQHandler,
|
148 |
|
|
CAN_SCE_IRQHandler,
|
149 |
|
|
EXTI9_5_IRQHandler,
|
150 |
|
|
TIM1_BRK_IRQHandler,
|
151 |
|
|
TIM1_UP_IRQHandler,
|
152 |
|
|
TIM1_TRG_COM_IRQHandler,
|
153 |
|
|
TIM1_CC_IRQHandler,
|
154 |
|
|
vTimer2IntHandler,
|
155 |
|
|
TIM3_IRQHandler,
|
156 |
|
|
TIM4_IRQHandler,
|
157 |
|
|
I2C1_EV_IRQHandler,
|
158 |
|
|
I2C1_ER_IRQHandler,
|
159 |
|
|
I2C2_EV_IRQHandler,
|
160 |
|
|
I2C2_ER_IRQHandler,
|
161 |
|
|
SPI1_IRQHandler,
|
162 |
|
|
SPI2_IRQHandler,
|
163 |
|
|
USART1_IRQHandler,
|
164 |
|
|
USART2_IRQHandler,
|
165 |
|
|
USART3_IRQHandler,
|
166 |
|
|
EXTI15_10_IRQHandler,
|
167 |
|
|
RTCAlarm_IRQHandler,
|
168 |
|
|
USBWakeUp_IRQHandler,
|
169 |
|
|
(void*)0,
|
170 |
|
|
(void*)0,
|
171 |
|
|
(void*)0,
|
172 |
|
|
(void*)0,
|
173 |
|
|
(void*)0,
|
174 |
|
|
(void*)0,
|
175 |
|
|
(void*)0,
|
176 |
|
|
(void*)0xF108F85F //this is a workaround for boot in RAM mode.
|
177 |
|
|
};
|
178 |
|
|
|
179 |
|
|
/*******************************************************************************
|
180 |
|
|
* Function Name : Reset_Handler
|
181 |
|
|
* Description : This is the code that gets called when the processor first starts execution
|
182 |
|
|
* following a reset event. Only the absolutely necessary set is performed,
|
183 |
|
|
* after which the application supplied main() routine is called.
|
184 |
|
|
* Input :
|
185 |
|
|
* Output :
|
186 |
|
|
* Return :
|
187 |
|
|
*******************************************************************************/
|
188 |
|
|
void Reset_Handler(void)
|
189 |
|
|
{
|
190 |
|
|
unsigned long *pulSrc, *pulDest;
|
191 |
|
|
|
192 |
|
|
//
|
193 |
|
|
// Copy the data segment initializers from flash to SRAM.
|
194 |
|
|
//
|
195 |
|
|
pulSrc = &_sidata;
|
196 |
|
|
for(pulDest = &_sdata; pulDest < &_edata; )
|
197 |
|
|
{
|
198 |
|
|
*(pulDest++) = *(pulSrc++);
|
199 |
|
|
}
|
200 |
|
|
|
201 |
|
|
//
|
202 |
|
|
// Zero fill the bss segment.
|
203 |
|
|
//
|
204 |
|
|
for(pulDest = &_sbss; pulDest < &_ebss; )
|
205 |
|
|
{
|
206 |
|
|
*(pulDest++) = 0;
|
207 |
|
|
}
|
208 |
|
|
|
209 |
|
|
//
|
210 |
|
|
// Call the application's entry point.
|
211 |
|
|
//
|
212 |
|
|
main();
|
213 |
|
|
}
|
214 |
|
|
|
215 |
|
|
|
216 |
|
|
/********************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/
|
217 |
|
|
|
218 |
|
|
|