汇编代码:
.text
.global _start
_start:
@RCC使能GPIOE RCC_MP_AHB4ENSETR[4]->1
LDR R0,=0X50000A28
LDR R1,[R0]
ORR R1,R1,#(0X3<<4)
ORR R1,R1,#0X10@PB
STR R1,[R0]
@设置PE10/8为输出模式 GPIOE_MODER[20:21]->01
LDR R0,=0X50006000
LDR R1,[R0]
@10
BIC R1,R1,#(0X3<<20)
ORR R1,R1,#(0X1<<20)
@8
BIC R1,R1,#(0X3<<16)
ORR R1,R1,#(0X1<<16)
@9
BIC R1,R1,#(0X3<<18)
ORR R1,R1,#(0X1<<18)
STR R1,[R0]
@设置PF10为输出模式 GPIOE_MODER[20:21]->01
LDR R0,=0X50007000
LDR R1,[R0]
@10
BIC R1,R1,#(0X3<<20)
ORR R1,R1,#(0X1<<20)
@6
BIC R1,R1,#(0X3<<12)
ORR R1,R1,#(0X1<<12)
STR R1,[R0]
@设置PE10为推挽输出 GPIOE_OTYPER[10]->0
LDR R0,=0X50006004
LDR R1,[R0]
@10
BIC R1,R1,#(0X1<<10)
@8
BIC R1,R1,#(0X1<<8)
@9
BIC R1,R1,#(0X1<<9)
STR R1,[R0]
@设置PF10为推挽输出 GPIOE_OTYPER[10]->0
LDR R0,=0X50007004
LDR R1,[R0]
@10
BIC R1,R1,#(0X1<<10)
@6
BIC R1,R1,#(0X1<<6)
STR R1,[R0]
@设置PE10为低速输出 GPIOE_OSPEEDR[20:21]->00
LDR R0,=0X50006008
LDR R1,[R0]
@10
BIC R1,R1,#(0X1<<20)
@8
BIC R1,R1,#(0X1<<16)
@9
BIC R1,R1,#(0X1<<18)
STR R1,[R0]
@设置PF10为低速输出 GPIOE_OSPEEDR[20:21]->00
LDR R0,=0X50007008
LDR R1,[R0]
@10
BIC R1,R1,#(0X3<<20)
@6
BIC R1,R1,#(0X1<<12)
STR R1,[R0]
@设置PE10为输出无上下拉 GPIOE_PUPDR[20:21]->00
LDR R0,=0X5000600C
LDR R1,[R0]
@10
BIC R1,R1,#(0X1<<20)
@8
BIC R1,R1,#(0X1<<16)
@9
BIC R1,R1,#(0X1<<18)
STR R1,[R0]
@设置PF10为输出无上下拉 GPIOE_PUPDR[20:21]->00
LDR R0,=0X5000700C
LDR R1,[R0]
@10
BIC R1,R1,#(0X3<<20)
@6
BIC R1,R1,#(0X1<<12)
STR R1,[R0]
@闪烁
loop:
BL wind_on
BL led1_on
bl delay
BL led1_off
BL led2_on
bl delay
BL led2_off
BL led3_on
bl delay
BL led3_off
BL power_on
bl delay
BL power_off
BL wind_off
b loop
@LED1亮
led1_on:
LDR R0,=0x50006014
LDR R1,[R0]
ORR R1,R1,#(0x1<<10)
STR R1,[R0]
mov pc,lr
@LED1灭
led1_off:
LDR R0,=0x50006014
LDR R1,[R0]
BIC R1,R1,#(0x1<<10)
STR R1,[R0]
mov pc,lr
@LED2亮
led2_on:
LDR R0,=0x50007014
LDR R1,[R0]
ORR R1,R1,#(0x1<<10)
STR R1,[R0]
mov pc,lr
@LED2灭
led2_off:
LDR R0,=0x50007014
LDR R1,[R0]
BIC R1,R1,#(0x1<<10)
STR R1,[R0]
mov pc,lr
@LED3亮
led3_on:
LDR R0,=0x50006014
LDR R1,[R0]
ORR R1,R1,#(0x1<<8)
STR R1,[R0]
mov pc,lr
@LED3灭
led3_off:
LDR R0,=0x50006014
LDR R1,[R0]
BIC R1,R1,#(0x1<<8)
STR R1,[R0]
mov pc,lr
@POWER
power_on:
LDR R0,=0x50007014
LDR R1,[R0]
ORR R1,R1,#(0x1<<6)
STR R1,[R0]
mov pc,lr
power_off:
LDR R0,=0x50007014
LDR R1,[R0]
BIC R1,R1,#(0x1<<6)
STR R1,[R0]
mov pc,lr
@WIND
wind_on:
LDR R0,=0x50006014
LDR R1,[R0]
ORR R1,R1,#(0x1<<9)
STR R1,[R0]
mov pc,lr
@LED1灭
wind_off:
LDR R0,=0x50006014
LDR R1,[R0]
BIC R1,R1,#(0x1<<9)
STR R1,[R0]
mov pc,lr
@封装汇编的延时函数
delay:
LDR R1,=0X10000000
mm:
cmp R1,#0
SUBNE R1,R1,#1
BNE mm
mov pc,lr
.end
现象:
xianxiang