汇编代码:
- .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