Init commit of bundled StdPeriph-CMSIS library
This commit is contained in:
@@ -0,0 +1,339 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file startup_stm32f10x_cl.c
|
||||
* @author Coocox
|
||||
* @version V1.0
|
||||
* @date 3/7/2011
|
||||
* @brief STM32F10x Connectivity line Devices Startup code.
|
||||
* This module performs:
|
||||
* - Set the initial SP
|
||||
* - Set the vector table entries with the exceptions ISR address
|
||||
* - Initialize data and bss
|
||||
* - Setup the microcontroller system.
|
||||
* - Call the application's entry point.
|
||||
* After Reset the Cortex-M3 processor is in Thread mode,
|
||||
* priority is Privileged, and the Stack is set to Main.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*----------Macro definition--------------------------------------------------*/
|
||||
#define WEAK __attribute__ ((weak))
|
||||
|
||||
|
||||
/*----------Declaration of the default fault handlers-------------------------*/
|
||||
/* System exception vector handler */
|
||||
void WEAK Reset_Handler(void);
|
||||
void WEAK NMI_Handler(void);
|
||||
void WEAK HardFault_Handler(void);
|
||||
void WEAK MemManage_Handler(void);
|
||||
void WEAK BusFault_Handler(void);
|
||||
void WEAK UsageFault_Handler(void);
|
||||
void WEAK SVC_Handler(void);
|
||||
void WEAK DebugMon_Handler(void);
|
||||
void WEAK PendSV_Handler(void);
|
||||
void WEAK SysTick_Handler(void);
|
||||
void WEAK WWDG_IRQHandler(void);
|
||||
void WEAK PVD_IRQHandler(void);
|
||||
void WEAK TAMPER_IRQHandler(void);
|
||||
void WEAK RTC_IRQHandler(void);
|
||||
void WEAK FLASH_IRQHandler(void);
|
||||
void WEAK RCC_IRQHandler(void);
|
||||
void WEAK EXTI0_IRQHandler(void);
|
||||
void WEAK EXTI1_IRQHandler(void);
|
||||
void WEAK EXTI2_IRQHandler(void);
|
||||
void WEAK EXTI3_IRQHandler(void);
|
||||
void WEAK EXTI4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel1_IRQHandler(void);
|
||||
void WEAK DMA1_Channel2_IRQHandler(void);
|
||||
void WEAK DMA1_Channel3_IRQHandler(void);
|
||||
void WEAK DMA1_Channel4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel5_IRQHandler(void);
|
||||
void WEAK DMA1_Channel6_IRQHandler(void);
|
||||
void WEAK DMA1_Channel7_IRQHandler(void);
|
||||
void WEAK ADC1_2_IRQHandler(void);
|
||||
void WEAK CAN1_TX_IRQHandler(void);
|
||||
void WEAK CAN1_RX0_IRQHandler(void);
|
||||
void WEAK CAN1_RX1_IRQHandler(void);
|
||||
void WEAK CAN1_SCE_IRQHandler(void);
|
||||
void WEAK EXTI9_5_IRQHandler(void);
|
||||
void WEAK TIM1_BRK_IRQHandler(void);
|
||||
void WEAK TIM1_UP_IRQHandler(void);
|
||||
void WEAK TIM1_TRG_COM_IRQHandler(void);
|
||||
void WEAK TIM1_CC_IRQHandler(void);
|
||||
void WEAK TIM2_IRQHandler(void);
|
||||
void WEAK TIM3_IRQHandler(void);
|
||||
void WEAK TIM4_IRQHandler(void);
|
||||
void WEAK I2C1_EV_IRQHandler(void);
|
||||
void WEAK I2C1_ER_IRQHandler(void);
|
||||
void WEAK I2C2_EV_IRQHandler(void);
|
||||
void WEAK I2C2_ER_IRQHandler(void);
|
||||
void WEAK SPI1_IRQHandler(void);
|
||||
void WEAK SPI2_IRQHandler(void);
|
||||
void WEAK USART1_IRQHandler(void);
|
||||
void WEAK USART2_IRQHandler(void);
|
||||
void WEAK USART3_IRQHandler(void);
|
||||
void WEAK EXTI15_10_IRQHandler(void);
|
||||
void WEAK RTCAlarm_IRQHandler(void);
|
||||
void WEAK OTG_FS_WKUP_IRQHandler(void);
|
||||
void WEAK TIM5_IRQHandler(void);
|
||||
void WEAK SPI3_IRQHandler(void);
|
||||
void WEAK UART4_IRQHandler(void);
|
||||
void WEAK UART5_IRQHandler(void);
|
||||
void WEAK TIM6_IRQHandler(void);
|
||||
void WEAK TIM7_IRQHandler(void);
|
||||
void WEAK DMA2_Channel1_IRQHandler(void);
|
||||
void WEAK DMA2_Channel2_IRQHandler(void);
|
||||
void WEAK DMA2_Channel3_IRQHandler(void);
|
||||
void WEAK DMA2_Channel4_IRQHandler(void);
|
||||
void WEAK DMA2_Channel5_IRQHandler(void);
|
||||
void WEAK ETH_IRQHandler(void);
|
||||
void WEAK ETH_WKUP_IRQHandler(void);
|
||||
void WEAK CAN2_TX_IRQHandler(void);
|
||||
void WEAK CAN2_RX0_IRQHandler(void);
|
||||
void WEAK CAN2_RX1_IRQHandler(void);
|
||||
void WEAK CAN2_SCE_IRQHandler(void);
|
||||
void WEAK OTG_FS_IRQHandler(void);
|
||||
|
||||
|
||||
/*----------Symbols defined in linker script----------------------------------*/
|
||||
extern unsigned long _sidata; /*!< Start address for the initialization
|
||||
values of the .data section. */
|
||||
extern unsigned long _sdata; /*!< Start address for the .data section */
|
||||
extern unsigned long _edata; /*!< End address for the .data section */
|
||||
extern unsigned long _sbss; /*!< Start address for the .bss section */
|
||||
extern unsigned long _ebss; /*!< End address for the .bss section */
|
||||
extern unsigned long _eram; /*!< End address for ram */
|
||||
|
||||
|
||||
/*----------Function prototypes-----------------------------------------------*/
|
||||
extern int main(void); /*!< The entry point for the application. */
|
||||
extern void SystemInit(void); /*!< Setup the microcontroller system(CMSIS) */
|
||||
void Default_Reset_Handler(void); /*!< Default reset handler */
|
||||
static void Default_Handler(void); /*!< Default exception handler */
|
||||
|
||||
|
||||
/**
|
||||
*@brief The minimal vector table for a Cortex M3. Note that the proper constructs
|
||||
* must be placed on this to ensure that it ends up at physical address
|
||||
* 0x00000000.
|
||||
*/
|
||||
__attribute__ ((section(".isr_vector")))
|
||||
void (* const g_pfnVectors[])(void) =
|
||||
{
|
||||
/*----------Core Exceptions------------------------------------------------ */
|
||||
(void *)&_eram, /*!< The initial stack pointer at end of RAM */
|
||||
Reset_Handler, /*!< Reset Handler */
|
||||
NMI_Handler, /*!< NMI Handler */
|
||||
HardFault_Handler, /*!< Hard Fault Handler */
|
||||
MemManage_Handler, /*!< MPU Fault Handler */
|
||||
BusFault_Handler, /*!< Bus Fault Handler */
|
||||
UsageFault_Handler, /*!< Usage Fault Handler */
|
||||
0,0,0,0, /*!< Reserved */
|
||||
SVC_Handler, /*!< SVCall Handler */
|
||||
DebugMon_Handler, /*!< Debug Monitor Handler */
|
||||
0, /*!< Reserved */
|
||||
PendSV_Handler, /*!< PendSV Handler */
|
||||
SysTick_Handler, /*!< SysTick Handler */
|
||||
|
||||
/*----------External Exceptions---------------------------------------------*/
|
||||
WWDG_IRQHandler, /*!< 0: Window Watchdog */
|
||||
PVD_IRQHandler, /*!< 1: PVD through EXTI Line detect */
|
||||
TAMPER_IRQHandler, /*!< 2: Tamper */
|
||||
RTC_IRQHandler, /*!< 3: RTC */
|
||||
FLASH_IRQHandler, /*!< 4: Flash */
|
||||
RCC_IRQHandler, /*!< 5: RCC */
|
||||
EXTI0_IRQHandler, /*!< 6: EXTI Line 0 */
|
||||
EXTI1_IRQHandler, /*!< 7: EXTI Line 1 */
|
||||
EXTI2_IRQHandler, /*!< 8: EXTI Line 2 */
|
||||
EXTI3_IRQHandler, /*!< 9: EXTI Line 3 */
|
||||
EXTI4_IRQHandler, /*!< 10: EXTI Line 4 */
|
||||
DMA1_Channel1_IRQHandler, /*!< 11: DMA1 Channel 1 */
|
||||
DMA1_Channel2_IRQHandler, /*!< 12: DMA1 Channel 2 */
|
||||
DMA1_Channel3_IRQHandler, /*!< 13: DMA1 Channel 3 */
|
||||
DMA1_Channel4_IRQHandler, /*!< 14: DMA1 Channel 4 */
|
||||
DMA1_Channel5_IRQHandler, /*!< 15: DMA1 Channel 5 */
|
||||
DMA1_Channel6_IRQHandler, /*!< 16: DMA1 Channel 6 */
|
||||
DMA1_Channel7_IRQHandler, /*!< 17: DMA1 Channel 7 */
|
||||
ADC1_2_IRQHandler, /*!< 18: ADC1 & ADC2 */
|
||||
CAN1_TX_IRQHandler, /*!< 19: CAN1 TX */
|
||||
CAN1_RX0_IRQHandler, /*!< 20: CAN1 RX0 */
|
||||
CAN1_RX1_IRQHandler, /*!< 21: CAN1 RX1 */
|
||||
CAN1_SCE_IRQHandler, /*!< 22: CAN1 SCE */
|
||||
EXTI9_5_IRQHandler, /*!< 23: EXTI Line 9..5 */
|
||||
TIM1_BRK_IRQHandler, /*!< 24: TIM1 Break */
|
||||
TIM1_UP_IRQHandler, /*!< 25: TIM1 Update */
|
||||
TIM1_TRG_COM_IRQHandler, /*!< 26: TIM1 Trigger and Commutation */
|
||||
TIM1_CC_IRQHandler, /*!< 27: TIM1 Capture Compare */
|
||||
TIM2_IRQHandler, /*!< 28: TIM2 */
|
||||
TIM3_IRQHandler, /*!< 29: TIM3 */
|
||||
TIM4_IRQHandler, /*!< 30: TIM4 */
|
||||
I2C1_EV_IRQHandler, /*!< 31: I2C1 Event */
|
||||
I2C1_ER_IRQHandler, /*!< 32: I2C1 Error */
|
||||
I2C2_EV_IRQHandler, /*!< 33: I2C2 Event */
|
||||
I2C2_ER_IRQHandler, /*!< 34: I2C2 Error */
|
||||
SPI1_IRQHandler, /*!< 35: SPI1 */
|
||||
SPI2_IRQHandler, /*!< 36: SPI2 */
|
||||
USART1_IRQHandler, /*!< 37: USART1 */
|
||||
USART2_IRQHandler, /*!< 38: USART2 */
|
||||
USART3_IRQHandler, /*!< 39: USART3 */
|
||||
EXTI15_10_IRQHandler, /*!< 40: EXTI Line 15..10 */
|
||||
RTCAlarm_IRQHandler, /*!< 41: RTC Alarm through EXTI Line */
|
||||
OTG_FS_WKUP_IRQHandler, /*!< 42: USB OTG FS Wakeup through EXTI line */
|
||||
0,0,0,0,0,0,0, /*!< Reserved */
|
||||
TIM5_IRQHandler, /*!< 50: TIM5 */
|
||||
SPI3_IRQHandler, /*!< 51: SPI3 */
|
||||
UART4_IRQHandler, /*!< 52: UART4 */
|
||||
UART5_IRQHandler, /*!< 53: UART5 */
|
||||
TIM6_IRQHandler, /*!< 54: TIM6 */
|
||||
TIM7_IRQHandler, /*!< 55: TIM7 */
|
||||
DMA2_Channel1_IRQHandler, /*!< 56: DMA2 Channel1 */
|
||||
DMA2_Channel2_IRQHandler, /*!< 57: DMA2 Channel2 */
|
||||
DMA2_Channel3_IRQHandler, /*!< 58: DMA2 Channel3 */
|
||||
DMA2_Channel4_IRQHandler, /*!< 59: DMA2 Channel4 */
|
||||
DMA2_Channel5_IRQHandler, /*!< 60: DMA2 Channel5 */
|
||||
ETH_IRQHandler, /*!< 61: Ethernet */
|
||||
ETH_WKUP_IRQHandler, /*!< 62: Ethernet Wakeup through EXTI line */
|
||||
CAN2_TX_IRQHandler, /*!< 63: CAN2 TX */
|
||||
CAN2_RX0_IRQHandler, /*!< 64: CAN2 RX0 */
|
||||
CAN2_RX1_IRQHandler, /*!< 65: CAN2 RX1 */
|
||||
CAN2_SCE_IRQHandler, /*!< 66: CAN2 SCE */
|
||||
OTG_FS_IRQHandler, /*!< 67: USB OTG FS */
|
||||
(void *)0xF108F85F /*!< Boot in RAM mode */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor first
|
||||
* starts execution following a reset event. Only the absolutely
|
||||
* necessary set is performed, after which the application
|
||||
* supplied main() routine is called.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void Default_Reset_Handler(void)
|
||||
{
|
||||
/* Initialize data and bss */
|
||||
unsigned long *pulSrc, *pulDest;
|
||||
|
||||
/* Copy the data segment initializers from flash to SRAM */
|
||||
pulSrc = &_sidata;
|
||||
|
||||
for(pulDest = &_sdata; pulDest < &_edata; )
|
||||
{
|
||||
*(pulDest++) = *(pulSrc++);
|
||||
}
|
||||
|
||||
/* Zero fill the bss segment. This is done with inline assembly since this
|
||||
will clear the value of pulDest if it is not kept in a register. */
|
||||
__asm(" ldr r0, =_sbss\n"
|
||||
" ldr r1, =_ebss\n"
|
||||
" mov r2, #0\n"
|
||||
" .thumb_func\n"
|
||||
"zero_loop:\n"
|
||||
" cmp r0, r1\n"
|
||||
" it lt\n"
|
||||
" strlt r2, [r0], #4\n"
|
||||
" blt zero_loop");
|
||||
|
||||
/* Setup the microcontroller system. */
|
||||
SystemInit();
|
||||
|
||||
/* Call the application's entry point.*/
|
||||
main();
|
||||
}
|
||||
|
||||
/**
|
||||
*@brief Provide weak aliases for each Exception handler to the Default_Handler.
|
||||
* As they are weak aliases, any function with the same name will override
|
||||
* this definition.
|
||||
*/
|
||||
#pragma weak Reset_Handler = Default_Reset_Handler
|
||||
#pragma weak NMI_Handler = Default_Handler
|
||||
#pragma weak HardFault_Handler = Default_Handler
|
||||
#pragma weak MemManage_Handler = Default_Handler
|
||||
#pragma weak BusFault_Handler = Default_Handler
|
||||
#pragma weak UsageFault_Handler = Default_Handler
|
||||
#pragma weak SVC_Handler = Default_Handler
|
||||
#pragma weak DebugMon_Handler = Default_Handler
|
||||
#pragma weak PendSV_Handler = Default_Handler
|
||||
#pragma weak SysTick_Handler = Default_Handler
|
||||
#pragma weak WWDG_IRQHandler = Default_Handler
|
||||
#pragma weak PVD_IRQHandler = Default_Handler
|
||||
#pragma weak TAMPER_IRQHandler = Default_Handler
|
||||
#pragma weak RTC_IRQHandler = Default_Handler
|
||||
#pragma weak FLASH_IRQHandler = Default_Handler
|
||||
#pragma weak RCC_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI0_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI1_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI2_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI3_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel1_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel2_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel3_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel5_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel6_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel7_IRQHandler = Default_Handler
|
||||
#pragma weak ADC1_2_IRQHandler = Default_Handler
|
||||
#pragma weak CAN1_TX_IRQHandler = Default_Handler
|
||||
#pragma weak CAN1_RX0_IRQHandler = Default_Handler
|
||||
#pragma weak CAN1_RX1_IRQHandler = Default_Handler
|
||||
#pragma weak CAN1_SCE_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI9_5_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_BRK_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_UP_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_TRG_COM_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_CC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM2_IRQHandler = Default_Handler
|
||||
#pragma weak TIM3_IRQHandler = Default_Handler
|
||||
#pragma weak TIM4_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_EV_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_ER_IRQHandler = Default_Handler
|
||||
#pragma weak I2C2_EV_IRQHandler = Default_Handler
|
||||
#pragma weak I2C2_ER_IRQHandler = Default_Handler
|
||||
#pragma weak SPI1_IRQHandler = Default_Handler
|
||||
#pragma weak SPI2_IRQHandler = Default_Handler
|
||||
#pragma weak USART1_IRQHandler = Default_Handler
|
||||
#pragma weak USART2_IRQHandler = Default_Handler
|
||||
#pragma weak USART3_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI15_10_IRQHandler = Default_Handler
|
||||
#pragma weak RTCAlarm_IRQHandler = Default_Handler
|
||||
#pragma weak OTG_FS_WKUP_IRQHandler = Default_Handler
|
||||
#pragma weak TIM5_IRQHandler = Default_Handler
|
||||
#pragma weak SPI3_IRQHandler = Default_Handler
|
||||
#pragma weak UART4_IRQHandler = Default_Handler
|
||||
#pragma weak UART5_IRQHandler = Default_Handler
|
||||
#pragma weak TIM6_IRQHandler = Default_Handler
|
||||
#pragma weak TIM7_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel1_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel2_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel3_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel5_IRQHandler = Default_Handler
|
||||
#pragma weak ETH_IRQHandler = Default_Handler
|
||||
#pragma weak ETH_WKUP_IRQHandler = Default_Handler
|
||||
#pragma weak CAN2_TX_IRQHandler = Default_Handler
|
||||
#pragma weak CAN2_RX0_IRQHandler = Default_Handler
|
||||
#pragma weak CAN2_RX1_IRQHandler = Default_Handler
|
||||
#pragma weak CAN2_SCE_IRQHandler = Default_Handler
|
||||
#pragma weak OTG_FS_IRQHandler = Default_Handler
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor receives an
|
||||
* unexpected interrupt. This simply enters an infinite loop,
|
||||
* preserving the system state for examination by a debugger.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void Default_Handler(void)
|
||||
{
|
||||
/* Go into an infinite loop. */
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/*********************** (C) COPYRIGHT 2011 Coocox ************END OF FILE*****/
|
||||
@@ -0,0 +1,352 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file startup_stm32f10x_hd.c
|
||||
* @author Coocox
|
||||
* @version V1.0
|
||||
* @date 3/7/2011
|
||||
* @brief STM32F10x High Density Devices Startup code.
|
||||
* This module performs:
|
||||
* - Set the initial SP
|
||||
* - Set the vector table entries with the exceptions ISR address
|
||||
* - Initialize data and bss
|
||||
* - Setup the microcontroller system.
|
||||
* - Call the application's entry point.
|
||||
* After Reset the Cortex-M3 processor is in Thread mode,
|
||||
* priority is Privileged, and the Stack is set to Main.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*----------Macro definition--------------------------------------------------*/
|
||||
#define WEAK __attribute__ ((weak))
|
||||
|
||||
|
||||
/*----------Declaration of the default fault handlers-------------------------*/
|
||||
/* System exception vector handler */
|
||||
void WEAK Reset_Handler(void);
|
||||
void WEAK NMI_Handler(void);
|
||||
void WEAK HardFault_Handler(void);
|
||||
void WEAK MemManage_Handler(void);
|
||||
void WEAK BusFault_Handler(void);
|
||||
void WEAK UsageFault_Handler(void);
|
||||
void WEAK SVC_Handler(void);
|
||||
void WEAK DebugMon_Handler(void);
|
||||
void WEAK PendSV_Handler(void);
|
||||
void WEAK SysTick_Handler(void);
|
||||
void WEAK WWDG_IRQHandler(void);
|
||||
void WEAK PVD_IRQHandler(void);
|
||||
void WEAK TAMPER_IRQHandler(void);
|
||||
void WEAK RTC_IRQHandler(void);
|
||||
void WEAK FLASH_IRQHandler(void);
|
||||
void WEAK RCC_IRQHandler(void);
|
||||
void WEAK EXTI0_IRQHandler(void);
|
||||
void WEAK EXTI1_IRQHandler(void);
|
||||
void WEAK EXTI2_IRQHandler(void);
|
||||
void WEAK EXTI3_IRQHandler(void);
|
||||
void WEAK EXTI4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel1_IRQHandler(void);
|
||||
void WEAK DMA1_Channel2_IRQHandler(void);
|
||||
void WEAK DMA1_Channel3_IRQHandler(void);
|
||||
void WEAK DMA1_Channel4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel5_IRQHandler(void);
|
||||
void WEAK DMA1_Channel6_IRQHandler(void);
|
||||
void WEAK DMA1_Channel7_IRQHandler(void);
|
||||
void WEAK ADC1_2_IRQHandler(void);
|
||||
void WEAK USB_HP_CAN1_TX_IRQHandler(void);
|
||||
void WEAK USB_LP_CAN1_RX0_IRQHandler(void);
|
||||
void WEAK CAN1_RX1_IRQHandler(void);
|
||||
void WEAK CAN1_SCE_IRQHandler(void);
|
||||
void WEAK EXTI9_5_IRQHandler(void);
|
||||
void WEAK TIM1_BRK_IRQHandler(void);
|
||||
void WEAK TIM1_UP_IRQHandler(void);
|
||||
void WEAK TIM1_TRG_COM_IRQHandler(void);
|
||||
void WEAK TIM1_CC_IRQHandler(void);
|
||||
void WEAK TIM2_IRQHandler(void);
|
||||
void WEAK TIM3_IRQHandler(void);
|
||||
void WEAK TIM4_IRQHandler(void);
|
||||
void WEAK I2C1_EV_IRQHandler(void);
|
||||
void WEAK I2C1_ER_IRQHandler(void);
|
||||
void WEAK I2C2_EV_IRQHandler(void);
|
||||
void WEAK I2C2_ER_IRQHandler(void);
|
||||
void WEAK SPI1_IRQHandler(void);
|
||||
void WEAK SPI2_IRQHandler(void);
|
||||
void WEAK USART1_IRQHandler(void);
|
||||
void WEAK USART2_IRQHandler(void);
|
||||
void WEAK USART3_IRQHandler(void);
|
||||
void WEAK EXTI15_10_IRQHandler(void);
|
||||
void WEAK RTCAlarm_IRQHandler(void);
|
||||
void WEAK USBWakeUp_IRQHandler(void);
|
||||
void WEAK TIM8_BRK_IRQHandler(void);
|
||||
void WEAK TIM8_UP_IRQHandler(void);
|
||||
void WEAK TIM8_TRG_COM_IRQHandler(void);
|
||||
void WEAK TIM8_CC_IRQHandler(void);
|
||||
void WEAK ADC3_IRQHandler(void);
|
||||
void WEAK FSMC_IRQHandler(void);
|
||||
void WEAK SDIO_IRQHandler(void);
|
||||
void WEAK TIM5_IRQHandler(void);
|
||||
void WEAK SPI3_IRQHandler(void);
|
||||
void WEAK UART4_IRQHandler(void);
|
||||
void WEAK UART5_IRQHandler(void);
|
||||
void WEAK TIM6_IRQHandler(void);
|
||||
void WEAK TIM7_IRQHandler(void);
|
||||
void WEAK DMA2_Channel1_IRQHandler(void);
|
||||
void WEAK DMA2_Channel2_IRQHandler(void);
|
||||
void WEAK DMA2_Channel3_IRQHandler(void);
|
||||
void WEAK DMA2_Channel4_5_IRQHandler(void);
|
||||
|
||||
|
||||
/*----------Symbols defined in linker script----------------------------------*/
|
||||
extern unsigned long _sidata; /*!< Start address for the initialization
|
||||
values of the .data section. */
|
||||
extern unsigned long _sdata; /*!< Start address for the .data section */
|
||||
extern unsigned long _edata; /*!< End address for the .data section */
|
||||
extern unsigned long _sbss; /*!< Start address for the .bss section */
|
||||
extern unsigned long _ebss; /*!< End address for the .bss section */
|
||||
extern unsigned long _eram; /*!< End address for ram */
|
||||
|
||||
|
||||
/*----------Function prototypes-----------------------------------------------*/
|
||||
extern int main(void); /*!< The entry point for the application. */
|
||||
extern void SystemInit(void); /*!< Setup the microcontroller system(CMSIS) */
|
||||
void Default_Reset_Handler(void); /*!< Default reset handler */
|
||||
static void Default_Handler(void); /*!< Default exception handler */
|
||||
|
||||
/**
|
||||
*@brief The minimal vector table for a Cortex M3. Note that the proper constructs
|
||||
* must be placed on this to ensure that it ends up at physical address
|
||||
* 0x00000000.
|
||||
*/
|
||||
__attribute__ ((section(".isr_vector")))
|
||||
void (* const g_pfnVectors[])(void) =
|
||||
{
|
||||
/*----------Core Exceptions-------------------------------------------------*/
|
||||
(void *)&_eram, /*!< The initial stack pointer at end of RAM */
|
||||
Reset_Handler, /*!< Reset Handler */
|
||||
NMI_Handler, /*!< NMI Handler */
|
||||
HardFault_Handler, /*!< Hard Fault Handler */
|
||||
MemManage_Handler, /*!< MPU Fault Handler */
|
||||
BusFault_Handler, /*!< Bus Fault Handler */
|
||||
UsageFault_Handler, /*!< Usage Fault Handler */
|
||||
0,0,0,0, /*!< Reserved */
|
||||
SVC_Handler, /*!< SVCall Handler */
|
||||
DebugMon_Handler, /*!< Debug Monitor Handler */
|
||||
0, /*!< Reserved */
|
||||
PendSV_Handler, /*!< PendSV Handler */
|
||||
SysTick_Handler, /*!< SysTick Handler */
|
||||
|
||||
/*----------External Exceptions---------------------------------------------*/
|
||||
WWDG_IRQHandler, /*!< 0: Window Watchdog */
|
||||
PVD_IRQHandler, /*!< 1: PVD through EXTI Line detect */
|
||||
TAMPER_IRQHandler, /*!< 2: Tamper */
|
||||
RTC_IRQHandler, /*!< 3: RTC */
|
||||
FLASH_IRQHandler, /*!< 4: Flash */
|
||||
RCC_IRQHandler, /*!< 5: RCC */
|
||||
EXTI0_IRQHandler, /*!< 6: EXTI Line 0 */
|
||||
EXTI1_IRQHandler, /*!< 7: EXTI Line 1 */
|
||||
EXTI2_IRQHandler, /*!< 8: EXTI Line 2 */
|
||||
EXTI3_IRQHandler, /*!< 9: EXTI Line 3 */
|
||||
EXTI4_IRQHandler, /*!< 10: EXTI Line 4 */
|
||||
DMA1_Channel1_IRQHandler, /*!< 11: DMA1 Channel 1 */
|
||||
DMA1_Channel2_IRQHandler, /*!< 12: DMA1 Channel 2 */
|
||||
DMA1_Channel3_IRQHandler, /*!< 13: DMA1 Channel 3 */
|
||||
DMA1_Channel4_IRQHandler, /*!< 14: DMA1 Channel 4 */
|
||||
DMA1_Channel5_IRQHandler, /*!< 15: DMA1 Channel 5 */
|
||||
DMA1_Channel6_IRQHandler, /*!< 16: DMA1 Channel 6 */
|
||||
DMA1_Channel7_IRQHandler, /*!< 17: DMA1 Channel 7 */
|
||||
ADC1_2_IRQHandler, /*!< 18: ADC1 & ADC2 */
|
||||
USB_HP_CAN1_TX_IRQHandler, /*!< 19: USB High Priority or CAN1 TX */
|
||||
USB_LP_CAN1_RX0_IRQHandler, /*!< 20: USB Low Priority or CAN1 RX0 */
|
||||
CAN1_RX1_IRQHandler, /*!< 21: CAN1 RX1 */
|
||||
CAN1_SCE_IRQHandler, /*!< 22: CAN1 SCE */
|
||||
EXTI9_5_IRQHandler, /*!< 23: EXTI Line 9..5 */
|
||||
TIM1_BRK_IRQHandler, /*!< 24: TIM1 Break */
|
||||
TIM1_UP_IRQHandler, /*!< 25: TIM1 Update */
|
||||
TIM1_TRG_COM_IRQHandler, /*!< 26: TIM1 Trigger and Commutation */
|
||||
TIM1_CC_IRQHandler, /*!< 27: TIM1 Capture Compare */
|
||||
TIM2_IRQHandler, /*!< 28: TIM2 */
|
||||
TIM3_IRQHandler, /*!< 29: TIM3 */
|
||||
TIM4_IRQHandler, /*!< 30: TIM4 */
|
||||
I2C1_EV_IRQHandler, /*!< 31: I2C1 Event */
|
||||
I2C1_ER_IRQHandler, /*!< 32: I2C1 Error */
|
||||
I2C2_EV_IRQHandler, /*!< 33: I2C2 Event */
|
||||
I2C2_ER_IRQHandler, /*!< 34: I2C2 Error */
|
||||
SPI1_IRQHandler, /*!< 35: SPI1 */
|
||||
SPI2_IRQHandler, /*!< 36: SPI2 */
|
||||
USART1_IRQHandler, /*!< 37: USART1 */
|
||||
USART2_IRQHandler, /*!< 38: USART2 */
|
||||
USART3_IRQHandler, /*!< 39: USART3 */
|
||||
EXTI15_10_IRQHandler, /*!< 40: EXTI Line 15..10 */
|
||||
RTCAlarm_IRQHandler, /*!< 41: RTC Alarm through EXTI Line */
|
||||
USBWakeUp_IRQHandler, /*!< 42: USB Wakeup from suspend */
|
||||
TIM8_BRK_IRQHandler, /*!< 43: TIM8 Break */
|
||||
TIM8_UP_IRQHandler, /*!< 44: TIM8 Update */
|
||||
TIM8_TRG_COM_IRQHandler, /*!< 45: TIM8 Trigger and Commutation */
|
||||
TIM8_CC_IRQHandler, /*!< 46: TIM8 Capture Compare */
|
||||
ADC3_IRQHandler, /*!< 47: ADC3 */
|
||||
FSMC_IRQHandler, /*!< 48: FSMC */
|
||||
SDIO_IRQHandler, /*!< 49: SDIO */
|
||||
TIM5_IRQHandler, /*!< 50: TIM5 */
|
||||
SPI3_IRQHandler, /*!< 51: SPI3 */
|
||||
UART4_IRQHandler, /*!< 52: UART4 */
|
||||
UART5_IRQHandler, /*!< 52: UART5 */
|
||||
TIM6_IRQHandler, /*!< 53: TIM6 */
|
||||
TIM7_IRQHandler, /*!< 54: TIM7 */
|
||||
DMA2_Channel1_IRQHandler, /*!< 55: DMA2 Channel1 */
|
||||
DMA2_Channel2_IRQHandler, /*!< 56: DMA2 Channel2 */
|
||||
DMA2_Channel3_IRQHandler, /*!< 57: DMA2 Channel3 */
|
||||
DMA2_Channel4_5_IRQHandler, /*!< 58: DMA2 Channel4 & Channel5 */
|
||||
(void *)0xF108F85F /*!< Boot in RAM mode */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor first
|
||||
* starts execution following a reset event. Only the absolutely
|
||||
* necessary set is performed, after which the application
|
||||
* supplied main() routine is called.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void Default_Reset_Handler(void)
|
||||
{
|
||||
/* Initialize data and bss */
|
||||
unsigned long *pulSrc, *pulDest;
|
||||
|
||||
/* Copy the data segment initializers from flash to SRAM */
|
||||
pulSrc = &_sidata;
|
||||
|
||||
for(pulDest = &_sdata; pulDest < &_edata; )
|
||||
{
|
||||
*(pulDest++) = *(pulSrc++);
|
||||
}
|
||||
|
||||
/* Zero fill the bss segment. This is done with inline assembly since this
|
||||
will clear the value of pulDest if it is not kept in a register. */
|
||||
__asm(" ldr r0, =_sbss\n"
|
||||
" ldr r1, =_ebss\n"
|
||||
" mov r2, #0\n"
|
||||
" .thumb_func\n"
|
||||
"zero_loop:\n"
|
||||
" cmp r0, r1\n"
|
||||
" it lt\n"
|
||||
" strlt r2, [r0], #4\n"
|
||||
" blt zero_loop");
|
||||
|
||||
/* Setup the microcontroller system. */
|
||||
SystemInit();
|
||||
|
||||
/* Call the application's entry point.*/
|
||||
main();
|
||||
}
|
||||
|
||||
void Default_HardFault_Handler (void)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
void Default_MemManage_Handler(void)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
void Default_BusFault_Handler(void)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
void Default_UsageFault_Handler(void)
|
||||
{
|
||||
while (1);
|
||||
}
|
||||
|
||||
/**
|
||||
*@brief Provide weak aliases for each Exception handler to the Default_Handler.
|
||||
* As they are weak aliases, any function with the same name will override
|
||||
* this definition.
|
||||
*/
|
||||
#pragma weak Reset_Handler = Default_Reset_Handler
|
||||
#pragma weak NMI_Handler = Default_Handler
|
||||
#pragma weak HardFault_Handler = Default_HardFault_Handler
|
||||
#pragma weak MemManage_Handler = Default_MemManage_Handler
|
||||
#pragma weak BusFault_Handler = Default_BusFault_Handler
|
||||
#pragma weak UsageFault_Handler = Default_UsageFault_Handler
|
||||
#pragma weak SVC_Handler = Default_Handler
|
||||
#pragma weak DebugMon_Handler = Default_Handler
|
||||
#pragma weak PendSV_Handler = Default_Handler
|
||||
#pragma weak SysTick_Handler = Default_Handler
|
||||
#pragma weak WWDG_IRQHandler = Default_Handler
|
||||
#pragma weak PVD_IRQHandler = Default_Handler
|
||||
#pragma weak TAMPER_IRQHandler = Default_Handler
|
||||
#pragma weak RTC_IRQHandler = Default_Handler
|
||||
#pragma weak FLASH_IRQHandler = Default_Handler
|
||||
#pragma weak RCC_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI0_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI1_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI2_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI3_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel1_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel2_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel3_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel5_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel6_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel7_IRQHandler = Default_Handler
|
||||
#pragma weak ADC1_2_IRQHandler = Default_Handler
|
||||
#pragma weak USB_HP_CAN1_TX_IRQHandler = Default_Handler
|
||||
#pragma weak USB_LP_CAN1_RX0_IRQHandler = Default_Handler
|
||||
#pragma weak CAN1_RX1_IRQHandler = Default_Handler
|
||||
#pragma weak CAN1_SCE_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI9_5_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_BRK_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_UP_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_TRG_COM_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_CC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM2_IRQHandler = Default_Handler
|
||||
#pragma weak TIM3_IRQHandler = Default_Handler
|
||||
#pragma weak TIM4_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_EV_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_ER_IRQHandler = Default_Handler
|
||||
#pragma weak I2C2_EV_IRQHandler = Default_Handler
|
||||
#pragma weak I2C2_ER_IRQHandler = Default_Handler
|
||||
#pragma weak SPI1_IRQHandler = Default_Handler
|
||||
#pragma weak SPI2_IRQHandler = Default_Handler
|
||||
#pragma weak USART1_IRQHandler = Default_Handler
|
||||
#pragma weak USART2_IRQHandler = Default_Handler
|
||||
#pragma weak USART3_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI15_10_IRQHandler = Default_Handler
|
||||
#pragma weak RTCAlarm_IRQHandler = Default_Handler
|
||||
#pragma weak USBWakeUp_IRQHandler = Default_Handler
|
||||
#pragma weak TIM8_BRK_IRQHandler = Default_Handler
|
||||
#pragma weak TIM8_UP_IRQHandler = Default_Handler
|
||||
#pragma weak TIM8_TRG_COM_IRQHandler = Default_Handler
|
||||
#pragma weak TIM8_CC_IRQHandler = Default_Handler
|
||||
#pragma weak ADC3_IRQHandler = Default_Handler
|
||||
#pragma weak FSMC_IRQHandler = Default_Handler
|
||||
#pragma weak SDIO_IRQHandler = Default_Handler
|
||||
#pragma weak TIM5_IRQHandler = Default_Handler
|
||||
#pragma weak SPI3_IRQHandler = Default_Handler
|
||||
#pragma weak UART4_IRQHandler = Default_Handler
|
||||
#pragma weak UART5_IRQHandler = Default_Handler
|
||||
#pragma weak TIM6_IRQHandler = Default_Handler
|
||||
#pragma weak TIM7_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel1_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel2_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel3_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel4_5_IRQHandler = Default_Handler
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor receives an
|
||||
* unexpected interrupt. This simply enters an infinite loop,
|
||||
* preserving the system state for examination by a debugger.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void Default_Handler(void)
|
||||
{
|
||||
/* Go into an infinite loop. */
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*********************** (C) COPYRIGHT 2011 Coocox ************END OF FILE*****/
|
||||
@@ -0,0 +1,322 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file startup_stm32f10x_hd_vl.c
|
||||
* @author Coocox
|
||||
* @version V1.0
|
||||
* @date 3/7/2011
|
||||
* @brief STM32F10x High Density Value line Devices Startup code.
|
||||
* This module performs:
|
||||
* - Set the initial SP
|
||||
* - Set the vector table entries with the exceptions ISR address
|
||||
* - Initialize data and bss
|
||||
* - Setup the microcontroller system.
|
||||
* - Call the application's entry point.
|
||||
* After Reset the Cortex-M3 processor is in Thread mode,
|
||||
* priority is Privileged, and the Stack is set to Main.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*----------Macro definition--------------------------------------------------*/
|
||||
#define WEAK __attribute__ ((weak))
|
||||
|
||||
|
||||
/*----------Declaration of the default fault handlers-------------------------*/
|
||||
/* System exception vector handler */
|
||||
void WEAK Reset_Handler(void);
|
||||
void WEAK NMI_Handler(void);
|
||||
void WEAK HardFault_Handler(void);
|
||||
void WEAK MemManage_Handler(void);
|
||||
void WEAK BusFault_Handler(void);
|
||||
void WEAK UsageFault_Handler(void);
|
||||
void WEAK SVC_Handler(void);
|
||||
void WEAK DebugMon_Handler(void);
|
||||
void WEAK PendSV_Handler(void);
|
||||
void WEAK SysTick_Handler(void);
|
||||
void WEAK WWDG_IRQHandler(void);
|
||||
void WEAK PVD_IRQHandler(void);
|
||||
void WEAK TAMPER_IRQHandler(void);
|
||||
void WEAK RTC_IRQHandler(void);
|
||||
void WEAK FLASH_IRQHandler(void);
|
||||
void WEAK RCC_IRQHandler(void);
|
||||
void WEAK EXTI0_IRQHandler(void);
|
||||
void WEAK EXTI1_IRQHandler(void);
|
||||
void WEAK EXTI2_IRQHandler(void);
|
||||
void WEAK EXTI3_IRQHandler(void);
|
||||
void WEAK EXTI4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel1_IRQHandler(void);
|
||||
void WEAK DMA1_Channel2_IRQHandler(void);
|
||||
void WEAK DMA1_Channel3_IRQHandler(void);
|
||||
void WEAK DMA1_Channel4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel5_IRQHandler(void);
|
||||
void WEAK DMA1_Channel6_IRQHandler(void);
|
||||
void WEAK DMA1_Channel7_IRQHandler(void);
|
||||
void WEAK ADC1_IRQHandler(void);
|
||||
void WEAK EXTI9_5_IRQHandler(void);
|
||||
void WEAK TIM1_BRK_TIM15_IRQHandler(void);
|
||||
void WEAK TIM1_UP_TIM16_IRQHandler(void);
|
||||
void WEAK TIM1_TRG_COM_TIM17_IRQHandler(void);
|
||||
void WEAK TIM1_CC_IRQHandler(void);
|
||||
void WEAK TIM2_IRQHandler(void);
|
||||
void WEAK TIM3_IRQHandler(void);
|
||||
void WEAK TIM4_IRQHandler(void);
|
||||
void WEAK I2C1_EV_IRQHandler(void);
|
||||
void WEAK I2C1_ER_IRQHandler(void);
|
||||
void WEAK I2C2_EV_IRQHandler(void);
|
||||
void WEAK I2C2_ER_IRQHandler(void);
|
||||
void WEAK SPI1_IRQHandler(void);
|
||||
void WEAK SPI2_IRQHandler(void);
|
||||
void WEAK USART1_IRQHandler(void);
|
||||
void WEAK USART2_IRQHandler(void);
|
||||
void WEAK USART3_IRQHandler(void);
|
||||
void WEAK EXTI15_10_IRQHandler(void);
|
||||
void WEAK RTCAlarm_IRQHandler(void);
|
||||
void WEAK CEC_IRQHandler(void);
|
||||
void WEAK TIM12_IRQHandler(void);
|
||||
void WEAK TIM13_IRQHandler(void);
|
||||
void WEAK TIM14_IRQHandler(void);
|
||||
void WEAK FSMC_IRQHandler(void);
|
||||
void WEAK TIM5_IRQHandler(void);
|
||||
void WEAK SPI3_IRQHandler(void);
|
||||
void WEAK UART4_IRQHandler(void);
|
||||
void WEAK UART5_IRQHandler(void);
|
||||
void WEAK TIM6_DAC_IRQHandler(void);
|
||||
void WEAK TIM7_IRQHandler(void);
|
||||
void WEAK DMA2_Channel1_IRQHandler(void);
|
||||
void WEAK DMA2_Channel2_IRQHandler(void);
|
||||
void WEAK DMA2_Channel3_IRQHandler(void);
|
||||
void WEAK DMA2_Channel4_5_IRQHandler(void);
|
||||
void WEAK DMA2_Channel5_IRQHandler(void);
|
||||
|
||||
/*----------Symbols defined in linker script----------------------------------*/
|
||||
extern unsigned long _sidata; /*!< Start address for the initialization
|
||||
values of the .data section. */
|
||||
extern unsigned long _sdata; /*!< Start address for the .data section */
|
||||
extern unsigned long _edata; /*!< End address for the .data section */
|
||||
extern unsigned long _sbss; /*!< Start address for the .bss section */
|
||||
extern unsigned long _ebss; /*!< End address for the .bss section */
|
||||
extern unsigned long _eram; /*!< End address for ram */
|
||||
|
||||
|
||||
/*----------Function prototypes-----------------------------------------------*/
|
||||
extern int main(void); /*!< The entry point for the application. */
|
||||
extern void SystemInit(void); /*!< Setup the microcontroller system(CMSIS) */
|
||||
void Default_Reset_Handler(void); /*!< Default reset handler */
|
||||
static void Default_Handler(void); /*!< Default exception handler */
|
||||
|
||||
|
||||
/**
|
||||
*@brief The minimal vector table for a Cortex M3. Note that the proper constructs
|
||||
* must be placed on this to ensure that it ends up at physical address
|
||||
* 0x00000000.
|
||||
*/
|
||||
__attribute__ ((section(".isr_vector")))
|
||||
void (* const g_pfnVectors[])(void) =
|
||||
{
|
||||
/*----------Core Exceptions------------------------------------------------ */
|
||||
(void *)&_eram, /*!< The initial stack pointer at end of RAM */
|
||||
Reset_Handler, /*!< Reset Handler */
|
||||
NMI_Handler, /*!< NMI Handler */
|
||||
HardFault_Handler, /*!< Hard Fault Handler */
|
||||
MemManage_Handler, /*!< MPU Fault Handler */
|
||||
BusFault_Handler, /*!< Bus Fault Handler */
|
||||
UsageFault_Handler, /*!< Usage Fault Handler */
|
||||
0,0,0,0, /*!< Reserved */
|
||||
SVC_Handler, /*!< SVCall Handler */
|
||||
DebugMon_Handler, /*!< Debug Monitor Handler */
|
||||
0, /*!< Reserved */
|
||||
PendSV_Handler, /*!< PendSV Handler */
|
||||
SysTick_Handler, /*!< SysTick Handler */
|
||||
|
||||
/*----------External Exceptions---------------------------------------------*/
|
||||
WWDG_IRQHandler, /*!< 0: Window Watchdog */
|
||||
PVD_IRQHandler, /*!< 1: PVD through EXTI Line detect */
|
||||
TAMPER_IRQHandler, /*!< 2: Tamper */
|
||||
RTC_IRQHandler, /*!< 3: RTC */
|
||||
FLASH_IRQHandler, /*!< 4: Flash */
|
||||
RCC_IRQHandler, /*!< 5: RCC */
|
||||
EXTI0_IRQHandler, /*!< 6: EXTI Line 0 */
|
||||
EXTI1_IRQHandler, /*!< 7: EXTI Line 1 */
|
||||
EXTI2_IRQHandler, /*!< 8: EXTI Line 2 */
|
||||
EXTI3_IRQHandler, /*!< 9: EXTI Line 3 */
|
||||
EXTI4_IRQHandler, /*!< 10: EXTI Line 4 */
|
||||
DMA1_Channel1_IRQHandler, /*!< 11: DMA1 Channel 1 */
|
||||
DMA1_Channel2_IRQHandler, /*!< 12: DMA1 Channel 2 */
|
||||
DMA1_Channel3_IRQHandler, /*!< 13: DMA1 Channel 3 */
|
||||
DMA1_Channel4_IRQHandler, /*!< 14: DMA1 Channel 4 */
|
||||
DMA1_Channel5_IRQHandler, /*!< 15: DMA1 Channel 5 */
|
||||
DMA1_Channel6_IRQHandler, /*!< 16: DMA1 Channel 6 */
|
||||
DMA1_Channel7_IRQHandler, /*!< 17: DMA1 Channel 7 */
|
||||
ADC1_IRQHandler, /*!< 18: ADC1 */
|
||||
0, /*!< 19: USB High Priority or CAN1 TX */
|
||||
0, /*!< 20: USB Low Priority or CAN1 RX0 */
|
||||
0, /*!< 21: CAN1 RX1 */
|
||||
0, /*!< 22: CAN1 SCE */
|
||||
EXTI9_5_IRQHandler, /*!< 23: EXTI Line 9..5 */
|
||||
TIM1_BRK_TIM15_IRQHandler, /*!< 24: TIM1 Break and TIM15 */
|
||||
TIM1_UP_TIM16_IRQHandler, /*!< 25: TIM1 Update and TIM16 */
|
||||
TIM1_TRG_COM_TIM17_IRQHandler,/*!< 26: TIM1 Trigger and Commutation and TIM17 */
|
||||
TIM1_CC_IRQHandler, /*!< 27: TIM1 Capture Compare */
|
||||
TIM2_IRQHandler, /*!< 28: TIM2 */
|
||||
TIM3_IRQHandler, /*!< 29: TIM3 */
|
||||
TIM4_IRQHandler, /*!< 30: TIM4 */
|
||||
I2C1_EV_IRQHandler, /*!< 31: I2C1 Event */
|
||||
I2C1_ER_IRQHandler, /*!< 32: I2C1 Error */
|
||||
I2C2_EV_IRQHandler, /*!< 33: I2C2 Event */
|
||||
I2C2_ER_IRQHandler, /*!< 34: I2C2 Error */
|
||||
SPI1_IRQHandler, /*!< 35: SPI1 */
|
||||
SPI2_IRQHandler, /*!< 36: SPI2 */
|
||||
USART1_IRQHandler, /*!< 37: USART1 */
|
||||
USART2_IRQHandler, /*!< 38: USART2 */
|
||||
USART3_IRQHandler, /*!< 39: USART3 */
|
||||
EXTI15_10_IRQHandler, /*!< 40: EXTI Line 15..10 */
|
||||
RTCAlarm_IRQHandler, /*!< 41: RTC Alarm through EXTI Line */
|
||||
CEC_IRQHandler, /*!< 42: HDMI-CEC */
|
||||
TIM12_IRQHandler, /*!< 43: TIM12 */
|
||||
TIM13_IRQHandler, /*!< 44: TIM13 */
|
||||
TIM14_IRQHandler, /*!< 45: TIM14 */
|
||||
0, /*!< 46: Reserved */
|
||||
0, /*!< 47: Reserved */
|
||||
FSMC_IRQHandler, /*!< 48: FSMC */
|
||||
0, /*!< 49: Reserved */
|
||||
TIM5_IRQHandler, /*!< 50: TIM5 */
|
||||
SPI3_IRQHandler, /*!< 51: SPI3 */
|
||||
UART4_IRQHandler, /*!< 52: UART4 */
|
||||
UART5_IRQHandler, /*!< 53: UART5 */
|
||||
TIM6_DAC_IRQHandler, /*!< 54: TIM6 and DAC underrun */
|
||||
TIM7_IRQHandler, /*!< 55: TIM7 */
|
||||
DMA2_Channel1_IRQHandler, /*!< 56: DMA2 Channel1 */
|
||||
DMA2_Channel2_IRQHandler, /*!< 57: DMA2 Channel2 */
|
||||
DMA2_Channel3_IRQHandler, /*!< 58: DMA2 Channel3 */
|
||||
DMA2_Channel4_5_IRQHandler, /*!< 59: DMA2 Channel4 & Channel5 */
|
||||
DMA2_Channel5_IRQHandler, /*!< 60: DMA2 Channel5 */
|
||||
(void *)0xF108F85F /*!< Boot in RAM mode */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor first
|
||||
* starts execution following a reset event. Only the absolutely
|
||||
* necessary set is performed, after which the application
|
||||
* supplied main() routine is called.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void Default_Reset_Handler(void)
|
||||
{
|
||||
/* Initialize data and bss */
|
||||
unsigned long *pulSrc, *pulDest;
|
||||
|
||||
/* Copy the data segment initializers from flash to SRAM */
|
||||
pulSrc = &_sidata;
|
||||
|
||||
for(pulDest = &_sdata; pulDest < &_edata; )
|
||||
{
|
||||
*(pulDest++) = *(pulSrc++);
|
||||
}
|
||||
|
||||
/* Zero fill the bss segment. This is done with inline assembly since this
|
||||
will clear the value of pulDest if it is not kept in a register. */
|
||||
__asm(" ldr r0, =_sbss\n"
|
||||
" ldr r1, =_ebss\n"
|
||||
" mov r2, #0\n"
|
||||
" .thumb_func\n"
|
||||
" zero_loop:\n"
|
||||
" cmp r0, r1\n"
|
||||
" it lt\n"
|
||||
" strlt r2, [r0], #4\n"
|
||||
" blt zero_loop");
|
||||
|
||||
/* Setup the microcontroller system. */
|
||||
SystemInit();
|
||||
|
||||
/* Call the application's entry point.*/
|
||||
main();
|
||||
}
|
||||
|
||||
/**
|
||||
*@brief Provide weak aliases for each Exception handler to the Default_Handler.
|
||||
* As they are weak aliases, any function with the same name will override
|
||||
* this definition.
|
||||
*/
|
||||
#pragma weak Reset_Handler = Default_Reset_Handler
|
||||
#pragma weak NMI_Handler = Default_Handler
|
||||
#pragma weak HardFault_Handler = Default_Handler
|
||||
#pragma weak MemManage_Handler = Default_Handler
|
||||
#pragma weak BusFault_Handler = Default_Handler
|
||||
#pragma weak UsageFault_Handler = Default_Handler
|
||||
#pragma weak SVC_Handler = Default_Handler
|
||||
#pragma weak DebugMon_Handler = Default_Handler
|
||||
#pragma weak PendSV_Handler = Default_Handler
|
||||
#pragma weak SysTick_Handler = Default_Handler
|
||||
#pragma weak WWDG_IRQHandler = Default_Handler
|
||||
#pragma weak PVD_IRQHandler = Default_Handler
|
||||
#pragma weak TAMPER_IRQHandler = Default_Handler
|
||||
#pragma weak RTC_IRQHandler = Default_Handler
|
||||
#pragma weak FLASH_IRQHandler = Default_Handler
|
||||
#pragma weak RCC_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI0_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI1_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI2_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI3_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel1_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel2_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel3_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel5_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel6_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel7_IRQHandler = Default_Handler
|
||||
#pragma weak ADC1_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI9_5_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_BRK_TIM15_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_UP_TIM16_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_TRG_COM_TIM17_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_CC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM2_IRQHandler = Default_Handler
|
||||
#pragma weak TIM3_IRQHandler = Default_Handler
|
||||
#pragma weak TIM4_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_EV_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_ER_IRQHandler = Default_Handler
|
||||
#pragma weak I2C2_EV_IRQHandler = Default_Handler
|
||||
#pragma weak I2C2_ER_IRQHandler = Default_Handler
|
||||
#pragma weak SPI1_IRQHandler = Default_Handler
|
||||
#pragma weak SPI2_IRQHandler = Default_Handler
|
||||
#pragma weak USART1_IRQHandler = Default_Handler
|
||||
#pragma weak USART2_IRQHandler = Default_Handler
|
||||
#pragma weak USART3_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI15_10_IRQHandler = Default_Handler
|
||||
#pragma weak RTCAlarm_IRQHandler = Default_Handler
|
||||
#pragma weak CEC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM12_IRQHandler = Default_Handler
|
||||
#pragma weak TIM13_IRQHandler = Default_Handler
|
||||
#pragma weak TIM14_IRQHandler = Default_Handler
|
||||
#pragma weak FSMC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM5_IRQHandler = Default_Handler
|
||||
#pragma weak SPI3_IRQHandler = Default_Handler
|
||||
#pragma weak UART4_IRQHandler = Default_Handler
|
||||
#pragma weak UART5_IRQHandler = Default_Handler
|
||||
#pragma weak TIM6_DAC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM7_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel1_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel2_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel3_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel4_5_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel5_IRQHandler = Default_Handler
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor receives an
|
||||
* unexpected interrupt. This simply enters an infinite loop,
|
||||
* preserving the system state for examination by a debugger.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void Default_Handler(void)
|
||||
{
|
||||
/* Go into an infinite loop. */
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/*********************** (C) COPYRIGHT 2011 Coocox ************END OF FILE*****/
|
||||
@@ -0,0 +1,275 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file startup_stm32f10x_ld.c
|
||||
* @author Coocox
|
||||
* @version V1.0
|
||||
* @date 3/7/2011
|
||||
* @brief STM32F10x Low Density Devices Startup code.
|
||||
* This module performs:
|
||||
* - Set the initial SP
|
||||
* - Set the vector table entries with the exceptions ISR address
|
||||
* - Initialize data and bss
|
||||
* - Setup the microcontroller system.
|
||||
* - Call the application's entry point.
|
||||
* After Reset the Cortex-M3 processor is in Thread mode,
|
||||
* priority is Privileged, and the Stack is set to Main.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*----------Macro definition--------------------------------------------------*/
|
||||
#define WEAK __attribute__ ((weak))
|
||||
|
||||
|
||||
/*----------Declaration of the default fault handlers-------------------------*/
|
||||
/* System exception vector handler */
|
||||
void WEAK Reset_Handler(void);
|
||||
void WEAK NMI_Handler(void);
|
||||
void WEAK HardFault_Handler(void);
|
||||
void WEAK MemManage_Handler(void);
|
||||
void WEAK BusFault_Handler(void);
|
||||
void WEAK UsageFault_Handler(void);
|
||||
void WEAK SVC_Handler(void);
|
||||
void WEAK DebugMon_Handler(void);
|
||||
void WEAK PendSV_Handler(void);
|
||||
void WEAK SysTick_Handler(void);
|
||||
void WEAK WWDG_IRQHandler(void);
|
||||
void WEAK PVD_IRQHandler(void);
|
||||
void WEAK TAMPER_IRQHandler(void);
|
||||
void WEAK RTC_IRQHandler(void);
|
||||
void WEAK FLASH_IRQHandler(void);
|
||||
void WEAK RCC_IRQHandler(void);
|
||||
void WEAK EXTI0_IRQHandler(void);
|
||||
void WEAK EXTI1_IRQHandler(void);
|
||||
void WEAK EXTI2_IRQHandler(void);
|
||||
void WEAK EXTI3_IRQHandler(void);
|
||||
void WEAK EXTI4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel1_IRQHandler(void);
|
||||
void WEAK DMA1_Channel2_IRQHandler(void);
|
||||
void WEAK DMA1_Channel3_IRQHandler(void);
|
||||
void WEAK DMA1_Channel4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel5_IRQHandler(void);
|
||||
void WEAK DMA1_Channel6_IRQHandler(void);
|
||||
void WEAK DMA1_Channel7_IRQHandler(void);
|
||||
void WEAK ADC1_2_IRQHandler(void);
|
||||
void WEAK USB_HP_CAN1_TX_IRQHandler(void);
|
||||
void WEAK USB_LP_CAN1_RX0_IRQHandler(void);
|
||||
void WEAK CAN1_RX1_IRQHandler(void);
|
||||
void WEAK CAN1_SCE_IRQHandler(void);
|
||||
void WEAK EXTI9_5_IRQHandler(void);
|
||||
void WEAK TIM1_BRK_IRQHandler(void);
|
||||
void WEAK TIM1_UP_IRQHandler(void);
|
||||
void WEAK TIM1_TRG_COM_IRQHandler(void);
|
||||
void WEAK TIM1_CC_IRQHandler(void);
|
||||
void WEAK TIM2_IRQHandler(void);
|
||||
void WEAK TIM3_IRQHandler(void);
|
||||
void WEAK I2C1_EV_IRQHandler(void);
|
||||
void WEAK I2C1_ER_IRQHandler(void);
|
||||
void WEAK SPI1_IRQHandler(void);
|
||||
void WEAK USART1_IRQHandler(void);
|
||||
void WEAK USART2_IRQHandler(void);
|
||||
void WEAK EXTI15_10_IRQHandler(void);
|
||||
void WEAK RTCAlarm_IRQHandler(void);
|
||||
void WEAK USBWakeUp_IRQHandler(void);
|
||||
|
||||
|
||||
/*----------Symbols defined in linker script----------------------------------*/
|
||||
extern unsigned long _sidata; /*!< Start address for the initialization
|
||||
values of the .data section. */
|
||||
extern unsigned long _sdata; /*!< Start address for the .data section */
|
||||
extern unsigned long _edata; /*!< End address for the .data section */
|
||||
extern unsigned long _sbss; /*!< Start address for the .bss section */
|
||||
extern unsigned long _ebss; /*!< End address for the .bss section */
|
||||
extern unsigned long _eram; /*!< End address for ram */
|
||||
|
||||
|
||||
/*----------Function prototypes-----------------------------------------------*/
|
||||
extern int main(void); /*!< The entry point for the application. */
|
||||
extern void SystemInit(void); /*!< Setup the microcontroller system(CMSIS) */
|
||||
void Default_Reset_Handler(void); /*!< Default reset handler */
|
||||
static void Default_Handler(void); /*!< Default exception handler */
|
||||
|
||||
|
||||
/**
|
||||
*@brief The minimal vector table for a Cortex M3. Note that the proper constructs
|
||||
* must be placed on this to ensure that it ends up at physical address
|
||||
* 0x00000000.
|
||||
*/
|
||||
__attribute__ ((section(".isr_vector")))
|
||||
void (* const g_pfnVectors[])(void) =
|
||||
{
|
||||
/*----------Core Exceptions-------------------------------------------------*/
|
||||
(void *)&_eram, /*!< The initial stack pointer at end of RAM */
|
||||
Reset_Handler, /*!< Reset Handler */
|
||||
NMI_Handler, /*!< NMI Handler */
|
||||
HardFault_Handler, /*!< Hard Fault Handler */
|
||||
MemManage_Handler, /*!< MPU Fault Handler */
|
||||
BusFault_Handler, /*!< Bus Fault Handler */
|
||||
UsageFault_Handler, /*!< Usage Fault Handler */
|
||||
0,0,0,0, /*!< Reserved */
|
||||
SVC_Handler, /*!< SVCall Handler */
|
||||
DebugMon_Handler, /*!< Debug Monitor Handler */
|
||||
0, /*!< Reserved */
|
||||
PendSV_Handler, /*!< PendSV Handler */
|
||||
SysTick_Handler, /*!< SysTick Handler */
|
||||
|
||||
/*----------External Exceptions---------------------------------------------*/
|
||||
WWDG_IRQHandler, /*!< 0: Window Watchdog */
|
||||
PVD_IRQHandler, /*!< 1: PVD through EXTI Line detect */
|
||||
TAMPER_IRQHandler, /*!< 2: Tamper */
|
||||
RTC_IRQHandler, /*!< 3: RTC */
|
||||
FLASH_IRQHandler, /*!< 4: Flash */
|
||||
RCC_IRQHandler, /*!< 5: RCC */
|
||||
EXTI0_IRQHandler, /*!< 6: EXTI Line 0 */
|
||||
EXTI1_IRQHandler, /*!< 7: EXTI Line 1 */
|
||||
EXTI2_IRQHandler, /*!< 8: EXTI Line 2 */
|
||||
EXTI3_IRQHandler, /*!< 9: EXTI Line 3 */
|
||||
EXTI4_IRQHandler, /*!< 10: EXTI Line 4 */
|
||||
DMA1_Channel1_IRQHandler, /*!< 11: DMA1 Channel 1 */
|
||||
DMA1_Channel2_IRQHandler, /*!< 12: DMA1 Channel 2 */
|
||||
DMA1_Channel3_IRQHandler, /*!< 13: DMA1 Channel 3 */
|
||||
DMA1_Channel4_IRQHandler, /*!< 14: DMA1 Channel 4 */
|
||||
DMA1_Channel5_IRQHandler, /*!< 15: DMA1 Channel 5 */
|
||||
DMA1_Channel6_IRQHandler, /*!< 16: DMA1 Channel 6 */
|
||||
DMA1_Channel7_IRQHandler, /*!< 17: DMA1 Channel 7 */
|
||||
ADC1_2_IRQHandler, /*!< 18: ADC1 & ADC2 */
|
||||
USB_HP_CAN1_TX_IRQHandler, /*!< 19: USB High Priority or CAN1 TX */
|
||||
USB_LP_CAN1_RX0_IRQHandler, /*!< 20: USB Low Priority or CAN1 RX0 */
|
||||
CAN1_RX1_IRQHandler, /*!< 21: CAN1 RX1 */
|
||||
CAN1_SCE_IRQHandler, /*!< 22: CAN1 SCE */
|
||||
EXTI9_5_IRQHandler, /*!< 23: EXTI Line 9..5 */
|
||||
TIM1_BRK_IRQHandler, /*!< 24: TIM1 Break */
|
||||
TIM1_UP_IRQHandler, /*!< 25: TIM1 Update */
|
||||
TIM1_TRG_COM_IRQHandler, /*!< 26: TIM1 Trigger and Commutation */
|
||||
TIM1_CC_IRQHandler, /*!< 27: TIM1 Capture Compare */
|
||||
TIM2_IRQHandler, /*!< 28: TIM2 */
|
||||
TIM3_IRQHandler, /*!< 29: TIM3 */
|
||||
0, /*!< 30: Reserved */
|
||||
I2C1_EV_IRQHandler, /*!< 31: I2C1 Event */
|
||||
I2C1_ER_IRQHandler, /*!< 32: I2C1 Error */
|
||||
0, /*!< 33: Reserved */
|
||||
0, /*!< 34: Reserved */
|
||||
SPI1_IRQHandler, /*!< 35: SPI1 */
|
||||
0, /*!< 36: Reserved */
|
||||
USART1_IRQHandler, /*!< 37: USART1 */
|
||||
USART2_IRQHandler, /*!< 38: USART2 */
|
||||
0, /*!< 39: Reserved */
|
||||
EXTI15_10_IRQHandler, /*!< 40: EXTI Line 15..10 */
|
||||
RTCAlarm_IRQHandler, /*!< 41: RTC Alarm through EXTI Line */
|
||||
USBWakeUp_IRQHandler, /*!< 42: USB Wakeup from suspend */
|
||||
0,0,0,0,0,0,0, /*!< Reserved */
|
||||
(void *)0xF108F85F /*!< Boot in RAM mode */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor first
|
||||
* starts execution following a reset event. Only the absolutely
|
||||
* necessary set is performed, after which the application
|
||||
* supplied main() routine is called.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void Default_Reset_Handler(void)
|
||||
{
|
||||
/* Initialize data and bss */
|
||||
unsigned long *pulSrc, *pulDest;
|
||||
|
||||
/* Copy the data segment initializers from flash to SRAM */
|
||||
pulSrc = &_sidata;
|
||||
|
||||
for(pulDest = &_sdata; pulDest < &_edata; )
|
||||
{
|
||||
*(pulDest++) = *(pulSrc++);
|
||||
}
|
||||
|
||||
/* Zero fill the bss segment. This is done with inline assembly since this
|
||||
will clear the value of pulDest if it is not kept in a register. */
|
||||
__asm(" ldr r0, =_sbss\n"
|
||||
" ldr r1, =_ebss\n"
|
||||
" mov r2, #0\n"
|
||||
" .thumb_func\n"
|
||||
"zero_loop:\n"
|
||||
" cmp r0, r1\n"
|
||||
" it lt\n"
|
||||
" strlt r2, [r0], #4\n"
|
||||
" blt zero_loop");
|
||||
|
||||
/* Setup the microcontroller system. */
|
||||
SystemInit();
|
||||
|
||||
/* Call the application's entry point.*/
|
||||
main();
|
||||
}
|
||||
|
||||
/**
|
||||
*@brief Provide weak aliases for each Exception handler to the Default_Handler.
|
||||
* As they are weak aliases, any function with the same name will override
|
||||
* this definition.
|
||||
*/
|
||||
#pragma weak Reset_Handler = Default_Reset_Handler
|
||||
#pragma weak NMI_Handler = Default_Handler
|
||||
#pragma weak HardFault_Handler = Default_Handler
|
||||
#pragma weak MemManage_Handler = Default_Handler
|
||||
#pragma weak BusFault_Handler = Default_Handler
|
||||
#pragma weak UsageFault_Handler = Default_Handler
|
||||
#pragma weak SVC_Handler = Default_Handler
|
||||
#pragma weak DebugMon_Handler = Default_Handler
|
||||
#pragma weak PendSV_Handler = Default_Handler
|
||||
#pragma weak SysTick_Handler = Default_Handler
|
||||
#pragma weak WWDG_IRQHandler = Default_Handler
|
||||
#pragma weak PVD_IRQHandler = Default_Handler
|
||||
#pragma weak TAMPER_IRQHandler = Default_Handler
|
||||
#pragma weak RTC_IRQHandler = Default_Handler
|
||||
#pragma weak FLASH_IRQHandler = Default_Handler
|
||||
#pragma weak RCC_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI0_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI1_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI2_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI3_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel1_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel2_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel3_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel5_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel6_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel7_IRQHandler = Default_Handler
|
||||
#pragma weak ADC1_2_IRQHandler = Default_Handler
|
||||
#pragma weak USB_HP_CAN1_TX_IRQHandler = Default_Handler
|
||||
#pragma weak USB_LP_CAN1_RX0_IRQHandler = Default_Handler
|
||||
#pragma weak CAN1_RX1_IRQHandler = Default_Handler
|
||||
#pragma weak CAN1_SCE_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI9_5_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_BRK_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_UP_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_TRG_COM_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_CC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM2_IRQHandler = Default_Handler
|
||||
#pragma weak TIM3_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_EV_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_ER_IRQHandler = Default_Handler
|
||||
#pragma weak SPI1_IRQHandler = Default_Handler
|
||||
#pragma weak USART1_IRQHandler = Default_Handler
|
||||
#pragma weak USART2_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI15_10_IRQHandler = Default_Handler
|
||||
#pragma weak RTCAlarm_IRQHandler = Default_Handler
|
||||
#pragma weak USBWakeUp_IRQHandler = Default_Handler
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor receives an
|
||||
* unexpected interrupt. This simply enters an infinite loop,
|
||||
* preserving the system state for examination by a debugger.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void Default_Handler(void)
|
||||
{
|
||||
/* Go into an infinite loop. */
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/*********************** (C) COPYRIGHT 2011 Coocox ************END OF FILE*****/
|
||||
@@ -0,0 +1,272 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file startup_stm32f10x_ld_vl.c
|
||||
* @author Coocox
|
||||
* @version V1.0
|
||||
* @date 3/4/2011
|
||||
* @brief STM32F10x Low Density Value Line Devices Startup code.
|
||||
* This module performs:
|
||||
* - Set the initial SP
|
||||
* - Set the vector table entries with the exceptions ISR address
|
||||
* - Initialize data and bss
|
||||
* - Setup the microcontroller system.
|
||||
* - Call the application's entry point.
|
||||
* After Reset the Cortex-M3 processor is in Thread mode,
|
||||
* priority is Privileged, and the Stack is set to Main.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*----------Macro definition--------------------------------------------------*/
|
||||
#define WEAK __attribute__ ((weak))
|
||||
|
||||
|
||||
/*----------Declaration of the default fault handlers-------------------------*/
|
||||
/* System exception vector handler */
|
||||
void WEAK Reset_Handler(void);
|
||||
void WEAK NMI_Handler(void);
|
||||
void WEAK HardFault_Handler(void);
|
||||
void WEAK MemManage_Handler(void);
|
||||
void WEAK BusFault_Handler(void);
|
||||
void WEAK UsageFault_Handler(void);
|
||||
void WEAK SVC_Handler(void);
|
||||
void WEAK DebugMon_Handler(void);
|
||||
void WEAK PendSV_Handler(void);
|
||||
void WEAK SysTick_Handler(void);
|
||||
void WEAK WWDG_IRQHandler(void);
|
||||
void WEAK PVD_IRQHandler(void);
|
||||
void WEAK TAMPER_IRQHandler(void);
|
||||
void WEAK RTC_IRQHandler(void);
|
||||
void WEAK FLASH_IRQHandler(void);
|
||||
void WEAK RCC_IRQHandler(void);
|
||||
void WEAK EXTI0_IRQHandler(void);
|
||||
void WEAK EXTI1_IRQHandler(void);
|
||||
void WEAK EXTI2_IRQHandler(void);
|
||||
void WEAK EXTI3_IRQHandler(void);
|
||||
void WEAK EXTI4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel1_IRQHandler(void);
|
||||
void WEAK DMA1_Channel2_IRQHandler(void);
|
||||
void WEAK DMA1_Channel3_IRQHandler(void);
|
||||
void WEAK DMA1_Channel4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel5_IRQHandler(void);
|
||||
void WEAK DMA1_Channel6_IRQHandler(void);
|
||||
void WEAK DMA1_Channel7_IRQHandler(void);
|
||||
void WEAK ADC1_IRQHandler(void);
|
||||
void WEAK EXTI9_5_IRQHandler(void);
|
||||
void WEAK TIM1_BRK_TIM15_IRQHandler(void);
|
||||
void WEAK TIM1_UP_TIM16_IRQHandler(void);
|
||||
void WEAK TIM1_TRG_COM_TIM17_IRQHandler(void);
|
||||
void WEAK TIM1_CC_IRQHandler(void);
|
||||
void WEAK TIM2_IRQHandler(void);
|
||||
void WEAK TIM3_IRQHandler(void);
|
||||
void WEAK I2C1_EV_IRQHandler(void);
|
||||
void WEAK I2C1_ER_IRQHandler(void);
|
||||
void WEAK SPI1_IRQHandler(void);
|
||||
void WEAK USART1_IRQHandler(void);
|
||||
void WEAK USART2_IRQHandler(void);
|
||||
void WEAK EXTI15_10_IRQHandler(void);
|
||||
void WEAK RTCAlarm_IRQHandler(void);
|
||||
void WEAK CEC_IRQHandler(void);
|
||||
void WEAK TIM6_DAC_IRQHandler(void);
|
||||
void WEAK TIM7_IRQHandler(void);
|
||||
|
||||
/*----------Symbols defined in linker script----------------------------------*/
|
||||
extern unsigned long _sidata; /*!< Start address for the initialization
|
||||
values of the .data section. */
|
||||
extern unsigned long _sdata; /*!< Start address for the .data section */
|
||||
extern unsigned long _edata; /*!< End address for the .data section */
|
||||
extern unsigned long _sbss; /*!< Start address for the .bss section */
|
||||
extern unsigned long _ebss; /*!< End address for the .bss section */
|
||||
extern unsigned long _eram; /*!< End address for ram */
|
||||
|
||||
|
||||
/*----------Function prototypes-----------------------------------------------*/
|
||||
extern int main(void); /*!< The entry point for the application. */
|
||||
extern void SystemInit(void); /*!< Setup the microcontroller system(CMSIS) */
|
||||
void Default_Reset_Handler(void); /*!< Default reset handler */
|
||||
static void Default_Handler(void); /*!< Default exception handler */
|
||||
|
||||
|
||||
/**
|
||||
*@brief The minimal vector table for a Cortex M3. Note that the proper constructs
|
||||
* must be placed on this to ensure that it ends up at physical address
|
||||
* 0x00000000.
|
||||
*/
|
||||
__attribute__ ((section(".isr_vector")))
|
||||
void (* const g_pfnVectors[])(void) =
|
||||
{
|
||||
/*----------Core Exceptions-------------------------------------------------*/
|
||||
(void *)&_eram, /*!< The initial stack pointer at end of RAM */
|
||||
Reset_Handler, /*!< Reset Handler */
|
||||
NMI_Handler, /*!< NMI Handler */
|
||||
HardFault_Handler, /*!< Hard Fault Handler */
|
||||
MemManage_Handler, /*!< MPU Fault Handler */
|
||||
BusFault_Handler, /*!< Bus Fault Handler */
|
||||
UsageFault_Handler, /*!< Usage Fault Handler */
|
||||
0,0,0,0, /*!< Reserved */
|
||||
SVC_Handler, /*!< SVCall Handler */
|
||||
DebugMon_Handler, /*!< Debug Monitor Handler */
|
||||
0, /*!< Reserved */
|
||||
PendSV_Handler, /*!< PendSV Handler */
|
||||
SysTick_Handler, /*!< SysTick Handler */
|
||||
|
||||
/*----------External Exceptions---------------------------------------------*/
|
||||
WWDG_IRQHandler, /*!< 0: Window Watchdog */
|
||||
PVD_IRQHandler, /*!< 1: PVD through EXTI Line detect */
|
||||
TAMPER_IRQHandler, /*!< 2: Tamper */
|
||||
RTC_IRQHandler, /*!< 3: RTC */
|
||||
FLASH_IRQHandler, /*!< 4: Flash */
|
||||
RCC_IRQHandler, /*!< 5: RCC */
|
||||
EXTI0_IRQHandler, /*!< 6: EXTI Line 0 */
|
||||
EXTI1_IRQHandler, /*!< 7: EXTI Line 1 */
|
||||
EXTI2_IRQHandler, /*!< 8: EXTI Line 2 */
|
||||
EXTI3_IRQHandler, /*!< 9: EXTI Line 3 */
|
||||
EXTI4_IRQHandler, /*!< 10: EXTI Line 4 */
|
||||
DMA1_Channel1_IRQHandler, /*!< 11: DMA1 Channel 1 */
|
||||
DMA1_Channel2_IRQHandler, /*!< 12: DMA1 Channel 2 */
|
||||
DMA1_Channel3_IRQHandler, /*!< 13: DMA1 Channel 3 */
|
||||
DMA1_Channel4_IRQHandler, /*!< 14: DMA1 Channel 4 */
|
||||
DMA1_Channel5_IRQHandler, /*!< 15: DMA1 Channel 5 */
|
||||
DMA1_Channel6_IRQHandler, /*!< 16: DMA1 Channel 6 */
|
||||
DMA1_Channel7_IRQHandler, /*!< 17: DMA1 Channel 7 */
|
||||
ADC1_IRQHandler, /*!< 18: ADC1 */
|
||||
0, /*!< 19: USB High Priority or CAN1 TX */
|
||||
0, /*!< 20: USB Low Priority or CAN1 RX0 */
|
||||
0, /*!< 21: CAN1 RX1 */
|
||||
0, /*!< 22: CAN1 SCE */
|
||||
EXTI9_5_IRQHandler, /*!< 23: EXTI Line 9..5 */
|
||||
TIM1_BRK_TIM15_IRQHandler, /*!< 24: TIM1 Break and TIM15 */
|
||||
TIM1_UP_TIM16_IRQHandler, /*!< 25: TIM1 Update and TIM16 */
|
||||
TIM1_TRG_COM_TIM17_IRQHandler,/*!< 26: TIM1 Trigger and Commutation and TIM17 */
|
||||
TIM1_CC_IRQHandler, /*!< 27: TIM1 Capture Compare */
|
||||
TIM2_IRQHandler, /*!< 28: TIM2 */
|
||||
TIM3_IRQHandler, /*!< 29: TIM3 */
|
||||
0, /*!< 30: Reserved */
|
||||
I2C1_EV_IRQHandler, /*!< 31: I2C1 Event */
|
||||
I2C1_ER_IRQHandler, /*!< 32: I2C1 Error */
|
||||
0, /*!< 33: Reserved */
|
||||
0, /*!< 34: Reserved */
|
||||
SPI1_IRQHandler, /*!< 35: SPI1 */
|
||||
0, /*!< 36: Reserved */
|
||||
USART1_IRQHandler, /*!< 37: USART1 */
|
||||
USART2_IRQHandler, /*!< 38: USART2 */
|
||||
0, /*!< 39: Reserved */
|
||||
EXTI15_10_IRQHandler, /*!< 40: EXTI Line 15..10 */
|
||||
RTCAlarm_IRQHandler, /*!< 41: RTC Alarm through EXTI Line */
|
||||
CEC_IRQHandler, /*!< 42: HDMI-CEC */
|
||||
0,0,0,0,0,0, /*!< Reserved */
|
||||
0,0,0,0,0, /*!< Reserved */
|
||||
TIM6_DAC_IRQHandler, /*!< 54: TIM6 and DAC underrun */
|
||||
TIM7_IRQHandler, /*!< 55: TIM7 */
|
||||
(void *)0xF108F85F /*!< Boot in RAM mode */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor first
|
||||
* starts execution following a reset event. Only the absolutely
|
||||
* necessary set is performed, after which the application
|
||||
* supplied main() routine is called.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void Default_Reset_Handler(void)
|
||||
{
|
||||
/* Initialize data and bss */
|
||||
unsigned long *pulSrc, *pulDest;
|
||||
|
||||
/* Copy the data segment initializers from flash to SRAM */
|
||||
pulSrc = &_sidata;
|
||||
|
||||
for(pulDest = &_sdata; pulDest < &_edata; )
|
||||
{
|
||||
*(pulDest++) = *(pulSrc++);
|
||||
}
|
||||
|
||||
/* Zero fill the bss segment. This is done with inline assembly since this
|
||||
will clear the value of pulDest if it is not kept in a register. */
|
||||
__asm(" ldr r0, =_sbss\n"
|
||||
" ldr r1, =_ebss\n"
|
||||
" mov r2, #0\n"
|
||||
" .thumb_func\n"
|
||||
" zero_loop:\n"
|
||||
" cmp r0, r1\n"
|
||||
" it lt\n"
|
||||
" strlt r2, [r0], #4\n"
|
||||
" blt zero_loop");
|
||||
|
||||
/* Setup the microcontroller system. */
|
||||
SystemInit();
|
||||
|
||||
/* Call the application's entry point.*/
|
||||
main();
|
||||
}
|
||||
|
||||
/**
|
||||
*@brief Provide weak aliases for each Exception handler to the Default_Handler.
|
||||
* As they are weak aliases, any function with the same name will override
|
||||
* this definition.
|
||||
*/
|
||||
#pragma weak Reset_Handler = Default_Reset_Handler
|
||||
#pragma weak NMI_Handler = Default_Handler
|
||||
#pragma weak HardFault_Handler = Default_Handler
|
||||
#pragma weak MemManage_Handler = Default_Handler
|
||||
#pragma weak BusFault_Handler = Default_Handler
|
||||
#pragma weak UsageFault_Handler = Default_Handler
|
||||
#pragma weak SVC_Handler = Default_Handler
|
||||
#pragma weak DebugMon_Handler = Default_Handler
|
||||
#pragma weak PendSV_Handler = Default_Handler
|
||||
#pragma weak SysTick_Handler = Default_Handler
|
||||
#pragma weak WWDG_IRQHandler = Default_Handler
|
||||
#pragma weak PVD_IRQHandler = Default_Handler
|
||||
#pragma weak TAMPER_IRQHandler = Default_Handler
|
||||
#pragma weak RTC_IRQHandler = Default_Handler
|
||||
#pragma weak FLASH_IRQHandler = Default_Handler
|
||||
#pragma weak RCC_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI0_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI1_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI2_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI3_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel1_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel2_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel3_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel5_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel6_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel7_IRQHandler = Default_Handler
|
||||
#pragma weak ADC1_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI9_5_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_BRK_TIM15_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_UP_TIM16_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_TRG_COM_TIM17_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_CC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM2_IRQHandler = Default_Handler
|
||||
#pragma weak TIM3_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_EV_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_ER_IRQHandler = Default_Handler
|
||||
#pragma weak SPI1_IRQHandler = Default_Handler
|
||||
#pragma weak USART1_IRQHandler = Default_Handler
|
||||
#pragma weak USART2_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI15_10_IRQHandler = Default_Handler
|
||||
#pragma weak RTCAlarm_IRQHandler = Default_Handler
|
||||
#pragma weak CEC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM6_DAC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM7_IRQHandler = Default_Handler
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor receives an
|
||||
* unexpected interrupt. This simply enters an infinite loop,
|
||||
* preserving the system state for examination by a debugger.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void Default_Handler(void)
|
||||
{
|
||||
/* Go into an infinite loop. */
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/*********************** (C) COPYRIGHT 2011 Coocox ************END OF FILE*****/
|
||||
@@ -0,0 +1,285 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file startup_stm32f10x_md.c
|
||||
* @author Coocox
|
||||
* @version V1.0
|
||||
* @date 12/23/2009
|
||||
* @brief STM32F10x Medium Density Devices Startup code.
|
||||
* This module performs:
|
||||
* - Set the initial SP
|
||||
* - Set the vector table entries with the exceptions ISR address
|
||||
* - Initialize data and bss
|
||||
* - Setup the microcontroller system.
|
||||
* - Call the application's entry point.
|
||||
* After Reset the Cortex-M3 processor is in Thread mode,
|
||||
* priority is Privileged, and the Stack is set to Main.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*----------Macro definition--------------------------------------------------*/
|
||||
#define WEAK __attribute__ ((weak))
|
||||
|
||||
|
||||
/*----------Declaration of the default fault handlers-------------------------*/
|
||||
/* System exception vector handler */
|
||||
void WEAK Reset_Handler(void);
|
||||
void WEAK NMI_Handler(void);
|
||||
void WEAK HardFault_Handler(void);
|
||||
void WEAK MemManage_Handler(void);
|
||||
void WEAK BusFault_Handler(void);
|
||||
void WEAK UsageFault_Handler(void);
|
||||
void WEAK SVC_Handler(void);
|
||||
void WEAK DebugMon_Handler(void);
|
||||
void WEAK PendSV_Handler(void);
|
||||
void WEAK SysTick_Handler(void);
|
||||
void WEAK WWDG_IRQHandler(void);
|
||||
void WEAK PVD_IRQHandler(void);
|
||||
void WEAK TAMPER_IRQHandler(void);
|
||||
void WEAK RTC_IRQHandler(void);
|
||||
void WEAK FLASH_IRQHandler(void);
|
||||
void WEAK RCC_IRQHandler(void);
|
||||
void WEAK EXTI0_IRQHandler(void);
|
||||
void WEAK EXTI1_IRQHandler(void);
|
||||
void WEAK EXTI2_IRQHandler(void);
|
||||
void WEAK EXTI3_IRQHandler(void);
|
||||
void WEAK EXTI4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel1_IRQHandler(void);
|
||||
void WEAK DMA1_Channel2_IRQHandler(void);
|
||||
void WEAK DMA1_Channel3_IRQHandler(void);
|
||||
void WEAK DMA1_Channel4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel5_IRQHandler(void);
|
||||
void WEAK DMA1_Channel6_IRQHandler(void);
|
||||
void WEAK DMA1_Channel7_IRQHandler(void);
|
||||
void WEAK ADC1_2_IRQHandler(void);
|
||||
void WEAK USB_HP_CAN1_TX_IRQHandler(void);
|
||||
void WEAK USB_LP_CAN1_RX0_IRQHandler(void);
|
||||
void WEAK CAN1_RX1_IRQHandler(void);
|
||||
void WEAK CAN1_SCE_IRQHandler(void);
|
||||
void WEAK EXTI9_5_IRQHandler(void);
|
||||
void WEAK TIM1_BRK_IRQHandler(void);
|
||||
void WEAK TIM1_UP_IRQHandler(void);
|
||||
void WEAK TIM1_TRG_COM_IRQHandler(void);
|
||||
void WEAK TIM1_CC_IRQHandler(void);
|
||||
void WEAK TIM2_IRQHandler(void);
|
||||
void WEAK TIM3_IRQHandler(void);
|
||||
void WEAK TIM4_IRQHandler(void);
|
||||
void WEAK I2C1_EV_IRQHandler(void);
|
||||
void WEAK I2C1_ER_IRQHandler(void);
|
||||
void WEAK I2C2_EV_IRQHandler(void);
|
||||
void WEAK I2C2_ER_IRQHandler(void);
|
||||
void WEAK SPI1_IRQHandler(void);
|
||||
void WEAK SPI2_IRQHandler(void);
|
||||
void WEAK USART1_IRQHandler(void);
|
||||
void WEAK USART2_IRQHandler(void);
|
||||
void WEAK USART3_IRQHandler(void);
|
||||
void WEAK EXTI15_10_IRQHandler(void);
|
||||
void WEAK RTCAlarm_IRQHandler(void);
|
||||
void WEAK USBWakeUp_IRQHandler(void);
|
||||
|
||||
|
||||
/*----------Symbols defined in linker script----------------------------------*/
|
||||
extern unsigned long _sidata; /*!< Start address for the initialization
|
||||
values of the .data section. */
|
||||
extern unsigned long _sdata; /*!< Start address for the .data section */
|
||||
extern unsigned long _edata; /*!< End address for the .data section */
|
||||
extern unsigned long _sbss; /*!< Start address for the .bss section */
|
||||
extern unsigned long _ebss; /*!< End address for the .bss section */
|
||||
extern unsigned long _eram; /*!< End address for ram */
|
||||
|
||||
|
||||
/*----------Function prototypes-----------------------------------------------*/
|
||||
extern int main(void); /*!< The entry point for the application. */
|
||||
extern void SystemInit(void); /*!< Setup the microcontroller system(CMSIS) */
|
||||
void Default_Reset_Handler(void); /*!< Default reset handler */
|
||||
static void Default_Handler(void); /*!< Default exception handler */
|
||||
|
||||
|
||||
/**
|
||||
*@brief The minimal vector table for a Cortex M3. Note that the proper constructs
|
||||
* must be placed on this to ensure that it ends up at physical address
|
||||
* 0x00000000.
|
||||
*/
|
||||
__attribute__ ((section(".isr_vector")))
|
||||
void (* const g_pfnVectors[])(void) =
|
||||
{
|
||||
/*----------Core Exceptions-------------------------------------------------*/
|
||||
(void *)&_eram, /*!< The initial stack pointer at end of RAM */
|
||||
Reset_Handler, /*!< Reset Handler */
|
||||
NMI_Handler, /*!< NMI Handler */
|
||||
HardFault_Handler, /*!< Hard Fault Handler */
|
||||
MemManage_Handler, /*!< MPU Fault Handler */
|
||||
BusFault_Handler, /*!< Bus Fault Handler */
|
||||
UsageFault_Handler, /*!< Usage Fault Handler */
|
||||
0,0,0,0, /*!< Reserved */
|
||||
SVC_Handler, /*!< SVCall Handler */
|
||||
DebugMon_Handler, /*!< Debug Monitor Handler */
|
||||
0, /*!< Reserved */
|
||||
PendSV_Handler, /*!< PendSV Handler */
|
||||
SysTick_Handler, /*!< SysTick Handler */
|
||||
|
||||
/*----------External Exceptions---------------------------------------------*/
|
||||
WWDG_IRQHandler, /*!< 0: Window Watchdog */
|
||||
PVD_IRQHandler, /*!< 1: PVD through EXTI Line detect */
|
||||
TAMPER_IRQHandler, /*!< 2: Tamper */
|
||||
RTC_IRQHandler, /*!< 3: RTC */
|
||||
FLASH_IRQHandler, /*!< 4: Flash */
|
||||
RCC_IRQHandler, /*!< 5: RCC */
|
||||
EXTI0_IRQHandler, /*!< 6: EXTI Line 0 */
|
||||
EXTI1_IRQHandler, /*!< 7: EXTI Line 1 */
|
||||
EXTI2_IRQHandler, /*!< 8: EXTI Line 2 */
|
||||
EXTI3_IRQHandler, /*!< 9: EXTI Line 3 */
|
||||
EXTI4_IRQHandler, /*!< 10: EXTI Line 4 */
|
||||
DMA1_Channel1_IRQHandler, /*!< 11: DMA1 Channel 1 */
|
||||
DMA1_Channel2_IRQHandler, /*!< 12: DMA1 Channel 2 */
|
||||
DMA1_Channel3_IRQHandler, /*!< 13: DMA1 Channel 3 */
|
||||
DMA1_Channel4_IRQHandler, /*!< 14: DMA1 Channel 4 */
|
||||
DMA1_Channel5_IRQHandler, /*!< 15: DMA1 Channel 5 */
|
||||
DMA1_Channel6_IRQHandler, /*!< 16: DMA1 Channel 6 */
|
||||
DMA1_Channel7_IRQHandler, /*!< 17: DMA1 Channel 7 */
|
||||
ADC1_2_IRQHandler, /*!< 18: ADC1 & ADC2 */
|
||||
USB_HP_CAN1_TX_IRQHandler, /*!< 19: USB High Priority or CAN1 TX */
|
||||
USB_LP_CAN1_RX0_IRQHandler, /*!< 20: USB Low Priority or CAN1 RX0 */
|
||||
CAN1_RX1_IRQHandler, /*!< 21: CAN1 RX1 */
|
||||
CAN1_SCE_IRQHandler, /*!< 22: CAN1 SCE */
|
||||
EXTI9_5_IRQHandler, /*!< 23: EXTI Line 9..5 */
|
||||
TIM1_BRK_IRQHandler, /*!< 24: TIM1 Break */
|
||||
TIM1_UP_IRQHandler, /*!< 25: TIM1 Update */
|
||||
TIM1_TRG_COM_IRQHandler, /*!< 26: TIM1 Trigger and Commutation */
|
||||
TIM1_CC_IRQHandler, /*!< 27: TIM1 Capture Compare */
|
||||
TIM2_IRQHandler, /*!< 28: TIM2 */
|
||||
TIM3_IRQHandler, /*!< 29: TIM3 */
|
||||
TIM4_IRQHandler, /*!< 30: TIM4 */
|
||||
I2C1_EV_IRQHandler, /*!< 31: I2C1 Event */
|
||||
I2C1_ER_IRQHandler, /*!< 32: I2C1 Error */
|
||||
I2C2_EV_IRQHandler, /*!< 33: I2C2 Event */
|
||||
I2C2_ER_IRQHandler, /*!< 34: I2C2 Error */
|
||||
SPI1_IRQHandler, /*!< 35: SPI1 */
|
||||
SPI2_IRQHandler, /*!< 36: SPI2 */
|
||||
USART1_IRQHandler, /*!< 37: USART1 */
|
||||
USART2_IRQHandler, /*!< 38: USART2 */
|
||||
USART3_IRQHandler, /*!< 39: USART3 */
|
||||
EXTI15_10_IRQHandler, /*!< 40: EXTI Line 15..10 */
|
||||
RTCAlarm_IRQHandler, /*!< 41: RTC Alarm through EXTI Line */
|
||||
USBWakeUp_IRQHandler, /*!< 42: USB Wakeup from suspend */
|
||||
0,0,0,0,0,0,0, /*!< Reserved */
|
||||
(void *)0xF108F85F /*!< Boot in RAM mode */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor first
|
||||
* starts execution following a reset event. Only the absolutely
|
||||
* necessary set is performed, after which the application
|
||||
* supplied main() routine is called.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void Default_Reset_Handler(void)
|
||||
{
|
||||
/* Initialize data and bss */
|
||||
unsigned long *pulSrc, *pulDest;
|
||||
|
||||
/* Copy the data segment initializers from flash to SRAM */
|
||||
pulSrc = &_sidata;
|
||||
|
||||
for(pulDest = &_sdata; pulDest < &_edata; )
|
||||
{
|
||||
*(pulDest++) = *(pulSrc++);
|
||||
}
|
||||
|
||||
/* Zero fill the bss segment. This is done with inline assembly since this
|
||||
will clear the value of pulDest if it is not kept in a register. */
|
||||
__asm(" ldr r0, =_sbss\n"
|
||||
" ldr r1, =_ebss\n"
|
||||
" mov r2, #0\n"
|
||||
" .thumb_func\n"
|
||||
"zero_loop:\n"
|
||||
" cmp r0, r1\n"
|
||||
" it lt\n"
|
||||
" strlt r2, [r0], #4\n"
|
||||
" blt zero_loop");
|
||||
|
||||
/* Setup the microcontroller system. */
|
||||
SystemInit();
|
||||
|
||||
/* Call the application's entry point.*/
|
||||
main();
|
||||
}
|
||||
|
||||
/**
|
||||
*@brief Provide weak aliases for each Exception handler to the Default_Handler.
|
||||
* As they are weak aliases, any function with the same name will override
|
||||
* this definition.
|
||||
*/
|
||||
#pragma weak Reset_Handler = Default_Reset_Handler
|
||||
#pragma weak NMI_Handler = Default_Handler
|
||||
#pragma weak HardFault_Handler = Default_Handler
|
||||
#pragma weak MemManage_Handler = Default_Handler
|
||||
#pragma weak BusFault_Handler = Default_Handler
|
||||
#pragma weak UsageFault_Handler = Default_Handler
|
||||
#pragma weak SVC_Handler = Default_Handler
|
||||
#pragma weak DebugMon_Handler = Default_Handler
|
||||
#pragma weak PendSV_Handler = Default_Handler
|
||||
#pragma weak SysTick_Handler = Default_Handler
|
||||
#pragma weak WWDG_IRQHandler = Default_Handler
|
||||
#pragma weak PVD_IRQHandler = Default_Handler
|
||||
#pragma weak TAMPER_IRQHandler = Default_Handler
|
||||
#pragma weak RTC_IRQHandler = Default_Handler
|
||||
#pragma weak FLASH_IRQHandler = Default_Handler
|
||||
#pragma weak RCC_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI0_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI1_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI2_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI3_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel1_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel2_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel3_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel5_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel6_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel7_IRQHandler = Default_Handler
|
||||
#pragma weak ADC1_2_IRQHandler = Default_Handler
|
||||
#pragma weak USB_HP_CAN1_TX_IRQHandler = Default_Handler
|
||||
#pragma weak USB_LP_CAN1_RX0_IRQHandler = Default_Handler
|
||||
#pragma weak CAN1_RX1_IRQHandler = Default_Handler
|
||||
#pragma weak CAN1_SCE_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI9_5_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_BRK_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_UP_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_TRG_COM_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_CC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM2_IRQHandler = Default_Handler
|
||||
#pragma weak TIM3_IRQHandler = Default_Handler
|
||||
#pragma weak TIM4_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_EV_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_ER_IRQHandler = Default_Handler
|
||||
#pragma weak I2C2_EV_IRQHandler = Default_Handler
|
||||
#pragma weak I2C2_ER_IRQHandler = Default_Handler
|
||||
#pragma weak SPI1_IRQHandler = Default_Handler
|
||||
#pragma weak SPI2_IRQHandler = Default_Handler
|
||||
#pragma weak USART1_IRQHandler = Default_Handler
|
||||
#pragma weak USART2_IRQHandler = Default_Handler
|
||||
#pragma weak USART3_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI15_10_IRQHandler = Default_Handler
|
||||
#pragma weak RTCAlarm_IRQHandler = Default_Handler
|
||||
#pragma weak USBWakeUp_IRQHandler = Default_Handler
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor receives an
|
||||
* unexpected interrupt. This simply enters an infinite loop,
|
||||
* preserving the system state for examination by a debugger.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void Default_Handler(void)
|
||||
{
|
||||
/* Go into an infinite loop. */
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*********************** (C) COPYRIGHT 2009 Coocox ************END OF FILE*****/
|
||||
@@ -0,0 +1,282 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file startup_stm32f10x_md_vl.c
|
||||
* @author Coocox
|
||||
* @version V1.0
|
||||
* @date 3/4/2011
|
||||
* @brief STM32F10x Medium Density Value Line Devices Startup code.
|
||||
* This module performs:
|
||||
* - Set the initial SP
|
||||
* - Set the vector table entries with the exceptions ISR address
|
||||
* - Initialize data and bss
|
||||
* - Setup the microcontroller system.
|
||||
* - Call the application's entry point.
|
||||
* After Reset the Cortex-M3 processor is in Thread mode,
|
||||
* priority is Privileged, and the Stack is set to Main.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*----------Macro definition--------------------------------------------------*/
|
||||
#define WEAK __attribute__ ((weak))
|
||||
|
||||
|
||||
/*----------Declaration of the default fault handlers-------------------------*/
|
||||
/* System exception vector handler */
|
||||
void WEAK Reset_Handler(void);
|
||||
void WEAK NMI_Handler(void);
|
||||
void WEAK HardFault_Handler(void);
|
||||
void WEAK MemManage_Handler(void);
|
||||
void WEAK BusFault_Handler(void);
|
||||
void WEAK UsageFault_Handler(void);
|
||||
void WEAK SVC_Handler(void);
|
||||
void WEAK DebugMon_Handler(void);
|
||||
void WEAK PendSV_Handler(void);
|
||||
void WEAK SysTick_Handler(void);
|
||||
void WEAK WWDG_IRQHandler(void);
|
||||
void WEAK PVD_IRQHandler(void);
|
||||
void WEAK TAMPER_IRQHandler(void);
|
||||
void WEAK RTC_IRQHandler(void);
|
||||
void WEAK FLASH_IRQHandler(void);
|
||||
void WEAK RCC_IRQHandler(void);
|
||||
void WEAK EXTI0_IRQHandler(void);
|
||||
void WEAK EXTI1_IRQHandler(void);
|
||||
void WEAK EXTI2_IRQHandler(void);
|
||||
void WEAK EXTI3_IRQHandler(void);
|
||||
void WEAK EXTI4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel1_IRQHandler(void);
|
||||
void WEAK DMA1_Channel2_IRQHandler(void);
|
||||
void WEAK DMA1_Channel3_IRQHandler(void);
|
||||
void WEAK DMA1_Channel4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel5_IRQHandler(void);
|
||||
void WEAK DMA1_Channel6_IRQHandler(void);
|
||||
void WEAK DMA1_Channel7_IRQHandler(void);
|
||||
void WEAK ADC1_IRQHandler(void);
|
||||
void WEAK EXTI9_5_IRQHandler(void);
|
||||
void WEAK TIM1_BRK_TIM15_IRQHandler(void);
|
||||
void WEAK TIM1_UP_TIM16_IRQHandler(void);
|
||||
void WEAK TIM1_TRG_COM_TIM17_IRQHandler(void);
|
||||
void WEAK TIM1_CC_IRQHandler(void);
|
||||
void WEAK TIM2_IRQHandler(void);
|
||||
void WEAK TIM3_IRQHandler(void);
|
||||
void WEAK TIM4_IRQHandler(void);
|
||||
void WEAK I2C1_EV_IRQHandler(void);
|
||||
void WEAK I2C1_ER_IRQHandler(void);
|
||||
void WEAK I2C2_EV_IRQHandler(void);
|
||||
void WEAK I2C2_ER_IRQHandler(void);
|
||||
void WEAK SPI1_IRQHandler(void);
|
||||
void WEAK SPI2_IRQHandler(void);
|
||||
void WEAK USART1_IRQHandler(void);
|
||||
void WEAK USART2_IRQHandler(void);
|
||||
void WEAK USART3_IRQHandler(void);
|
||||
void WEAK EXTI15_10_IRQHandler(void);
|
||||
void WEAK RTCAlarm_IRQHandler(void);
|
||||
void WEAK CEC_IRQHandler(void);
|
||||
void WEAK TIM6_DAC_IRQHandler(void);
|
||||
void WEAK TIM7_IRQHandler(void);
|
||||
|
||||
/*----------Symbols defined in linker script----------------------------------*/
|
||||
extern unsigned long _sidata; /*!< Start address for the initialization
|
||||
values of the .data section. */
|
||||
extern unsigned long _sdata; /*!< Start address for the .data section */
|
||||
extern unsigned long _edata; /*!< End address for the .data section */
|
||||
extern unsigned long _sbss; /*!< Start address for the .bss section */
|
||||
extern unsigned long _ebss; /*!< End address for the .bss section */
|
||||
extern unsigned long _eram; /*!< End address for ram */
|
||||
|
||||
|
||||
/*----------Function prototypes-----------------------------------------------*/
|
||||
extern int main(void); /*!< The entry point for the application. */
|
||||
extern void SystemInit(void); /*!< Setup the microcontroller system(CMSIS) */
|
||||
void Default_Reset_Handler(void); /*!< Default reset handler */
|
||||
static void Default_Handler(void); /*!< Default exception handler */
|
||||
|
||||
|
||||
/**
|
||||
*@brief The minimal vector table for a Cortex M3. Note that the proper constructs
|
||||
* must be placed on this to ensure that it ends up at physical address
|
||||
* 0x00000000.
|
||||
*/
|
||||
__attribute__ ((section(".isr_vector")))
|
||||
void (* const g_pfnVectors[])(void) =
|
||||
{
|
||||
/*----------Core Exceptions-------------------------------------------------*/
|
||||
(void *)&_eram, /*!< The initial stack pointer at end of RAM */
|
||||
Reset_Handler, /*!< Reset Handler */
|
||||
NMI_Handler, /*!< NMI Handler */
|
||||
HardFault_Handler, /*!< Hard Fault Handler */
|
||||
MemManage_Handler, /*!< MPU Fault Handler */
|
||||
BusFault_Handler, /*!< Bus Fault Handler */
|
||||
UsageFault_Handler, /*!< Usage Fault Handler */
|
||||
0,0,0,0, /*!< Reserved */
|
||||
SVC_Handler, /*!< SVCall Handler */
|
||||
DebugMon_Handler, /*!< Debug Monitor Handler */
|
||||
0, /*!< Reserved */
|
||||
PendSV_Handler, /*!< PendSV Handler */
|
||||
SysTick_Handler, /*!< SysTick Handler */
|
||||
|
||||
/*----------External Exceptions---------------------------------------------*/
|
||||
WWDG_IRQHandler, /*!< 0: Window Watchdog */
|
||||
PVD_IRQHandler, /*!< 1: PVD through EXTI Line detect */
|
||||
TAMPER_IRQHandler, /*!< 2: Tamper */
|
||||
RTC_IRQHandler, /*!< 3: RTC */
|
||||
FLASH_IRQHandler, /*!< 4: Flash */
|
||||
RCC_IRQHandler, /*!< 5: RCC */
|
||||
EXTI0_IRQHandler, /*!< 6: EXTI Line 0 */
|
||||
EXTI1_IRQHandler, /*!< 7: EXTI Line 1 */
|
||||
EXTI2_IRQHandler, /*!< 8: EXTI Line 2 */
|
||||
EXTI3_IRQHandler, /*!< 9: EXTI Line 3 */
|
||||
EXTI4_IRQHandler, /*!< 10: EXTI Line 4 */
|
||||
DMA1_Channel1_IRQHandler, /*!< 11: DMA1 Channel 1 */
|
||||
DMA1_Channel2_IRQHandler, /*!< 12: DMA1 Channel 2 */
|
||||
DMA1_Channel3_IRQHandler, /*!< 13: DMA1 Channel 3 */
|
||||
DMA1_Channel4_IRQHandler, /*!< 14: DMA1 Channel 4 */
|
||||
DMA1_Channel5_IRQHandler, /*!< 15: DMA1 Channel 5 */
|
||||
DMA1_Channel6_IRQHandler, /*!< 16: DMA1 Channel 6 */
|
||||
DMA1_Channel7_IRQHandler, /*!< 17: DMA1 Channel 7 */
|
||||
ADC1_IRQHandler, /*!< 18: ADC1 */
|
||||
0, /*!< 19: USB High Priority or CAN1 TX */
|
||||
0, /*!< 20: USB Low Priority or CAN1 RX0 */
|
||||
0, /*!< 21: CAN1 RX1 */
|
||||
0, /*!< 22: CAN1 SCE */
|
||||
EXTI9_5_IRQHandler, /*!< 23: EXTI Line 9..5 */
|
||||
TIM1_BRK_TIM15_IRQHandler, /*!< 24: TIM1 Break and TIM15 */
|
||||
TIM1_UP_TIM16_IRQHandler, /*!< 25: TIM1 Update and TIM16 */
|
||||
TIM1_TRG_COM_TIM17_IRQHandler,/*!< 26: TIM1 Trigger and Commutation and TIM17 */
|
||||
TIM1_CC_IRQHandler, /*!< 27: TIM1 Capture Compare */
|
||||
TIM2_IRQHandler, /*!< 28: TIM2 */
|
||||
TIM3_IRQHandler, /*!< 29: TIM3 */
|
||||
TIM4_IRQHandler, /*!< 30: TIM4 */
|
||||
I2C1_EV_IRQHandler, /*!< 31: I2C1 Event */
|
||||
I2C1_ER_IRQHandler, /*!< 32: I2C1 Error */
|
||||
I2C2_EV_IRQHandler, /*!< 33: I2C2 Event */
|
||||
I2C2_ER_IRQHandler, /*!< 34: I2C2 Error */
|
||||
SPI1_IRQHandler, /*!< 35: SPI1 */
|
||||
SPI2_IRQHandler, /*!< 36: SPI2 */
|
||||
USART1_IRQHandler, /*!< 37: USART1 */
|
||||
USART2_IRQHandler, /*!< 38: USART2 */
|
||||
USART3_IRQHandler, /*!< 39: USART3 */
|
||||
EXTI15_10_IRQHandler, /*!< 40: EXTI Line 15..10 */
|
||||
RTCAlarm_IRQHandler, /*!< 41: RTC Alarm through EXTI Line */
|
||||
CEC_IRQHandler, /*!< 42: HDMI-CEC */
|
||||
0,0,0,0,0,0, /*!< Reserved */
|
||||
0,0,0,0,0, /*!< Reserved */
|
||||
TIM6_DAC_IRQHandler, /*!< 54: TIM6 and DAC underrun */
|
||||
TIM7_IRQHandler, /*!< 55: TIM7 */
|
||||
(void *)0xF108F85F /*!< Boot in RAM mode */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor first
|
||||
* starts execution following a reset event. Only the absolutely
|
||||
* necessary set is performed, after which the application
|
||||
* supplied main() routine is called.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void Default_Reset_Handler(void)
|
||||
{
|
||||
/* Initialize data and bss */
|
||||
unsigned long *pulSrc, *pulDest;
|
||||
|
||||
/* Copy the data segment initializers from flash to SRAM */
|
||||
pulSrc = &_sidata;
|
||||
|
||||
for(pulDest = &_sdata; pulDest < &_edata; )
|
||||
{
|
||||
*(pulDest++) = *(pulSrc++);
|
||||
}
|
||||
|
||||
/* Zero fill the bss segment. This is done with inline assembly since this
|
||||
will clear the value of pulDest if it is not kept in a register. */
|
||||
__asm(" ldr r0, =_sbss\n"
|
||||
" ldr r1, =_ebss\n"
|
||||
" mov r2, #0\n"
|
||||
" .thumb_func\n"
|
||||
" zero_loop:\n"
|
||||
" cmp r0, r1\n"
|
||||
" it lt\n"
|
||||
" strlt r2, [r0], #4\n"
|
||||
" blt zero_loop");
|
||||
|
||||
/* Setup the microcontroller system. */
|
||||
SystemInit();
|
||||
|
||||
/* Call the application's entry point.*/
|
||||
main();
|
||||
}
|
||||
|
||||
/**
|
||||
*@brief Provide weak aliases for each Exception handler to the Default_Handler.
|
||||
* As they are weak aliases, any function with the same name will override
|
||||
* this definition.
|
||||
*/
|
||||
#pragma weak Reset_Handler = Default_Reset_Handler
|
||||
#pragma weak NMI_Handler = Default_Handler
|
||||
#pragma weak HardFault_Handler = Default_Handler
|
||||
#pragma weak MemManage_Handler = Default_Handler
|
||||
#pragma weak BusFault_Handler = Default_Handler
|
||||
#pragma weak UsageFault_Handler = Default_Handler
|
||||
#pragma weak SVC_Handler = Default_Handler
|
||||
#pragma weak DebugMon_Handler = Default_Handler
|
||||
#pragma weak PendSV_Handler = Default_Handler
|
||||
#pragma weak SysTick_Handler = Default_Handler
|
||||
#pragma weak WWDG_IRQHandler = Default_Handler
|
||||
#pragma weak PVD_IRQHandler = Default_Handler
|
||||
#pragma weak TAMPER_IRQHandler = Default_Handler
|
||||
#pragma weak RTC_IRQHandler = Default_Handler
|
||||
#pragma weak FLASH_IRQHandler = Default_Handler
|
||||
#pragma weak RCC_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI0_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI1_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI2_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI3_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel1_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel2_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel3_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel5_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel6_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel7_IRQHandler = Default_Handler
|
||||
#pragma weak ADC1_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI9_5_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_BRK_TIM15_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_UP_TIM16_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_TRG_COM_TIM17_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_CC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM2_IRQHandler = Default_Handler
|
||||
#pragma weak TIM3_IRQHandler = Default_Handler
|
||||
#pragma weak TIM4_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_EV_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_ER_IRQHandler = Default_Handler
|
||||
#pragma weak I2C2_EV_IRQHandler = Default_Handler
|
||||
#pragma weak I2C2_ER_IRQHandler = Default_Handler
|
||||
#pragma weak SPI1_IRQHandler = Default_Handler
|
||||
#pragma weak SPI2_IRQHandler = Default_Handler
|
||||
#pragma weak USART1_IRQHandler = Default_Handler
|
||||
#pragma weak USART2_IRQHandler = Default_Handler
|
||||
#pragma weak USART3_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI15_10_IRQHandler = Default_Handler
|
||||
#pragma weak RTCAlarm_IRQHandler = Default_Handler
|
||||
#pragma weak CEC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM6_DAC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM7_IRQHandler = Default_Handler
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor receives an
|
||||
* unexpected interrupt. This simply enters an infinite loop,
|
||||
* preserving the system state for examination by a debugger.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void Default_Handler(void)
|
||||
{
|
||||
/* Go into an infinite loop. */
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/*********************** (C) COPYRIGHT 2011 Coocox ************END OF FILE*****/
|
||||
@@ -0,0 +1,336 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file startup_stm32f10x_xl.c
|
||||
* @author Coocox
|
||||
* @version V1.0
|
||||
* @date 3/8/2011
|
||||
* @brief STM32F10x XL-Density Devices Startup code.
|
||||
* This module performs:
|
||||
* - Set the initial SP
|
||||
* - Set the vector table entries with the exceptions ISR address
|
||||
* - Initialize data and bss
|
||||
* - Setup the microcontroller system.
|
||||
* - Call the application's entry point.
|
||||
* After Reset the Cortex-M3 processor is in Thread mode,
|
||||
* priority is Privileged, and the Stack is set to Main.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*----------Macro definition--------------------------------------------------*/
|
||||
#define WEAK __attribute__ ((weak))
|
||||
|
||||
|
||||
/*----------Declaration of the default fault handlers-------------------------*/
|
||||
/* System exception vector handler */
|
||||
void WEAK Reset_Handler(void);
|
||||
void WEAK NMI_Handler(void);
|
||||
void WEAK HardFault_Handler(void);
|
||||
void WEAK MemManage_Handler(void);
|
||||
void WEAK BusFault_Handler(void);
|
||||
void WEAK UsageFault_Handler(void);
|
||||
void WEAK SVC_Handler(void);
|
||||
void WEAK DebugMon_Handler(void);
|
||||
void WEAK PendSV_Handler(void);
|
||||
void WEAK SysTick_Handler(void);
|
||||
void WEAK WWDG_IRQHandler(void);
|
||||
void WEAK PVD_IRQHandler(void);
|
||||
void WEAK TAMPER_IRQHandler(void);
|
||||
void WEAK RTC_IRQHandler(void);
|
||||
void WEAK FLASH_IRQHandler(void);
|
||||
void WEAK RCC_IRQHandler(void);
|
||||
void WEAK EXTI0_IRQHandler(void);
|
||||
void WEAK EXTI1_IRQHandler(void);
|
||||
void WEAK EXTI2_IRQHandler(void);
|
||||
void WEAK EXTI3_IRQHandler(void);
|
||||
void WEAK EXTI4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel1_IRQHandler(void);
|
||||
void WEAK DMA1_Channel2_IRQHandler(void);
|
||||
void WEAK DMA1_Channel3_IRQHandler(void);
|
||||
void WEAK DMA1_Channel4_IRQHandler(void);
|
||||
void WEAK DMA1_Channel5_IRQHandler(void);
|
||||
void WEAK DMA1_Channel6_IRQHandler(void);
|
||||
void WEAK DMA1_Channel7_IRQHandler(void);
|
||||
void WEAK ADC1_2_IRQHandler(void);
|
||||
void WEAK USB_HP_CAN1_TX_IRQHandler(void);
|
||||
void WEAK USB_LP_CAN1_RX0_IRQHandler(void);
|
||||
void WEAK CAN1_RX1_IRQHandler(void);
|
||||
void WEAK CAN1_SCE_IRQHandler(void);
|
||||
void WEAK EXTI9_5_IRQHandler(void);
|
||||
void WEAK TIM1_BRK_TIM9_IRQHandler(void);
|
||||
void WEAK TIM1_UP_TIM10_IRQHandler(void);
|
||||
void WEAK TIM1_TRG_COM_TIM11_IRQHandler(void);
|
||||
void WEAK TIM1_CC_IRQHandler(void);
|
||||
void WEAK TIM2_IRQHandler(void);
|
||||
void WEAK TIM3_IRQHandler(void);
|
||||
void WEAK TIM4_IRQHandler(void);
|
||||
void WEAK I2C1_EV_IRQHandler(void);
|
||||
void WEAK I2C1_ER_IRQHandler(void);
|
||||
void WEAK I2C2_EV_IRQHandler(void);
|
||||
void WEAK I2C2_ER_IRQHandler(void);
|
||||
void WEAK SPI1_IRQHandler(void);
|
||||
void WEAK SPI2_IRQHandler(void);
|
||||
void WEAK USART1_IRQHandler(void);
|
||||
void WEAK USART2_IRQHandler(void);
|
||||
void WEAK USART3_IRQHandler(void);
|
||||
void WEAK EXTI15_10_IRQHandler(void);
|
||||
void WEAK RTCAlarm_IRQHandler(void);
|
||||
void WEAK USBWakeUp_IRQHandler(void);
|
||||
void WEAK TIM8_BRK_TIM12_IRQHandler(void);
|
||||
void WEAK TIM8_UP_TIM13_IRQHandler(void);
|
||||
void WEAK TIM8_TRG_COM_TIM14_IRQHandler(void);
|
||||
void WEAK TIM8_CC_IRQHandler(void);
|
||||
void WEAK ADC3_IRQHandler(void);
|
||||
void WEAK FSMC_IRQHandler(void);
|
||||
void WEAK SDIO_IRQHandler(void);
|
||||
void WEAK TIM5_IRQHandler(void);
|
||||
void WEAK SPI3_IRQHandler(void);
|
||||
void WEAK UART4_IRQHandler(void);
|
||||
void WEAK UART5_IRQHandler(void);
|
||||
void WEAK TIM6_IRQHandler(void);
|
||||
void WEAK TIM7_IRQHandler(void);
|
||||
void WEAK DMA2_Channel1_IRQHandler(void);
|
||||
void WEAK DMA2_Channel2_IRQHandler(void);
|
||||
void WEAK DMA2_Channel3_IRQHandler(void);
|
||||
void WEAK DMA2_Channel4_5_IRQHandler(void);
|
||||
|
||||
|
||||
/*----------Symbols defined in linker script----------------------------------*/
|
||||
extern unsigned long _sidata; /*!< Start address for the initialization
|
||||
values of the .data section. */
|
||||
extern unsigned long _sdata; /*!< Start address for the .data section */
|
||||
extern unsigned long _edata; /*!< End address for the .data section */
|
||||
extern unsigned long _sbss; /*!< Start address for the .bss section */
|
||||
extern unsigned long _ebss; /*!< End address for the .bss section */
|
||||
extern unsigned long _eram; /*!< End address for ram */
|
||||
|
||||
|
||||
/*----------Function prototypes-----------------------------------------------*/
|
||||
extern int main(void); /*!< The entry point for the application. */
|
||||
extern void SystemInit(void); /*!< Setup the microcontroller system(CMSIS) */
|
||||
void Default_Reset_Handler(void); /*!< Default reset handler */
|
||||
static void Default_Handler(void); /*!< Default exception handler */
|
||||
|
||||
|
||||
/**
|
||||
*@brief The minimal vector table for a Cortex M3. Note that the proper constructs
|
||||
* must be placed on this to ensure that it ends up at physical address
|
||||
* 0x00000000.
|
||||
*/
|
||||
__attribute__ ((section(".isr_vector")))
|
||||
void (* const g_pfnVectors[])(void) =
|
||||
{
|
||||
/*----------Core Exceptions-------------------------------------------------*/
|
||||
(void *)&_eram, /*!< The initial stack pointer at end of RAM */
|
||||
Reset_Handler, /*!< Reset Handler */
|
||||
NMI_Handler, /*!< NMI Handler */
|
||||
HardFault_Handler, /*!< Hard Fault Handler */
|
||||
MemManage_Handler, /*!< MPU Fault Handler */
|
||||
BusFault_Handler, /*!< Bus Fault Handler */
|
||||
UsageFault_Handler, /*!< Usage Fault Handler */
|
||||
0,0,0,0, /*!< Reserved */
|
||||
SVC_Handler, /*!< SVCall Handler */
|
||||
DebugMon_Handler, /*!< Debug Monitor Handler */
|
||||
0, /*!< Reserved */
|
||||
PendSV_Handler, /*!< PendSV Handler */
|
||||
SysTick_Handler, /*!< SysTick Handler */
|
||||
|
||||
/*----------External Exceptions---------------------------------------------*/
|
||||
WWDG_IRQHandler, /*!< 0: Window Watchdog */
|
||||
PVD_IRQHandler, /*!< 1: PVD through EXTI Line detect */
|
||||
TAMPER_IRQHandler, /*!< 2: Tamper */
|
||||
RTC_IRQHandler, /*!< 3: RTC */
|
||||
FLASH_IRQHandler, /*!< 4: Flash */
|
||||
RCC_IRQHandler, /*!< 5: RCC */
|
||||
EXTI0_IRQHandler, /*!< 6: EXTI Line 0 */
|
||||
EXTI1_IRQHandler, /*!< 7: EXTI Line 1 */
|
||||
EXTI2_IRQHandler, /*!< 8: EXTI Line 2 */
|
||||
EXTI3_IRQHandler, /*!< 9: EXTI Line 3 */
|
||||
EXTI4_IRQHandler, /*!< 10: EXTI Line 4 */
|
||||
DMA1_Channel1_IRQHandler, /*!< 11: DMA1 Channel 1 */
|
||||
DMA1_Channel2_IRQHandler, /*!< 12: DMA1 Channel 2 */
|
||||
DMA1_Channel3_IRQHandler, /*!< 13: DMA1 Channel 3 */
|
||||
DMA1_Channel4_IRQHandler, /*!< 14: DMA1 Channel 4 */
|
||||
DMA1_Channel5_IRQHandler, /*!< 15: DMA1 Channel 5 */
|
||||
DMA1_Channel6_IRQHandler, /*!< 16: DMA1 Channel 6 */
|
||||
DMA1_Channel7_IRQHandler, /*!< 17: DMA1 Channel 7 */
|
||||
ADC1_2_IRQHandler, /*!< 18: ADC1 & ADC2 */
|
||||
USB_HP_CAN1_TX_IRQHandler, /*!< 19: USB High Priority or CAN1 TX */
|
||||
USB_LP_CAN1_RX0_IRQHandler, /*!< 20: USB Low Priority or CAN1 RX0 */
|
||||
CAN1_RX1_IRQHandler, /*!< 21: CAN1 RX1 */
|
||||
CAN1_SCE_IRQHandler, /*!< 22: CAN1 SCE */
|
||||
EXTI9_5_IRQHandler, /*!< 23: EXTI Line 9..5 */
|
||||
TIM1_BRK_TIM9_IRQHandler, /*!< 24: TIM1 Break and TIM9 */
|
||||
TIM1_UP_TIM10_IRQHandler, /*!< 25: TIM1 Update and TIM10 */
|
||||
TIM1_TRG_COM_TIM11_IRQHandler,/*!< 26: TIM1 Trigger and Commutation and TIM11 */
|
||||
TIM1_CC_IRQHandler, /*!< 27: TIM1 Capture Compare */
|
||||
TIM2_IRQHandler, /*!< 28: TIM2 */
|
||||
TIM3_IRQHandler, /*!< 29: TIM3 */
|
||||
TIM4_IRQHandler, /*!< 30: TIM4 */
|
||||
I2C1_EV_IRQHandler, /*!< 31: I2C1 Event */
|
||||
I2C1_ER_IRQHandler, /*!< 32: I2C1 Error */
|
||||
I2C2_EV_IRQHandler, /*!< 33: I2C2 Event */
|
||||
I2C2_ER_IRQHandler, /*!< 34: I2C2 Error */
|
||||
SPI1_IRQHandler, /*!< 35: SPI1 */
|
||||
SPI2_IRQHandler, /*!< 36: SPI2 */
|
||||
USART1_IRQHandler, /*!< 37: USART1 */
|
||||
USART2_IRQHandler, /*!< 38: USART2 */
|
||||
USART3_IRQHandler, /*!< 39: USART3 */
|
||||
EXTI15_10_IRQHandler, /*!< 40: EXTI Line 15..10 */
|
||||
RTCAlarm_IRQHandler, /*!< 41: RTC Alarm through EXTI Line */
|
||||
USBWakeUp_IRQHandler, /*!< 42: USB Wakeup from suspend */
|
||||
TIM8_BRK_TIM12_IRQHandler, /*!< 43: TIM8 Break and TIM12 */
|
||||
TIM8_UP_TIM13_IRQHandler, /*!< 44: TIM8 Update and TIM13 */
|
||||
TIM8_TRG_COM_TIM14_IRQHandler,/*!< 45: TIM8 Trigger and Commutation and TIM14 */
|
||||
TIM8_CC_IRQHandler, /*!< 46: TIM8 Capture Compare */
|
||||
ADC3_IRQHandler, /*!< 47: ADC3 */
|
||||
FSMC_IRQHandler, /*!< 48: FSMC */
|
||||
SDIO_IRQHandler, /*!< 49: SDIO */
|
||||
TIM5_IRQHandler, /*!< 50: TIM5 */
|
||||
SPI3_IRQHandler, /*!< 51: SPI3 */
|
||||
UART4_IRQHandler, /*!< 52: UART4 */
|
||||
UART5_IRQHandler, /*!< 53: UART5 */
|
||||
TIM6_IRQHandler, /*!< 54: TIM6 */
|
||||
TIM7_IRQHandler, /*!< 55: TIM7 */
|
||||
DMA2_Channel1_IRQHandler, /*!< 56: DMA2 Channel1 */
|
||||
DMA2_Channel2_IRQHandler, /*!< 57: DMA2 Channel2 */
|
||||
DMA2_Channel3_IRQHandler, /*!< 58: DMA2 Channel3 */
|
||||
DMA2_Channel4_5_IRQHandler, /*!< 59: DMA2 Channel4 & Channel5 */
|
||||
(void *)0xF108F85F /*!< Boot in RAM mode */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor first
|
||||
* starts execution following a reset event. Only the absolutely
|
||||
* necessary set is performed, after which the application
|
||||
* supplied main() routine is called.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void Default_Reset_Handler(void)
|
||||
{
|
||||
/* Initialize data and bss */
|
||||
unsigned long *pulSrc, *pulDest;
|
||||
|
||||
/* Copy the data segment initializers from flash to SRAM */
|
||||
pulSrc = &_sidata;
|
||||
|
||||
for(pulDest = &_sdata; pulDest < &_edata; )
|
||||
{
|
||||
*(pulDest++) = *(pulSrc++);
|
||||
}
|
||||
|
||||
/* Zero fill the bss segment. This is done with inline assembly since this
|
||||
will clear the value of pulDest if it is not kept in a register. */
|
||||
__asm(" ldr r0, =_sbss\n"
|
||||
" ldr r1, =_ebss\n"
|
||||
" mov r2, #0\n"
|
||||
" .thumb_func\n"
|
||||
"zero_loop:\n"
|
||||
" cmp r0, r1\n"
|
||||
" it lt\n"
|
||||
" strlt r2, [r0], #4\n"
|
||||
" blt zero_loop");
|
||||
|
||||
/* Setup the microcontroller system. */
|
||||
SystemInit();
|
||||
|
||||
/* Call the application's entry point.*/
|
||||
main();
|
||||
}
|
||||
|
||||
/**
|
||||
*@brief Provide weak aliases for each Exception handler to the Default_Handler.
|
||||
* As they are weak aliases, any function with the same name will override
|
||||
* this definition.
|
||||
*/
|
||||
#pragma weak Reset_Handler = Default_Reset_Handler
|
||||
#pragma weak NMI_Handler = Default_Handler
|
||||
#pragma weak HardFault_Handler = Default_Handler
|
||||
#pragma weak MemManage_Handler = Default_Handler
|
||||
#pragma weak BusFault_Handler = Default_Handler
|
||||
#pragma weak UsageFault_Handler = Default_Handler
|
||||
#pragma weak SVC_Handler = Default_Handler
|
||||
#pragma weak DebugMon_Handler = Default_Handler
|
||||
#pragma weak PendSV_Handler = Default_Handler
|
||||
#pragma weak SysTick_Handler = Default_Handler
|
||||
#pragma weak WWDG_IRQHandler = Default_Handler
|
||||
#pragma weak PVD_IRQHandler = Default_Handler
|
||||
#pragma weak TAMPER_IRQHandler = Default_Handler
|
||||
#pragma weak RTC_IRQHandler = Default_Handler
|
||||
#pragma weak FLASH_IRQHandler = Default_Handler
|
||||
#pragma weak RCC_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI0_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI1_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI2_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI3_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel1_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel2_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel3_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel4_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel5_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel6_IRQHandler = Default_Handler
|
||||
#pragma weak DMA1_Channel7_IRQHandler = Default_Handler
|
||||
#pragma weak ADC1_2_IRQHandler = Default_Handler
|
||||
#pragma weak USB_HP_CAN1_TX_IRQHandler = Default_Handler
|
||||
#pragma weak USB_LP_CAN1_RX0_IRQHandler = Default_Handler
|
||||
#pragma weak CAN1_RX1_IRQHandler = Default_Handler
|
||||
#pragma weak CAN1_SCE_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI9_5_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_BRK_TIM9_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_UP_TIM10_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_TRG_COM_TIM11_IRQHandler = Default_Handler
|
||||
#pragma weak TIM1_CC_IRQHandler = Default_Handler
|
||||
#pragma weak TIM2_IRQHandler = Default_Handler
|
||||
#pragma weak TIM3_IRQHandler = Default_Handler
|
||||
#pragma weak TIM4_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_EV_IRQHandler = Default_Handler
|
||||
#pragma weak I2C1_ER_IRQHandler = Default_Handler
|
||||
#pragma weak I2C2_EV_IRQHandler = Default_Handler
|
||||
#pragma weak I2C2_ER_IRQHandler = Default_Handler
|
||||
#pragma weak SPI1_IRQHandler = Default_Handler
|
||||
#pragma weak SPI2_IRQHandler = Default_Handler
|
||||
#pragma weak USART1_IRQHandler = Default_Handler
|
||||
#pragma weak USART2_IRQHandler = Default_Handler
|
||||
#pragma weak USART3_IRQHandler = Default_Handler
|
||||
#pragma weak EXTI15_10_IRQHandler = Default_Handler
|
||||
#pragma weak RTCAlarm_IRQHandler = Default_Handler
|
||||
#pragma weak USBWakeUp_IRQHandler = Default_Handler
|
||||
#pragma weak TIM8_BRK_TIM12_IRQHandler = Default_Handler
|
||||
#pragma weak TIM8_UP_TIM13_IRQHandler = Default_Handler
|
||||
#pragma weak TIM8_TRG_COM_TIM14_IRQHandler = Default_Handler
|
||||
#pragma weak TIM8_CC_IRQHandler = Default_Handler
|
||||
#pragma weak ADC3_IRQHandler = Default_Handler
|
||||
#pragma weak FSMC_IRQHandler = Default_Handler
|
||||
#pragma weak SDIO_IRQHandler = Default_Handler
|
||||
#pragma weak TIM5_IRQHandler = Default_Handler
|
||||
#pragma weak SPI3_IRQHandler = Default_Handler
|
||||
#pragma weak UART4_IRQHandler = Default_Handler
|
||||
#pragma weak UART5_IRQHandler = Default_Handler
|
||||
#pragma weak TIM6_IRQHandler = Default_Handler
|
||||
#pragma weak TIM7_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel1_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel2_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel3_IRQHandler = Default_Handler
|
||||
#pragma weak DMA2_Channel4_5_IRQHandler = Default_Handler
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the code that gets called when the processor receives an
|
||||
* unexpected interrupt. This simply enters an infinite loop,
|
||||
* preserving the system state for examination by a debugger.
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void Default_Handler(void)
|
||||
{
|
||||
/* Go into an infinite loop. */
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/*********************** (C) COPYRIGHT 2011 Coocox ************END OF FILE*****/
|
||||
Reference in New Issue
Block a user