led1、led2、led3流水灯点亮
.text
.global _start
_start:
@点量led灯
@配置led1、led3
@设置模式寄存器0x50006000的第[21:20][17:16]位设置为0b01输出模式
ldr r0,=0x50006000
ldr r1,[r0]
bic r1,#(0x33<<16)
orr r1,#(0x11<<16)
str r1,[r0]
@otype[10][8]寄存器设置为0b0,设置为推完输出0x50006004
ldr r0,=0x50006004
ldr r1,[r0]
bic r1,#(0x5<<8)
str r1,[r0]
@ospeed[21:20][17:16]位设置为0b00低速模式0x50006008
ldr r0,=0x50006008
ldr r1,[r0]
bic r1,#(0x33<<16)
str r1,[r0]
@pupdr[21:20][17:16]位设置为0b00无上拉无下拉0x5000600c
ldr r0,=0x5000600c
ldr r1,[r0]
bic r1,#(0x33<<16)
str r1,[r0]
@使能外设时钟0x50000a28第4,5位设置为1
ldr r0,=0x50000a28
ldr r1,[r0]
orr r1,#(0x3<<4)
str r1,[r0]
@配置led2
@设置模式寄存器0x50007000的第[21:20]位设置为0b01输出模式
ldr r0,=0x50007000
ldr r1,[r0]
bic r1,#(0x3<<20)
orr r1,#(0x1<<20)
str r1,[r0]
@otype[10]寄存器设置为0b0,设置为推完输出0x50007004
ldr r0,=0x50007004
ldr r1,[r0]
bic r1,#(0x1<<10)
str r1,[r0]
@ospeed[21:20]位设置为0b00低速模式0x50007008
ldr r0,=0x50007008
ldr r1,[r0]
bic r1,#(0x3<<20)
str r1,[r0]
@pupdr[21:20]位设置为0b00无上拉无下拉0x5000700c
ldr r0,=0x5000700c
ldr r1,[r0]
bic r1,#(0x3<<20)
str r1,[r0]
@led1、led3 odr
ldr r0,=0x50006014
ldr r1,[r0]
@led2 odr
ldr r2,=0x50007014
ldr r3,[r2]
@初始化栈
ldr sp,=0x40004020
led1:
@led1、led2、led3流水灯
@先点亮led1
@odr[10]位设置为1时高电平,0为低电平0x50006014
orr r1,#(0x1<<10)
str r1,[r0]
bl delay
bic r1,#(0x1<<10)
str r1,[r0]
bl led2
led2:
@点亮led2
@odr[10]位设置1
orr r3,#(0x1<<10)
str r3,[r2]
bl delay
bic r3,#(0x1<<10)
str r3,[r2]
b led3
led3:
@点亮led3
@odr[8]位设置为1
orr r1,#(0x1<<8)
str r1,[r0]
bl delay
bic r1,#(0x1<<8)
str r1,[r0]
b led1
delay:
mov r3,#0x10000000
mm:
cmp r3,#0
subhi r3,r3,#0x1
bhi mm
mov pc,lr
.end