;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;STM32 LED 单向跑马灯实验;;8个 LED 接在 PE 口( PE[0..7] ) ;;2011-5-3 by 追梦;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BIT6 EQU 0X00000040 GPIOE EQU 0X40011800 ;GPIOE 地址 GPIOE_CRL EQU 0X40011800 ; 低配置寄存器 GPIOE_CRH EQU 0X40011804 ; 高配置寄存器 GPIOE_ODR EQU 0X4001180C ; 输出,偏移地址 0Ch GPIOE_BSRR EQU 0X40011810 ; 低置位,高清除偏移地址 10h GPIOE_BRR EQU 0X40011814 ; 清除,偏移地址 14h IOPEEN EQU BIT6 ;GPIOE 使能位 RCC_APB2ENR EQU 0X40021018 STACK_TOP EQU 0X20002000 AREA RESET,CODE,READONLY DCD STACK_TOP ;MSP 主堆栈指针 DCD START ; 复位, PC 初始值 ENTRY ; 指示开始执行 START LDR R1,=RCC_APB2ENR LDR R0,[R1] ;读 LDR R2,=IOPEEN ORR R0,R2 ;改 STR R0,[R1] ; 写,使能 GPIOE 时钟;PE[0..7] 8 个引脚均设置成推挽式输出 LDR R0,=0x33333333 LDR R1,=GPIOE_CRL STR R0,[R1] LDR R1,=GPIOE_ODR LDR R0,=0X7F ; 初始时最高位点亮 LOOP STR R0,[R1] PUSH {R0} MOV R0,#300 DELAY_NMS ; 延时 300ms POP {R0} ByteRor1 ; 状态位右循环移一位 B LOOP ; 延时 R0 ( us) ,误差 ; 延时超过 100us 时,误差 小于 % DELAY_NUS SUB R0,#1 NOP NOP NOP CMP R0,#0 BNE
STM32汇编语言 跑马灯 来自淘豆网www.taodocs.com转载请标明出处.