embkernel
 All Classes Functions Variables Typedefs Groups Pages
RtosStartup.cpp
1 //------------------------------------------------------------------------------
2 //This file is part of embKernel.
3 //See license.txt for the full license governing this code.
4 //------------------------------------------------------------------------------
5 
6 #include "RtosInterrupt.hpp"
7 #include <stdint.h>
8 
9 extern "C" void entryPoint(void);
10 extern "C" void __libc_init_array(void);
11 extern int main(void);
12 
13 #ifndef RTOS_CFG_MAIN_STACK_SIZE
14 #define RTOS_CFG_MAIN_STACK_SIZE 128
15 #endif
16 volatile static unsigned long mainStack[RTOS_CFG_MAIN_STACK_SIZE] __attribute__ ((section(".stack")));
17 
18 __attribute__ ((section(".isr_vector"), used)) uint32_t vectorsTable[] = {
19  //CM3 default handlers
20  ((uint32_t) mainStack) + sizeof(mainStack), // 00: The initial stack pointer
21  (uint32_t) entryPoint, //
22  (uint32_t) RtosInterrupt::IRQ_NonMaskableInt, //
23  (uint32_t) RtosInterrupt::IRQ_HardFault, //
24  (uint32_t) RtosInterrupt::IRQ_MemoryManagement, //
25  (uint32_t) RtosInterrupt::IRQ_BusFault, //
26  (uint32_t) RtosInterrupt::IRQ_UsageFault, //
27  (uint32_t) 0, // 07: Reserved
28  (uint32_t) 0, // 08: Reserved
29  (uint32_t) 0, // 09: Reserved
30  (uint32_t) 0, // 10: Reserved
31  (uint32_t) RtosInterrupt::IRQ_SVCall, //
32  (uint32_t) RtosInterrupt::IRQ_DebugMonitor, //
33  (uint32_t) 0, // 13: Reserved
34  (uint32_t) RtosInterrupt::IRQ_PendSV, //
35  (uint32_t) RtosInterrupt::IRQ_SysTick, //
36 
38  (uint32_t) RtosInterrupt::IRQ_WWDG, //Window WatchDog Interrupt
39  (uint32_t) RtosInterrupt::IRQ_PVD, //PVD through EXTI Line detection Interrupt
40  (uint32_t) RtosInterrupt::IRQ_TAMPER, //Tamper Interrupt
41  (uint32_t) RtosInterrupt::IRQ_RTC, //RTC global Interrupt
42  (uint32_t) RtosInterrupt::IRQ_FLASH, //FLASH global Interrupt
43  (uint32_t) RtosInterrupt::IRQ_RCC, //RCC global Interrupt
44  (uint32_t) RtosInterrupt::IRQ_EXTI0, //EXTI Line0 Interrupt
45  (uint32_t) RtosInterrupt::IRQ_EXTI1, //EXTI Line1 Interrupt
46  (uint32_t) RtosInterrupt::IRQ_EXTI2, //EXTI Line2 Interrupt
47  (uint32_t) RtosInterrupt::IRQ_EXTI3, //EXTI Line3 Interrupt
48  (uint32_t) RtosInterrupt::IRQ_EXTI4, //EXTI Line4 Interrupt
49  (uint32_t) RtosInterrupt::IRQ_DMA1_Channel1, //DMA1 Channel 1 global Interrupt
50  (uint32_t) RtosInterrupt::IRQ_DMA1_Channel2, //DMA1 Channel 2 global Interrupt
51  (uint32_t) RtosInterrupt::IRQ_DMA1_Channel3, //DMA1 Channel 3 global Interrupt
52  (uint32_t) RtosInterrupt::IRQ_DMA1_Channel4, //DMA1 Channel 4 global Interrupt
53  (uint32_t) RtosInterrupt::IRQ_DMA1_Channel5, //DMA1 Channel 5 global Interrupt
54  (uint32_t) RtosInterrupt::IRQ_DMA1_Channel6, //DMA1 Channel 6 global Interrupt
55  (uint32_t) RtosInterrupt::IRQ_DMA1_Channel7, //DMA1 Channel 7 global Interrupt
56 
57 #ifdef STM32F10X_LD
58  (uint32_t) RtosInterrupt::IRQ_ADC1_2, //ADC1 and ADC2 global Interrupt
59  (uint32_t) RtosInterrupt::IRQ_USB_HP_CAN1_TX,//USB Device High Priority or CAN1 TX Interrupts
60  (uint32_t) RtosInterrupt::IRQ_USB_LP_CAN1_RX0,//USB Device Low Priority or CAN1 RX0 Interrupts
61  (uint32_t) RtosInterrupt::IRQ_CAN1_RX1,//CAN1 RX1 Interrupt
62  (uint32_t) RtosInterrupt::IRQ_CAN1_SCE,//CAN1 SCE Interrupt
63  (uint32_t) RtosInterrupt::IRQ_EXTI9_5,//External Line[9:5] Interrupts
64  (uint32_t) RtosInterrupt::IRQ_TIM1_BRK,//TIM1 Break Interrupt
65  (uint32_t) RtosInterrupt::IRQ_TIM1_UP,//TIM1 Update Interrupt
66  (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM,//TIM1 Trigger and Commutation Interrupt
67  (uint32_t) RtosInterrupt::IRQ_TIM1_CC,//TIM1 Capture Compare Interrupt
68  (uint32_t) RtosInterrupt::IRQ_TIM2,//TIM2 global Interrupt
69  (uint32_t) RtosInterrupt::IRQ_TIM3,//TIM3 global Interrupt
70  (uint32_t) RtosInterrupt::IRQ_I2C1_EV,//I2C1 Event Interrupt
71  (uint32_t) RtosInterrupt::IRQ_I2C1_ER,//I2C1 Error Interrupt
72  (uint32_t) RtosInterrupt::IRQ_SPI1,//SPI1 global Interrupt
73  (uint32_t) RtosInterrupt::IRQ_USART1,//USART1 global Interrupt
74  (uint32_t) RtosInterrupt::IRQ_USART2,//USART2 global Interrupt
75  (uint32_t) RtosInterrupt::IRQ_EXTI15_10,//External Line[15:10] Interrupts
76  (uint32_t) RtosInterrupt::IRQ_RTCAlarm,//RTC Alarm through EXTI Line Interrupt
77  (uint32_t) RtosInterrupt::IRQ_USBWakeUp,//USB Device WakeUp from suspend through EXTI Line Interrupt
78 #endif //STM32F10X_LD
79 #ifdef STM32F10X_LD_VL
80  (uint32_t) RtosInterrupt::IRQ_ADC1, //ADC1 global Interrupt
81  (uint32_t) RtosInterrupt::IRQ_EXTI9_5,//External Line[9:5] Interrupts
82  (uint32_t) RtosInterrupt::IRQ_TIM1_BRK_TIM15,//TIM1 Break and TIM15 Interrupts
83  (uint32_t) RtosInterrupt::IRQ_TIM1_UP_TIM16,//TIM1 Update and TIM16 Interrupts
84  (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM_TIM17,//TIM1 Trigger and Commutation and TIM17 Interrupt
85  (uint32_t) RtosInterrupt::IRQ_TIM1_CC,//TIM1 Capture Compare Interrupt
86  (uint32_t) RtosInterrupt::IRQ_TIM2,//TIM2 global Interrupt
87  (uint32_t) RtosInterrupt::IRQ_TIM3,//TIM3 global Interrupt
88  (uint32_t) RtosInterrupt::IRQ_I2C1_EV,//I2C1 Event Interrupt
89  (uint32_t) RtosInterrupt::IRQ_I2C1_ER,//I2C1 Error Interrupt
90  (uint32_t) RtosInterrupt::IRQ_SPI1,//SPI1 global Interrupt
91  (uint32_t) RtosInterrupt::IRQ_USART1,//USART1 global Interrupt
92  (uint32_t) RtosInterrupt::IRQ_USART2,//USART2 global Interrupt
93  (uint32_t) RtosInterrupt::IRQ_EXTI15_10,//External Line[15:10] Interrupts
94  (uint32_t) RtosInterrupt::IRQ_RTCAlarm,//RTC Alarm through EXTI Line Interrupt
95  (uint32_t) RtosInterrupt::IRQ_CEC,//HDMI-CEC Interrupt
96  (uint32_t) RtosInterrupt::IRQ_TIM6_DAC,//TIM6 and DAC underrun Interrupt
97  (uint32_t) RtosInterrupt::IRQ_TIM7,//TIM7 Interrupt
98 #endif //STM32F10X_LD_VL
99 #ifdef STM32F10X_MD
100  (uint32_t) RtosInterrupt::IRQ_ADC1_2, //ADC1 and ADC2 global Interrupt
101  (uint32_t) RtosInterrupt::IRQ_USB_HP_CAN1_TX,//USB Device High Priority or CAN1 TX Interrupts
102  (uint32_t) RtosInterrupt::IRQ_USB_LP_CAN1_RX0,//USB Device Low Priority or CAN1 RX0 Interrupts
103  (uint32_t) RtosInterrupt::IRQ_CAN1_RX1,//CAN1 RX1 Interrupt
104  (uint32_t) RtosInterrupt::IRQ_CAN1_SCE,//CAN1 SCE Interrupt
105  (uint32_t) RtosInterrupt::IRQ_EXTI9_5,//External Line[9:5] Interrupts
106  (uint32_t) RtosInterrupt::IRQ_TIM1_BRK,//TIM1 Break Interrupt
107  (uint32_t) RtosInterrupt::IRQ_TIM1_UP,//TIM1 Update Interrupt
108  (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM,//TIM1 Trigger and Commutation Interrupt
109  (uint32_t) RtosInterrupt::IRQ_TIM1_CC,//TIM1 Capture Compare Interrupt
110  (uint32_t) RtosInterrupt::IRQ_TIM2,//TIM2 global Interrupt
111  (uint32_t) RtosInterrupt::IRQ_TIM3,//TIM3 global Interrupt
112  (uint32_t) RtosInterrupt::IRQ_TIM4,//TIM4 global Interrupt
113  (uint32_t) RtosInterrupt::IRQ_I2C1_EV,//I2C1 Event Interrupt
114  (uint32_t) RtosInterrupt::IRQ_I2C1_ER,//I2C1 Error Interrupt
115  (uint32_t) RtosInterrupt::IRQ_I2C2_EV,//I2C2 Event Interrupt
116  (uint32_t) RtosInterrupt::IRQ_I2C2_ER,//I2C2 Error Interrupt
117  (uint32_t) RtosInterrupt::IRQ_SPI1,//SPI1 global Interrupt
118  (uint32_t) RtosInterrupt::IRQ_SPI2,//SPI2 global Interrupt
119  (uint32_t) RtosInterrupt::IRQ_USART1,//USART1 global Interrupt
120  (uint32_t) RtosInterrupt::IRQ_USART2,//USART2 global Interrupt
121  (uint32_t) RtosInterrupt::IRQ_USART3,//USART3 global Interrupt
122  (uint32_t) RtosInterrupt::IRQ_EXTI15_10,//External Line[15:10] Interrupts
123  (uint32_t) RtosInterrupt::IRQ_RTCAlarm,//RTC Alarm through EXTI Line Interrupt
124  (uint32_t) RtosInterrupt::IRQ_USBWakeUp,//USB Device WakeUp from suspend through EXTI Line Interrupt
125 #endif //STM32F10X_MD
126 #ifdef STM32F10X_MD_VL
127  (uint32_t) RtosInterrupt::IRQ_ADC1, //ADC1 global Interrupt
128  (uint32_t) RtosInterrupt::IRQ_EXTI9_5,//External Line[9:5] Interrupts
129  (uint32_t) RtosInterrupt::IRQ_TIM1_BRK_TIM15,//TIM1 Break and TIM15 Interrupts
130  (uint32_t) RtosInterrupt::IRQ_TIM1_UP_TIM16,//TIM1 Update and TIM16 Interrupts
131  (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM_TIM17,//TIM1 Trigger and Commutation and TIM17 Interrupt
132  (uint32_t) RtosInterrupt::IRQ_TIM1_CC,//TIM1 Capture Compare Interrupt
133  (uint32_t) RtosInterrupt::IRQ_TIM2,//TIM2 global Interrupt
134  (uint32_t) RtosInterrupt::IRQ_TIM3,//TIM3 global Interrupt
135  (uint32_t) RtosInterrupt::IRQ_TIM4,//TIM4 global Interrupt
136  (uint32_t) RtosInterrupt::IRQ_I2C1_EV,//I2C1 Event Interrupt
137  (uint32_t) RtosInterrupt::IRQ_I2C1_ER,//I2C1 Error Interrupt
138  (uint32_t) RtosInterrupt::IRQ_I2C2_EV,//I2C2 Event Interrupt
139  (uint32_t) RtosInterrupt::IRQ_I2C2_ER,//I2C2 Error Interrupt
140  (uint32_t) RtosInterrupt::IRQ_SPI1,//SPI1 global Interrupt
141  (uint32_t) RtosInterrupt::IRQ_SPI2,//SPI2 global Interrupt
142  (uint32_t) RtosInterrupt::IRQ_USART1,//USART1 global Interrupt
143  (uint32_t) RtosInterrupt::IRQ_USART2,//USART2 global Interrupt
144  (uint32_t) RtosInterrupt::IRQ_USART3,//USART3 global Interrupt
145  (uint32_t) RtosInterrupt::IRQ_EXTI15_10,//External Line[15:10] Interrupts
146  (uint32_t) RtosInterrupt::IRQ_RTCAlarm,//RTC Alarm through EXTI Line Interrupt
147  (uint32_t) RtosInterrupt::IRQ_CEC,//HDMI-CEC Interrupt
148  (uint32_t) RtosInterrupt::IRQ_TIM6_DAC,//TIM6 and DAC underrun Interrupt
149  (uint32_t) RtosInterrupt::IRQ_TIM7,//TIM7 Interrupt
150 #endif //STM32F10X_MD_VL
151 #ifdef STM32F10X_HD
152  (uint32_t) RtosInterrupt::IRQ_ADC1_2, //ADC1 and ADC2 global Interrupt
153  (uint32_t) RtosInterrupt::IRQ_USB_HP_CAN1_TX,//USB Device High Priority or CAN1 TX Interrupts
154  (uint32_t) RtosInterrupt::IRQ_USB_LP_CAN1_RX0,//USB Device Low Priority or CAN1 RX0 Interrupts
155  (uint32_t) RtosInterrupt::IRQ_CAN1_RX1,//CAN1 RX1 Interrupt
156  (uint32_t) RtosInterrupt::IRQ_CAN1_SCE,//CAN1 SCE Interrupt
157  (uint32_t) RtosInterrupt::IRQ_EXTI9_5,//External Line[9:5] Interrupts
158  (uint32_t) RtosInterrupt::IRQ_TIM1_BRK,//TIM1 Break Interrupt
159  (uint32_t) RtosInterrupt::IRQ_TIM1_UP,//TIM1 Update Interrupt
160  (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM,//TIM1 Trigger and Commutation Interrupt
161  (uint32_t) RtosInterrupt::IRQ_TIM1_CC,//TIM1 Capture Compare Interrupt
162  (uint32_t) RtosInterrupt::IRQ_TIM2,//TIM2 global Interrupt
163  (uint32_t) RtosInterrupt::IRQ_TIM3,//TIM3 global Interrupt
164  (uint32_t) RtosInterrupt::IRQ_TIM4,//TIM4 global Interrupt
165  (uint32_t) RtosInterrupt::IRQ_I2C1_EV,//I2C1 Event Interrupt
166  (uint32_t) RtosInterrupt::IRQ_I2C1_ER,//I2C1 Error Interrupt
167  (uint32_t) RtosInterrupt::IRQ_I2C2_EV,//I2C2 Event Interrupt
168  (uint32_t) RtosInterrupt::IRQ_I2C2_ER,//I2C2 Error Interrupt
169  (uint32_t) RtosInterrupt::IRQ_SPI1,//SPI1 global Interrupt
170  (uint32_t) RtosInterrupt::IRQ_SPI2,//SPI2 global Interrupt
171  (uint32_t) RtosInterrupt::IRQ_USART1,//USART1 global Interrupt
172  (uint32_t) RtosInterrupt::IRQ_USART2,//USART2 global Interrupt
173  (uint32_t) RtosInterrupt::IRQ_USART3,//USART3 global Interrupt
174  (uint32_t) RtosInterrupt::IRQ_EXTI15_10,//External Line[15:10] Interrupts
175  (uint32_t) RtosInterrupt::IRQ_RTCAlarm,//RTC Alarm through EXTI Line Interrupt
176  (uint32_t) RtosInterrupt::IRQ_USBWakeUp,//USB Device WakeUp from suspend through EXTI Line Interrupt
177  (uint32_t) RtosInterrupt::IRQ_TIM8_BRK,//TIM8 Break Interrupt
178  (uint32_t) RtosInterrupt::IRQ_TIM8_UP,//TIM8 Update Interrupt
179  (uint32_t) RtosInterrupt::IRQ_TIM8_TRG_COM,//TIM8 Trigger and Commutation Interrupt
180  (uint32_t) RtosInterrupt::IRQ_TIM8_CC,//TIM8 Capture Compare Interrupt
181  (uint32_t) RtosInterrupt::IRQ_ADC3,//ADC3 global Interrupt
182  (uint32_t) RtosInterrupt::IRQ_FSMC,//FSMC global Interrupt
183  (uint32_t) RtosInterrupt::IRQ_SDIO,//SDIO global Interrupt
184  (uint32_t) RtosInterrupt::IRQ_TIM5,//TIM5 global Interrupt
185  (uint32_t) RtosInterrupt::IRQ_SPI3,//SPI3 global Interrupt
186  (uint32_t) RtosInterrupt::IRQ_UART4,//UART4 global Interrupt
187  (uint32_t) RtosInterrupt::IRQ_UART5,//UART5 global Interrupt
188  (uint32_t) RtosInterrupt::IRQ_TIM6,//TIM6 global Interrupt
189  (uint32_t) RtosInterrupt::IRQ_TIM7,//TIM7 global Interrupt
190  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel1,//DMA2 Channel 1 global Interrupt
191  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel2,//DMA2 Channel 2 global Interrupt
192  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel3,//DMA2 Channel 3 global Interrupt
193  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel4_5,//DMA2 Channel 4 and Channel 5 global Interrupt
194 #endif //STM32F10X_HD
195 #ifdef STM32F10X_HD_VL
196  (uint32_t) RtosInterrupt::IRQ_ADC1, //ADC1 global Interrupt
197  (uint32_t) RtosInterrupt::IRQ_EXTI9_5,//External Line[9:5] Interrupts
198  (uint32_t) RtosInterrupt::IRQ_TIM1_BRK_TIM15,//TIM1 Break and TIM15 Interrupts
199  (uint32_t) RtosInterrupt::IRQ_TIM1_UP_TIM16,//TIM1 Update and TIM16 Interrupts
200  (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM_TIM17,//TIM1 Trigger and Commutation and TIM17 Interrupt
201  (uint32_t) RtosInterrupt::IRQ_TIM1_CC,//TIM1 Capture Compare Interrupt
202  (uint32_t) RtosInterrupt::IRQ_TIM2,//TIM2 global Interrupt
203  (uint32_t) RtosInterrupt::IRQ_TIM3,//TIM3 global Interrupt
204  (uint32_t) RtosInterrupt::IRQ_TIM4,//TIM4 global Interrupt
205  (uint32_t) RtosInterrupt::IRQ_I2C1_EV,//I2C1 Event Interrupt
206  (uint32_t) RtosInterrupt::IRQ_I2C1_ER,//I2C1 Error Interrupt
207  (uint32_t) RtosInterrupt::IRQ_I2C2_EV,//I2C2 Event Interrupt
208  (uint32_t) RtosInterrupt::IRQ_I2C2_ER,//I2C2 Error Interrupt
209  (uint32_t) RtosInterrupt::IRQ_SPI1,//SPI1 global Interrupt
210  (uint32_t) RtosInterrupt::IRQ_SPI2,//SPI2 global Interrupt
211  (uint32_t) RtosInterrupt::IRQ_USART1,//USART1 global Interrupt
212  (uint32_t) RtosInterrupt::IRQ_USART2,//USART2 global Interrupt
213  (uint32_t) RtosInterrupt::IRQ_USART3,//USART3 global Interrupt
214  (uint32_t) RtosInterrupt::IRQ_EXTI15_10,//External Line[15:10] Interrupts
215  (uint32_t) RtosInterrupt::IRQ_RTCAlarm,//RTC Alarm through EXTI Line Interrupt
216  (uint32_t) RtosInterrupt::IRQ_CEC,//HDMI-CEC Interrupt
217  (uint32_t) RtosInterrupt::IRQ_TIM12,//TIM12 global Interrupt
218  (uint32_t) RtosInterrupt::IRQ_TIM13,//TIM13 global Interrupt
219  (uint32_t) RtosInterrupt::IRQ_TIM14,//TIM14 global Interrupt
220  (uint32_t) RtosInterrupt::IRQ_TIM5,//TIM5 global Interrupt
221  (uint32_t) RtosInterrupt::IRQ_SPI3,//SPI3 global Interrupt
222  (uint32_t) RtosInterrupt::IRQ_UART4,//UART4 global Interrupt
223  (uint32_t) RtosInterrupt::IRQ_UART5,//UART5 global Interrupt
224  (uint32_t) RtosInterrupt::IRQ_TIM6_DAC,//TIM6 and DAC underrun Interrupt
225  (uint32_t) RtosInterrupt::IRQ_TIM7,//TIM7 Interrupt
226  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel1,//DMA2 Channel 1 global Interrupt
227  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel2,//DMA2 Channel 2 global Interrupt
228  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel3,//DMA2 Channel 3 global Interrupt
229  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel4_5,//DMA2 Channel 4 and Channel 5 global Interrupt
230  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel5,//DMA2 Channel 5 global Interrupt
231 #endif //STM32F10X_HD_VL
232 #ifdef STM32F10X_XL
233  (uint32_t) RtosInterrupt::IRQ_ADC1_2, //ADC1 and ADC2 global Interrupt
234  (uint32_t) RtosInterrupt::IRQ_USB_HP_CAN1_TX,//USB Device High Priority or CAN1 TX Interrupts
235  (uint32_t) RtosInterrupt::IRQ_USB_LP_CAN1_RX0,//USB Device Low Priority or CAN1 RX0 Interrupts
236  (uint32_t) RtosInterrupt::IRQ_CAN1_RX1,//CAN1 RX1 Interrupt
237  (uint32_t) RtosInterrupt::IRQ_CAN1_SCE,//CAN1 SCE Interrupt
238  (uint32_t) RtosInterrupt::IRQ_EXTI9_5,//External Line[9:5] Interrupts
239  (uint32_t) RtosInterrupt::IRQ_TIM1_BRK_TIM9,//TIM1 Break Interrupt and TIM9 global Interrupt
240  (uint32_t) RtosInterrupt::IRQ_TIM1_UP_TIM10,//TIM1 Update Interrupt and TIM10 global Interrupt
241  (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM_TIM11,//TIM1 Trigger and Commutation Interrupt and TIM11 global interrupt
242  (uint32_t) RtosInterrupt::IRQ_TIM1_CC,//TIM1 Capture Compare Interrupt
243  (uint32_t) RtosInterrupt::IRQ_TIM2,//TIM2 global Interrupt
244  (uint32_t) RtosInterrupt::IRQ_TIM3,//TIM3 global Interrupt
245  (uint32_t) RtosInterrupt::IRQ_TIM4,//TIM4 global Interrupt
246  (uint32_t) RtosInterrupt::IRQ_I2C1_EV,//I2C1 Event Interrupt
247  (uint32_t) RtosInterrupt::IRQ_I2C1_ER,//I2C1 Error Interrupt
248  (uint32_t) RtosInterrupt::IRQ_I2C2_EV,//I2C2 Event Interrupt
249  (uint32_t) RtosInterrupt::IRQ_I2C2_ER,//I2C2 Error Interrupt
250  (uint32_t) RtosInterrupt::IRQ_SPI1,//SPI1 global Interrupt
251  (uint32_t) RtosInterrupt::IRQ_SPI2,//SPI2 global Interrupt
252  (uint32_t) RtosInterrupt::IRQ_USART1,//USART1 global Interrupt
253  (uint32_t) RtosInterrupt::IRQ_USART2,//USART2 global Interrupt
254  (uint32_t) RtosInterrupt::IRQ_USART3,//USART3 global Interrupt
255  (uint32_t) RtosInterrupt::IRQ_EXTI15_10,//External Line[15:10] Interrupts
256  (uint32_t) RtosInterrupt::IRQ_RTCAlarm,//RTC Alarm through EXTI Line Interrupt
257  (uint32_t) RtosInterrupt::IRQ_USBWakeUp,//USB Device WakeUp from suspend through EXTI Line Interrupt
258  (uint32_t) RtosInterrupt::IRQ_TIM8_BRK_TIM12,//TIM8 Break Interrupt and TIM12 global Interrupt
259  (uint32_t) RtosInterrupt::IRQ_TIM8_UP_TIM13,//TIM8 Update Interrupt and TIM13 global Interrupt
260  (uint32_t) RtosInterrupt::IRQ_TIM8_TRG_COM_TIM14,//TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt
261  (uint32_t) RtosInterrupt::IRQ_TIM8_CC,//TIM8 Capture Compare Interrupt
262  (uint32_t) RtosInterrupt::IRQ_ADC3,//ADC3 global Interrupt
263  (uint32_t) RtosInterrupt::IRQ_FSMC,//FSMC global Interrupt
264  (uint32_t) RtosInterrupt::IRQ_SDIO,//SDIO global Interrupt
265  (uint32_t) RtosInterrupt::IRQ_TIM5,//TIM5 global Interrupt
266  (uint32_t) RtosInterrupt::IRQ_SPI3,//SPI3 global Interrupt
267  (uint32_t) RtosInterrupt::IRQ_UART4,//UART4 global Interrupt
268  (uint32_t) RtosInterrupt::IRQ_UART5,//UART5 global Interrupt
269  (uint32_t) RtosInterrupt::IRQ_TIM6,//TIM6 global Interrupt
270  (uint32_t) RtosInterrupt::IRQ_TIM7,//TIM7 global Interrupt
271  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel1,//DMA2 Channel 1 global Interrupt
272  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel2,//DMA2 Channel 2 global Interrupt
273  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel3,//DMA2 Channel 3 global Interrupt
274  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel4_5,//DMA2 Channel 4 and Channel 5 global Interrupt
275 #endif //STM32F10X_XL
276 #ifdef STM32F10X_CL
277  (uint32_t) RtosInterrupt::IRQ_ADC1_2, //ADC1 and ADC2 global Interrupt
278  (uint32_t) RtosInterrupt::IRQ_CAN1_TX,//USB Device High Priority or CAN1 TX Interrupts
279  (uint32_t) RtosInterrupt::IRQ_CAN1_RX0,//USB Device Low Priority or CAN1 RX0 Interrupts
280  (uint32_t) RtosInterrupt::IRQ_CAN1_RX1,//CAN1 RX1 Interrupt
281  (uint32_t) RtosInterrupt::IRQ_CAN1_SCE,//CAN1 SCE Interrupt
282  (uint32_t) RtosInterrupt::IRQ_EXTI9_5,//External Line[9:5] Interrupts
283  (uint32_t) RtosInterrupt::IRQ_TIM1_BRK,//TIM1 Break Interrupt
284  (uint32_t) RtosInterrupt::IRQ_TIM1_UP,//TIM1 Update Interrupt
285  (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM,//TIM1 Trigger and Commutation Interrupt
286  (uint32_t) RtosInterrupt::IRQ_TIM1_CC,//TIM1 Capture Compare Interrupt
287  (uint32_t) RtosInterrupt::IRQ_TIM2,//TIM2 global Interrupt
288  (uint32_t) RtosInterrupt::IRQ_TIM3,//TIM3 global Interrupt
289  (uint32_t) RtosInterrupt::IRQ_TIM4,//TIM4 global Interrupt
290  (uint32_t) RtosInterrupt::IRQ_I2C1_EV,//I2C1 Event Interrupt
291  (uint32_t) RtosInterrupt::IRQ_I2C1_ER,//I2C1 Error Interrupt
292  (uint32_t) RtosInterrupt::IRQ_I2C2_EV,//I2C2 Event Interrupt
293  (uint32_t) RtosInterrupt::IRQ_I2C2_ER,//I2C2 Error Interrupt
294  (uint32_t) RtosInterrupt::IRQ_SPI1,//SPI1 global Interrupt
295  (uint32_t) RtosInterrupt::IRQ_SPI2,//SPI2 global Interrupt
296  (uint32_t) RtosInterrupt::IRQ_USART1,//USART1 global Interrupt
297  (uint32_t) RtosInterrupt::IRQ_USART2,//USART2 global Interrupt
298  (uint32_t) RtosInterrupt::IRQ_USART3,//USART3 global Interrupt
299  (uint32_t) RtosInterrupt::IRQ_EXTI15_10,//External Line[15:10] Interrupts
300  (uint32_t) RtosInterrupt::IRQ_RTCAlarm,//RTC Alarm through EXTI Line Interrupt
301  (uint32_t) RtosInterrupt::IRQ_OTG_FS_WKUP,//USB OTG FS WakeUp from suspend through EXTI Line Interrupt
302  (uint32_t) RtosInterrupt::IRQ_TIM5,//TIM5 global Interrupt
303  (uint32_t) RtosInterrupt::IRQ_SPI3,//SPI3 global Interrupt
304  (uint32_t) RtosInterrupt::IRQ_UART4,//UART4 global Interrupt
305  (uint32_t) RtosInterrupt::IRQ_UART5,//UART5 global Interrupt
306  (uint32_t) RtosInterrupt::IRQ_TIM6,//TIM6 global Interrupt
307  (uint32_t) RtosInterrupt::IRQ_TIM7,//TIM7 global Interrupt
308  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel1,//DMA2 Channel 1 global Interrupt
309  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel2,//DMA2 Channel 2 global Interrupt
310  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel3,//DMA2 Channel 3 global Interrupt
311  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel4,//DMA2 Channel 4 global Interrupt
312  (uint32_t) RtosInterrupt::IRQ_DMA2_Channel5,//DMA2 Channel 5 global Interrupt
313  (uint32_t) RtosInterrupt::IRQ_ETH,//Ethernet global Interrupt
314  (uint32_t) RtosInterrupt::IRQ_ETH_WKUP,//Ethernet Wakeup through EXTI line Interrupt
315  (uint32_t) RtosInterrupt::IRQ_CAN2_TX,//CAN2 TX Interrupt
316  (uint32_t) RtosInterrupt::IRQ_CAN2_RX0,//CAN2 RX0 Interrupt
317  (uint32_t) RtosInterrupt::IRQ_CAN2_RX1,//CAN2 RX1 Interrupt
318  (uint32_t) RtosInterrupt::IRQ_CAN2_SCE,//CAN2 SCE Interrupt
319  (uint32_t) RtosInterrupt::IRQ_OTG_FS//USB OTG FS global Interrupt
320 #endif //STM32F10X_CL
321  };
322 
323 extern unsigned long _flash_data;
324 extern unsigned long _data;
325 extern unsigned long _edata;
326 extern unsigned long _bss;
327 extern unsigned long _ebss;
328 
329 __attribute__ ((naked,used)) void entryPoint(void) {
330 
331  //To remove warnings
332  (void) _flash_data;
333  (void) _data;
334  (void) _edata;
335  (void) _bss;
336  (void) _ebss;
337 
338  // Copy the data segment initializers from flash to SRAM.
339  __asm(
340  " .thumb_func \n"
341  " ldr r0, =_flash_data \n"
342  " ldr r1, =_data \n"
343  " ldr r2, =_edata \n"
344  "loopData: \n"
345  " cmp r1, r2 \n"
346  " it eq \n"
347  " beq end \n"
348  " ldr r3, [r0], #4 \n"
349  " str r3, [r1], #4 \n"
350  " blt loopData \n"
351  "end: \n"
352  :::"r0","r1","r2","r3");
353 
354  // Zero fill the bss segment
355  __asm(
356  " .thumb_func \n"
357  " ldr r0, =_bss \n"
358  " ldr r1, =_ebss \n"
359  " mov r2, #0 \n"
360  "loopBss: \n"
361  " cmp r0, r1 \n"
362  " it lt \n"
363  " strlt r2, [r0], #4 \n"
364  " blt loopBss \n"
365  :::"r0","r1","r2");
366 
367  // Restore stack pointer
368  __asm(
369  " .thumb_func \n"
370  " ldr r13, =vectorsTable \n"
371  " ldr r13, [r13] \n"
372  :::);
373 
374  //Call the global objets constructors
375  __libc_init_array();
376 
377  // Call the application's entry point.
378  main();
379 }