/*
* Startup file for HC32F196 (ARM Cortex-M4)
* Compatible with GCC toolchain
*/
.cpu cortex-m4
.fpu fpv4-sp-d16
.syntax unified
.thumb
.global _start
.global Default_Handler
/* Linker defined symbols */
.extern __data_start__
.extern __data_end__
.extern __data_load__
.extern __bss_start__
.extern __bss_end__
.extern __stack_top
.extern __heap_start
.extern __heap_end
/* Exception table */
.section .isr_vector,"a",%progbits
.type _isr_vector, %object
.size _isr_vector, . - _isr_vector
_isr_vector:
.word __stack_top /* Stack pointer */
.word Reset_Handler /* Reset Handler */
.word NMI_Handler /* NMI Handler */
.word HardFault_Handler /* Hard Fault Handler */
.word MemManage_Handler /* MPU Fault Handler */
.word BusFault_Handler /* Bus Fault Handler */
.word UsageFault_Handler /* Usage Fault Handler */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word SVC_Handler /* SVCall Handler */
.word DebugMon_Handler /* Debug Monitor Handler */
.word 0 /* Reserved */
.word PendSV_Handler /* PendSV Handler */
.word SysTick_Handler /* SysTick Handler */
/* External interrupts */
.word WWDG_IRQHandler /* 0 - Window Watchdog */
.word PVD_IRQHandler /* 1 - PVD through EXTI Line detect */
.word TAMP_STAMP_IRQHandler /* 2 - Tamper and TimeStamp */
.word RTC_WKUP_IRQHandler /* 3 - RTC Wakeup */
.word FLASH_IRQHandler /* 4 - Flash */
.word RCC_IRQHandler /* 5 - RCC */
.word EXTI0_IRQHandler /* 6 - EXTI Line0 */
.word EXTI1_IRQHandler /* 7 - EXTI Line1 */
.word EXTI2_IRQHandler /* 8 - EXTI Line2 */
.word EXTI3_IRQHandler /* 9 - EXTI Line3 */
.word EXTI4_IRQHandler /* 10 - EXTI Line4 */
.word DMA1_Channel1_IRQHandler /* 11 - DMA1 Channel 1 */
.word DMA1_Channel2_IRQHandler /* 12 - DMA1 Channel 2 */
.word DMA1_Channel3_IRQHandler /* 13 - DMA1 Channel 3 */
.word DMA1_Channel4_IRQHandler /* 14 - DMA1 Channel 4 */
.word DMA1_Channel5_IRQHandler /* 15 - DMA1 Channel 5 */
.word DMA1_Channel6_IRQHandler /* 16 - DMA1 Channel 6 */
.word DMA1_Channel7_IRQHandler /* 17 - DMA1 Channel 7 */
.word ADC1_2_IRQHandler /* 18 - ADC1 & ADC2 */
.word USB_HP_CAN1_TX_IRQHandler /* 19 - USB High Priority or CAN1 TX */
.word USB_LP_CAN1_RX0_IRQHandler /* 20 - USB Low Priority or CAN1 RX0 */
.word CAN1_RX1_IRQHandler /* 21 - CAN1 RX1 */
.word CAN1_SCE_IRQHandler /* 22 - CAN1 SCE */
.word EXTI9_5_IRQHandler /* 23 - EXTI Line[9:5] */
.word TIM1_BRK_TIM9_IRQHandler /* 24 - TIM1 Break or TIM9 */
.word TIM1_UP_TIM10_IRQHandler /* 25 - TIM1 Update or TIM10 */
.word TIM1_TRG_COM_TIM11_IRQHandler /* 26 - TIM1 Trigger and Commutation or TIM11 */
.word TIM1_CC_IRQHandler /* 27 - TIM1 Capture Compare */
.word TIM2_IRQHandler /* 28 - TIM2 */
.word TIM3_IRQHandler /* 29 - TIM3 */
.word TIM4_IRQHandler /* 30 - TIM4 */
.word I2C1_EV_IRQHandler /* 31 - I2C1 Event */
.word I2C1_ER_IRQHandler /* 32 - I2C1 Error */
.word I2C2_EV_IRQHandler /* 33 - I2C2 Event */
.word I2C2_ER_IRQHandler /* 34 - I2C2 Error */
.word SPI1_IRQHandler /* 35 - SPI1 */
.word SPI2_IRQHandler /* 36 - SPI2 */
.word USART1_IRQHandler /* 37 - USART1 */
.word USART2_IRQHandler /* 38 - USART2 */
.word USART3_IRQHandler /* 39 - USART3 */
.word EXTI15_10_IRQHandler /* 40 - EXTI Line[15:10] */
.word RTC_Alarm_IRQHandler /* 41 - RTC Alarm (A and B) through EXTI Line */
.word OTG_FS_WKUP_IRQHandler /* 42 - USB OTG FS Wakeup through EXTI Line */
.word TIM8_BRK_TIM12_IRQHandler /* 43 - TIM8 Break or TIM12 */
.word TIM8_UP_TIM13_IRQHandler /* 44 - TIM8 Update or TIM13 */
.word TIM8_TRG_COM_TIM14_IRQHandler /* 45 - TIM8 Trigger and Commutation or TIM14 */
.word TIM8_CC_IRQHandler /* 46 - TIM8 Capture Compare */
.word ADC3_IRQHandler /* 47 - ADC3 */
.word FSMC_IRQHandler /* 48 - FSMC */
.word SDIO_IRQHandler /* 49 - SDIO */
.word TIM5_IRQHandler /* 50 - TIM5 */
.word SPI3_IRQHandler /* 51 - SPI3 */
.word UART4_IRQHandler /* 52 - UART4 */
.word UART5_IRQHandler /* 53 - UART5 */
.word TIM6_DAC_IRQHandler /* 54 - TIM6 and DAC1&2 underrun */
.word TIM7_IRQHandler /* 55 - TIM7 */
.word DMA2_Channel1_IRQHandler /* 56 - DMA2 Channel 1 */
.word DMA2_Channel2_IRQHandler /* 57 - DMA2 Channel 2 */
.word DMA2_Channel3_IRQHandler /* 58 - DMA2 Channel 3 */
.word DMA2_Channel4_5_IRQHandler /* 59 - DMA2 Channel 4 & 5 */
/* Reset handler */
.section .text.Reset_Handler
.thumb_func
.type Reset_Handler, %function
Reset_Handler:
/* Disable interrupts */
CPSID I
/* Initialize data segment */
LDR R0, =__data_start__
LDR R1, =__data_load__
LDR R2, =__data_end__
CMP R0, R1
BEQ .Lnoinit_data
.Linit_data:
LDR R3, [R1], #4
STR R3, [R0], #4
CMP R0, R2
BNE .Linit_data
.Lnoinit_data:
/* Initialize BSS segment */
LDR R0, =__bss_start__
LDR R1, =__bss_end__
MOV R2, #0
.Linit_bss:
STR R2, [R0], #4
CMP R0, R1
BNE .Linit_bss
/* Configure system clock */
BL SystemInit
/* Call the application's entry point */
BL main
/* Infinite loop if main returns */
.Lhang:
B .Lhang
/* Default exception handlers */
.type Default_Handler, %function
Default_Handler:
.Ldefault_loop:
B .Ldefault_loop
/* Individual exception handlers */
.type NMI_Handler, %function
NMI_Handler:
B Default_Handler
.type HardFault_Handler, %function
HardFault_Handler:
B Default_Handler
.type MemManage_Handler, %function
MemManage_Handler:
B Default_Handler
.type BusFault_Handler, %function
BusFault_Handler:
B Default_Handler
.type UsageFault_Handler, %function
UsageFault_Handler:
B Default_Handler
.type SVC_Handler, %function
SVC_Handler:
B Default_Handler
.type DebugMon_Handler, %function
DebugMon_Handler:
B Default_Handler
.type PendSV_Handler, %function
PendSV_Handler:
B Default_Handler
.type SysTick_Handler, %function
SysTick_Handler:
B Default_Handler
/* External interrupt handlers */
.type WWDG_IRQHandler, %function
WWDG_IRQHandler:
B Default_Handler
.type PVD_IRQHandler, %function
PVD_IRQHandler:
B Default_Handler
.type TAMP_STAMP_IRQHandler, %function
TAMP_STAMP_IRQHandler:
B Default_Handler
.type RTC_WKUP_IRQHandler, %function
RTC_WKUP_IRQHandler:
B Default_Handler
.type FLASH_IRQHandler, %function
FLASH_IRQHandler:
B Default_Handler
.type RCC_IRQHandler, %function
RCC_IRQHandler:
B Default_Handler
.type EXTI0_IRQHandler, %function
EXTI0_IRQHandler:
B Default_Handler
.type EXTI1_IRQHandler, %function
EXTI1_IRQHandler:
B Default_Handler
.type EXTI2_IRQHandler, %function
EXTI2_IRQHandler:
B Default_Handler
.type EXTI3_IRQHandler, %function
EXTI3_IRQHandler:
B Default_Handler
.type EXTI4_IRQHandler, %function
EXTI4_IRQHandler:
B Default_Handler
.type DMA1_Channel1_IRQHandler, %function
DMA1_Channel1_IRQHandler:
B Default_Handler
.type DMA1_Channel2_IRQHandler, %function
DMA1_Channel2_IRQHandler:
B Default_Handler
.type DMA1_Channel3_IRQHandler, %function
DMA1_Channel3_IRQHandler:
B Default_Handler
.type DMA1_Channel4_IRQHandler, %function
DMA1_Channel4_IRQHandler:
B Default_Handler
.type DMA1_Channel5_IRQHandler, %function
DMA1_Channel5_IRQHandler:
B Default_Handler
.type DMA1_Channel6_IRQHandler, %function
DMA1_Channel6_IRQHandler:
B Default_Handler
.type DMA1_Channel7_IRQHandler, %function
DMA1_Channel7_IRQHandler:
B Default_Handler
.type ADC1_2_IRQHandler, %function
ADC1_2_IRQHandler:
B Default_Handler
.type USB_HP_CAN1_TX_IRQHandler, %function
USB_HP_CAN1_TX_IRQHandler:
B Default_Handler
.type USB_LP_CAN1_RX0_IRQHandler, %function
USB_LP_CAN1_RX0_IRQHandler:
B Default_Handler
.type CAN1_RX1_IRQHandler, %function
CAN1_RX1_IRQHandler:
B Default_Handler
.type CAN1_SCE_IRQHandler, %function
CAN1_SCE_IRQHandler:
B Default_Handler
.type EXTI9_5_IRQHandler, %function
EXTI9_5_IRQHandler:
B Default_Handler
.type TIM1_BRK_TIM9_IRQHandler, %function
TIM1_BRK_TIM9_IRQHandler:
B Default_Handler
.type TIM1_UP_TIM10_IRQHandler, %function
TIM1_UP_TIM10_IRQHandler:
B Default_Handler
.type TIM1_TRG_COM_TIM11_IRQHandler, %function
TIM1_TRG_COM_TIM11_IRQHandler:
B Default_Handler
.type TIM1_CC_IRQHandler, %function
TIM1_CC_IRQHandler:
B Default_Handler
.type TIM2_IRQHandler, %function
TIM2_IRQHandler:
B Default_Handler
.type TIM3_IRQHandler, %function
TIM3_IRQHandler:
B Default_Handler
.type TIM4_IRQHandler, %function
TIM4_IRQHandler:
B Default_Handler
.type I2C1_EV_IRQHandler, %function
I2C1_EV_IRQHandler:
B Default_Handler
.type I2C1_ER_IRQHandler, %function
I2C1_ER_IRQHandler:
B Default_Handler
.type I2C2_EV_IRQHandler, %function
I2C2_EV_IRQHandler:
B Default_Handler
.type I2C2_ER_IRQHandler, %function
I2C2_ER_IRQHandler:
B Default_Handler
.type SPI1_IRQHandler, %function
SPI1_IRQHandler:
B Default_Handler
.type SPI2_IRQHandler, %function
SPI2_IRQHandler:
B Default_Handler
.type USART1_IRQHandler, %function
USART1_IRQHandler:
B Default_Handler
.type USART2_IRQHandler, %function
USART2_IRQHandler:
B Default_Handler
.type USART3_IRQHandler, %function
USART3_IRQHandler:
B Default_Handler
.type EXTI15_10_IRQHandler, %function
EXTI15_10_IRQHandler:
B Default_Handler
.type RTC_Alarm_IRQHandler, %function
RTC_Alarm_IRQHandler:
B Default_Handler
.type OTG_FS_WKUP_IRQHandler, %function
OTG_FS_WKUP_IRQHandler:
B Default_Handler
.type TIM8_BRK_TIM12_IRQHandler, %function
TIM8_BRK_TIM12_IRQHandler:
B Default_Handler
.type TIM8_UP_TIM13_IRQHandler, %function
TIM8_UP_TIM13_IRQHandler:
B Default_Handler
.type TIM8_TRG_COM_TIM14_IRQHandler, %function
TIM8_TRG_COM_TIM14_IRQHandler:
B Default_Handler
.type TIM8_CC_IRQHandler, %function
TIM8_CC_IRQHandler:
B Default_Handler
.type ADC3_IRQHandler, %function
ADC3_IRQHandler:
B Default_Handler
.type FSMC_IRQHandler, %function
FSMC_IRQHandler:
B Default_Handler
.type SDIO_IRQHandler, %function
SDIO_IRQHandler:
B Default_Handler
.type TIM5_IRQHandler, %function
TIM5_IRQHandler:
B Default_Handler
.type SPI3_IRQHandler, %function
SPI3_IRQHandler:
B Default_Handler
.type UART4_IRQHandler, %function
UART4_IRQHandler:
B Default_Handler
.type UART5_IRQHandler, %function
UART5_IRQHandler:
B Default_Handler
.type TIM6_DAC_IRQHandler, %function
TIM6_DAC_IRQHandler:
B Default_Handler
.type TIM7_IRQHandler, %function
TIM7_IRQHandler:
B Default_Handler
.type DMA2_Channel1_IRQHandler, %function
DMA2_Channel1_IRQHandler:
B Default_Handler
.type DMA2_Channel2_IRQHandler, %function
DMA2_Channel2_IRQHandler:
B Default_Handler
.type DMA2_Channel3_IRQHandler, %function
DMA2_Channel3_IRQHandler:
B Default_Handler
.type DMA2_Channel4_5_IRQHandler, %function
DMA2_Channel4_5_IRQHandler:
B Default_Handler
.size Reset_Handler, . - Reset_Handler |