LED1、2、3流水灯

.text 
.global _start
_start: 
 
@1.设置GPIOE和GPIOF寄存器的时钟使能
@GPIOE
LDR R0,=0x50000A28
LDR R1,[R0]
ORR R1,R1,#(0x1<<4)
STR R1,[R0]
 
@GPIOF
LDR R0,=0x50000A28
LDR R1,[R0]
ORR R1,R1,#(0x1<<5)
STR R1,[R0]
 
@2.设置PE10,PE8,PF10管脚为输出模式
@PE10
LDR R0,=0x50006000
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)
ORR R1,R1,#(0x1<<20)
STR R1,[R0]
 
@PE8
LDR R0,=0x50006000
LDR R1,[R0]
BIC R1,R1,#(0x3<<16)
ORR R1,R1,#(0x1<<16)
STR R1,[R0]
 
@PF10
LDR R0,=0x50007000
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)
ORR R1,R1,#(0x1<<20)
STR R1,[R0]
 
@3.设置PE10,PE8,PF10管脚为推挽输出
@PE10
LDR R0,=0x50006004
LDR R1,[R0]
BIC R1,R1,#(0x1<<10)
STR R1,[R0]
 
@PE8
LDR R0,=0x50006004
LDR R1,[R0]
BIC R1,R1,#(0x1<<8)
STR R1,[R0]
 
@PF10
LDR R0,=0x50007004
LDR R1,[R0]
BIC R1,R1,#(0x1<<10)
STR R1,[R0]
 
@4.设置PE10,PE8,PF10管脚为低速输出
@PE10
LDR R0,=0x50006008
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)
STR R1,[R0]
 
@PE8
LDR R0,=0x50006008
LDR R1,[R0]
BIC R1,R1,#(0x3<<16)
STR R1,[R0]
 
@PF10
LDR R0,=0x50007008
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)
STR R1,[R0]
 
@5.设置PE10,PE8,PF10管脚输出时没有上拉下拉电阻
@PE10
LDR R0,=0x5000600C
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)
STR R1,[R0]
 
@PE8
LDR R0,=0x5000600C
LDR R1,[R0]
BIC R1,R1,#(0x3<<16)
STR R1,[R0]
 
@PF10
LDR R0,=0x5000700C
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)
STR R1,[R0]
 
@6.LED1,LED2,LED3亮灭交替设置
loop:
	@LED1亮
	LDR R0,=0x50006014
	LDR R1,[R0]
	ORR R1,R1,#(0x1<<10)
	STR R1,[R0]
	BL delay
	@LED1灭
	LDR R0,=0x50006014
	LDR R1,[R0]
	BIC R1,R1,#(0x1<<10)
	STR R1,[R0]
	BL delay
 
	@LED2亮
	LDR R0,=0x50006014
	LDR R1,[R0]
	ORR R1,R1,#(0x1<<8)
	STR R1,[R0]
	BL delay
	@LED2灭
	LDR R0,=0x50006014
	LDR R1,[R0]
	BIC R1,R1,#(0x1<<8)
	STR R1,[R0]
	BL delay
 
	@LED3亮
	LDR R0,=0x50007014
	LDR R1,[R0]
	ORR R1,R1,#(0x1<<10)
	STR R1,[R0]
	BL delay
	@LED3灭
	LDR R0,=0x50007014
	LDR R1,[R0]
	BIC R1,R1,#(0x1<<10)
	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
 

你可能感兴趣的:(arm开发,c语言)