.text
.global _start
_start:
@定时器使能
ldr r0,=0x50000a28 @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
orr r1,r1,#(0x3<<4) @将数据的第四、五位置1
str r1,[r0] @将数据写回
@将PE10,PF10,PE8管脚设置为输出模式
ldr r0,=0x50006000 @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
bic r1,r1,#(0x33<<16)@将16,17,20,21四位置0
orr r1,r1,#(0x11<<16)@将16,20位置1
str r1,[r0] @将数据写回
@PF10
ldr r0,=0x50007000 @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
bic r1,r1,#(0x33<<16)@将16,17,20,21四位置0
orr r1,r1,#(0x11<<16)@将16,20位置1
str r1,[r0] @将数据写回
@将PE10,PF10,PE8管脚设置为推挽输出
ldr r0,=0x50006004 @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
bic r1,r1,#(0x5<<8)@将10,8位置0
str r1,[r0] @将数据写回
@PF10
ldr r0,=0x50007004 @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
bic r1,r1,#(0x5<<8)@将10,8位置0
str r1,[r0] @将数据写回
@将PE10,PF10,PE8管脚设置为低速输出
ldr r0,=0x50006008 @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
bic r1,r1,#(0x33<<20)@将16,17,20,21两位置0
str r1,[r0] @将数据写回
@PF10
ldr r0,=0x50007008 @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
bic r1,r1,#(0x33<<20)@将16,17,20,21两位置0
str r1,[r0] @将数据写回
@将PE10,PF10,PE8管脚输出设置为没有上拉下拉电阻
ldr r0,=0x5000600c @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
bic r1,r1,#(0x33<<20)@将16,17,20,21两位置0
str r1,[r0] @将数据写回
@PF10
ldr r0,=0x5000700c @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
bic r1,r1,#(0x33<<20)@将16,17,20,21两位置0
str r1,[r0] @将数据写回
@PE10,PF10,PE8管脚输出高低电平
loop:
@LED1亮
ldr r0,=0x50006014 @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
orr r1,r1,#(0x1<<10)@将10位置0
str r1,[r0] @将数据写回
bl delay
@LED1灭
ldr r0,=0x50006014 @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
bic r1,r1,#(0x1<<10)@将10位置0
str r1,[r0] @将数据写回
bl delay
@LED2亮
ldr r0,=0x50007014 @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
orr r1,r1,#(0x1<<10)@将10位置0
str r1,[r0] @将数据写回
bl delay
@LED2灭
ldr r0,=0x50007014 @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
bic r1,r1,#(0x1<<10)@将10位置0
str r1,[r0] @将数据写回
@LED3亮
ldr r0,=0x50006014 @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
orr r1,r1,#(0x1<<8)@将8位置0
str r1,[r0] @将数据写回
bl delay
@LED3灭
ldr r0,=0x50006014 @向r0寄存器中写入起始地址
ldr r1,[r0] @从起始地址开始读4字节数据进入r1
bic r1,r1,#(0x1<<8)@将8位置0
str r1,[r0] @将数据写回
bl delay
b loop
@封装延时函数
delay:
LDR R4,=0X10000000
mm:
cmp r4,#0
subne r4,r4,#1
bne mm
mov pc,lr @程序返回
.end