b49c9ab0c6
完整实现了以下模块: - 系统数据总线(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构建系统
262 lines
4.1 KiB
ArmAsm
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
|