Files
StepMotorCtrl/libs/device/startup_py32md530.s
T
hm b49c9ab0c6 Initial commit: PY32MD530H28U7TR步进电机控制器项目
完整实现了以下模块:
- 系统数据总线(sys_data_bus)模块间通信
- UART/USART/LPUART驱动 + RS485半双工
- I2C驱动(AS5600角度传感器 + AT24C02 EEPROM)
- Modbus RTU从站协议
- 步进电机微步进控制(正弦/余弦换相+S曲线加减速)
- 到位开关驱动(DI_MIN/DI_MAX)
- PGA+ADC电流检测
- 系统监控任务(内存/串口/传感器/任务状态)
- LED/Key外设驱动
- 基于CMake + arm-none-eabi-gcc构建系统
2026-05-11 19:55:43 +08:00

262 lines
4.1 KiB
ArmAsm

.syntax unified
.cpu cortex-m0plus
.fpu softvfp
.thumb
.global g_pfnVectors
.global Default_Handler
.word _sidata
.word _sdata
.word _edata
.word _sbss
.word _ebss
.equ BootRAM, 0xF108F85F
.macro def_irq_handler handler_name
.weak \handler_name
.set \handler_name, Default_Handler
.endm
.section .text.Default_Handler,"ax",%progbits
Default_Handler:
b Default_Handler
.section .text.Reset_Handler,"ax",%progbits
.global Reset_Handler
Reset_Handler:
ldr r0, =_estack
mov sp, r0
ldr r1, =_sbss
ldr r2, =_ebss
movs r3, #0
b FillZeroLoop
FillZero:
str r3, [r1]
adds r1, r1, #4
FillZeroLoop:
cmp r1, r2
bcc FillZero
ldr r0, =_sidata
ldr r1, =_sdata
ldr r2, =_edata
b CopyDataLoop
CopyData:
ldr r3, [r0]
str r3, [r1]
adds r0, r0, #4
adds r1, r1, #4
CopyDataLoop:
cmp r1, r2
bcc CopyData
bl SystemInit
bl main
LoopForever:
b LoopForever
def_irq_handler NMI_Handler
def_irq_handler HardFault_Handler
def_irq_handler SVCall_Handler
def_irq_handler PendSV_Handler
def_irq_handler SysTick_Handler
def_irq_handler WWDG_IRQHandler
def_irq_handler RCC_IRQHandler
def_irq_handler EXTI0_1_IRQHandler
def_irq_handler EXTI2_3_IRQHandler
def_irq_handler EXTI4_15_IRQHandler
def_irq_handler DMA1_Ch1_IRQHandler
def_irq_handler DMA1_Ch2_3_IRQHandler
def_irq_handler DMA1_Ch4_5_IRQHandler
def_irq_handler ADC1_IRQHandler
def_irq_handler TIM1_BRK_IRQHandler
def_irq_handler TIM1_UP_IRQHandler
def_irq_handler TIM1_TRG_LVL_IRQHandler
def_irq_handler TIM1_CC_IRQHandler
def_irq_handler TIM3_IRQHandler
def_irq_handler TIM14_IRQHandler
def_irq_handler TIM16_IRQHandler
def_irq_handler TIM17_IRQHandler
def_irq_handler I2C1_IRQHandler
def_irq_handler SPI1_IRQHandler
def_irq_handler USART1_IRQHandler
def_irq_handler UART1_IRQHandler
def_irq_handler LPUART1_IRQHandler
.section .isr_vector,"a",%progbits
.type g_pfnVectors, %object
.size g_pfnVectors, .-g_pfnVectors
g_pfnVectors:
.word _estack
.word Reset_Handler
.word NMI_Handler
.word HardFault_Handler
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word SVCall_Handler
.word 0
.word 0
.word PendSV_Handler
.word SysTick_Handler
.word WWDG_IRQHandler
.word RCC_IRQHandler
.word EXTI0_1_IRQHandler
.word EXTI2_3_IRQHandler
.word EXTI4_15_IRQHandler
.word 0
.word 0
.word DMA1_Ch1_IRQHandler
.word DMA1_Ch2_3_IRQHandler
.word DMA1_Ch4_5_IRQHandler
.word ADC1_IRQHandler
.word TIM1_BRK_IRQHandler
.word TIM1_UP_IRQHandler
.word TIM1_TRG_LVL_IRQHandler
.word TIM1_CC_IRQHandler
.word TIM3_IRQHandler
.word 0
.word TIM14_IRQHandler
.word 0
.word TIM16_IRQHandler
.word TIM17_IRQHandler
.word I2C1_IRQHandler
.word SPI1_IRQHandler
.word USART1_IRQHandler
.word 0
.word 0
.word UART1_IRQHandler
.word LPUART1_IRQHandler
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0