我想要在STM3251RC 上用汇编来写 流水灯,我写了以下的代码。 但是, 不知道怎么可以让她来回在LED 灯排(10个 LED) 上跑动
这是我写的一些代码:
- AREA mycode, CODE, READONLY
- EXPORT __main
- PERIPH_BASE_ONE EQU 0x40000000
- Delay PROC
- push {r1}
- ldr r1, =0x60000 ;initial value for loop counter
- again NOP ;execute two no-operation instructions
- NOP
- subs r1, #1
- bne again
- pop {r1}
- bx lr
- ENDP
- pb4_initPROC
- LDRr0, =PERIPH_BASE_ONE
- ADD r0, #0x20000 ;AHBPERIPH_BASE
- ADD r0, #0x3800;RCC_BASE
- LDRr1, [r0,#0x1C] ;RCC->AHBENR
- ORR r1,#2
- STRr1, [r0,#0x1C]
- LDRr0, =0x40000000 ;PERIPH_BASE
- ADD r0, #0x20000 ;AHBPERIPH_BASE
- ADD r0, #0x0400;GPIOB_BASE
- ;0xF00000FF
- LDR r1, [r0,#0]
- ;AND r1, #0xFFFFFCFF ;GPIOB->MODER &= ~(0x00000300)
- ORRr1, #0x00000100;GPIOB->MODER |= (0x00000100)
- STRr1, [r0,#0]
- LDRH r1, [r0,#4];GPIOB->OTYPER
- ANDr1,#0xFFFFFFDF
- STRH r1, [r0,#4]
- LDR r1, [r0,#8];GPIOB->OSPEEDR
- ;ANDr1,#0xFFFFFCFF
- ORR r1, #0x00000100
- STR r1, [r0,#8]
- LDR r1, [r0,#0x0C];GPIOB->PUPDR
- ;ANDr1,#0xFFFFFCFF
- STR r1, [r0,#0x0C]
- bxlr
- ENDP
- __mainPROC
- BLpb4_init
- LDRr0, =0x40000000 ;PERIPH_BASE
- ADD r0, #0x20000 ;AHBPERIPH_BASE
- ADD r0, #0x0400;GPIOB_BASE
- loop
- LDR r1, =0x10
- STRH r1, [r0,#0x18]
- BL Delay
- STRH r1,[r0,#0x1A]
- BL Delay
- Bloop
- ENDP
- END
复制代码
|