ARM Day5

三盏灯流水

.text 
.global _start
_start: 
@1.设置GPIOE寄存器的时钟使能  RCC_MP_AHB4ENSETR[4]->1     0x50000a28
LDR R0,=0X50000A28
LDR R1,[R0]  @从r0为起始地址的4字节数据取出放在R1
ORR R1,R1,#(0x1<<4)  @第4位设置为1
STR R1,[R0]  @写回

@2.设置PE10和PE8管脚为输出模式 GPIOE_MODER[17:16]->1  GPIOE_MODER[21:20]->01   0x50006000
LDR R0,=0x50006000
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21:20]清0
ORR R1,R1,#(0X1<<20) @设置
BIC R1,R1,#(0x3<<16)@[21:20]清0
ORR R1,R1,#(0X1<<16) @设置
STR R1,[R0] 

@3.设置PE10和PE8管脚为推挽输出 GPIOE_OTYPER[8]->0  GPIOE_OTYPER[10]->0   0X50006004
LDR R0,=0X50006004
LDR R1,[R0]
BIC R1,R1,#(0X1<<10)
BIC R1,R1,#(0X1<<8)
STR R1,[R0] 


@4.设置PE10和PE8管脚为低速输出   GPIOE_OSPEEDR[17:16]->00 GPIOE_OSPEEDR[21:20]->00  0X50006008
LDR R0,=0x50006008
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21:20]清0
BIC R1,R1,#(0x3<<16)@[17:16]清0
STR R1,[R0] 

@5.设置PE10和PE8管脚输出时没有上拉下拉电阻  GPIOE_OSPEEDR[17:16]->00 GPIOE_PUPDR[21:20]->00  0X5000600C
LDR R0,=0x5000600c
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21:20]清0
BIC R1,R1,#(0x3<<16)@[17:16]清0
STR R1,[R0] 

@1.设置GPIOF寄存器的时钟使能  RCC_MP_AHB4ENSETR[5]->1     0x50000a28
LDR R0,=0X50000A28
LDR R1,[R0]  @从r0为起始地址的4字节数据取出放在R1
ORR R1,R1,#(0x1<<5)  @第5位设置为1
STR R1,[R0]  @写回

@2.设置PF10管脚为输出模式  GPIOF_MODER[21:20]->01   0x50006000
LDR R0,=0x50007000
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21L20]清0
ORR R1,R1,#(0X1<<20) @设置
STR R1,[R0] 

@3.设置PF10管脚为推挽输出  GPIOE_OTYPER[10]->0   0X50006004
LDR R0,=0X50007004
LDR R1,[R0]
BIC R1,R1,#(0X1<<10)
STR R1,[R0] 


@4.设置PF10管脚为低速输出   GPIOE_OSPEEDR[21:20]->00  0X50006008
LDR R0,=0x50007008
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21L20]清0
STR R1,[R0] 

@5.设置PF10管脚输出时没有上拉下拉电阻  GPIOE_PUPDR[21:20]->00  0X5000600C
LDR R0,=0x5000700c
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21L20]清0
STR R1,[R0] 


@  6.PE10输出高低电平      GPIOE_ODR[10]->1(高电平)  0(低电平)    0X50006014
@LED1亮灭交替
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]
	@LED2亮
    LDR R0,=0X50007014
    LDR R1,[R0]
    ORR R1,R1,#(0x1<<10)
    STR R1,[R0]
    BL delay
	@LED2灭
    LDR R0,=0X50007014
    LDR R1,[R0]
    BIC R1,R1,#(0x1<<10)
    STR R1,[R0]
	@LED3亮
    LDR R0,=0X50006014
    LDR R1,[R0]
    ORR R1,R1,#(0x1<<8)
    STR R1,[R0]
    BL delay
	@LED3灭
    LDR R0,=0X50006014
    LDR R1,[R0]
    BIC R1,R1,#(0x1<<8)
    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开发)