12.21

.text 
.global _start
_start: 

@============led1========================
    @设置GPIOE时钟使能  RCC_MP_AHB4ENSETR[4]->1   0X50000A28

    LDR R0,=0X50000A28  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    ORR R1,R1,#(0x1<<4)  @将第4位设置为1
    STR R1,[R0] @将修改后的值写回去

    @设置PE10为输出  GPIOE_MODER[21:20]->01   0X50006000

    LDR R0,=0X50006000  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x3<<20)  @将第[21:20]位设置为01
    ORR R1,R1,#(0x1<<20)
    STR R1,[R0] @将修改后的值写回去

    @设置PE10为推挽输出 GPIOE_OTYPER[10]->0  0X50006004

    LDR R0,=0X50006004  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x1<<10)  @将第[10]位设置为0
    STR R1,[R0] @将修改后的值写回去

    @设置PE10为低速输出 GPIOE_OSPEEDR[21:20]->00  0x50006008

    LDR R0,=0X50006008  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x3<<20)  @将第[21:20]位设置为01
    STR R1,[R0] @将修改后的值写回去

    @设置PE10输出时无上拉下拉电阻  GPIOE_PUPDR[21:20]->00  0X5000600C

    LDR R0,=0X5000600C  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x3<<20)  @将第[21:20]位设置为00
    STR R1,[R0] @将修改后的值写回去




@============led2========================
    @设置GPIOF时钟使能  RCC_MP_AHB4ENSETR[5]->1   0X50000A28

    LDR R0,=0X50000A28  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    ORR R1,R1,#(0x1<<5)  @将第5位设置为1
    STR R1,[R0] @将修改后的值写回去

    @设置PF10为输出  GPIOE_MODER[21:20]->01   0X50007000

    LDR R0,=0X50007000  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x3<<20)  @将第[21:20]位设置为01
    ORR R1,R1,#(0x1<<20)
    STR R1,[R0] @将修改后的值写回去

    @设置PF10为推挽输出 GPIOE_OTYPER[10]->0  0X50007004

    LDR R0,=0X50007004  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x1<<10)  @将第[10]位设置为0
    STR R1,[R0] @将修改后的值写回去

    @设置PF10为低速输出 GPIOE_OSPEEDR[21:20]->00  0x50007008

    LDR R0,=0X50007008  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x3<<20)  @将第[21:20]位设置为01
    STR R1,[R0] @将修改后的值写回去

    @设置PF10输出时无上拉下拉电阻  GPIOE_PUPDR[21:20]->00  0X5000700C

    LDR R0,=0X5000700C  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x3<<20)  @将第[21:20]位设置为00
    STR R1,[R0] @将修改后的值写回去



@============led3========================
    @设置GPIOE时钟使能  RCC_MP_AHB4ENSETR[4]->1   0X50000A28

    LDR R0,=0X50000A28  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    ORR R1,R1,#(0x1<<4)  @将第4位设置为1
    STR R1,[R0] @将修改后的值写回去

    @设置PE8为输出  GPIOE_MODER[17:16]->01   0X50006000

    LDR R0,=0X50006000  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x3<<16)  @将第[17:16]位设置为01
    ORR R1,R1,#(0x1<<16)
    STR R1,[R0] @将修改后的值写回去

    @设置PE8为推挽输出 GPIOE_OTYPER[8]->0  0X50006004

    LDR R0,=0X50006004  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x1<<8)  @将第[8]位设置为0
    STR R1,[R0] @将修改后的值写回去

    @设置PE8为低速输出 GPIOE_OSPEEDR[21:20]->00  0x50006008

    LDR R0,=0X50006008  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x3<<20)  @将第[21:20]位设置为01
    STR R1,[R0] @将修改后的值写回去

    @设置PE8输出时无上拉下拉电阻  GPIOE_PUPDR[17:16]->00  0X5000600C

    LDR R0,=0X5000600C  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x3<<16)  @将第[17:16]位设置为00
    STR R1,[R0] @将修改后的值写回去


flash:
   bl led1_on  @灯亮
   bl delay  @延时
   bl led1_off  @灯灭
   bl delay



   bl led2_on  @灯亮
   bl delay  @延时
   bl led2_off  @灯灭
   bl delay

   bl led3_on  @灯亮
   bl delay  @延时
   bl led3_off  @灯灭
   bl delay
 b flash

led1_on:
     @设置PE10输出高电平  GPIOE_ODR[10]->1   0x50006014

    LDR R0,=0X50006014  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    ORR R1,R1,#(0x1<<10)  @将第[10]位设置为1
    STR R1,[R0] @将修改后的值写回去
    mov pc,lr

led1_off:
     @设置PE10输出高电平  GPIOE_ODR[10]->0   0x50006014
    LDR R0,=0X50006014  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x1<<10)  @将第[10]位设置为0
    STR R1,[R0] @将修改后的值写回去
    mov pc,lr

led2_on:
     @设置PF10输出高电平  GPIOE_ODR[10]->1   0x50007014

    LDR R0,=0X50007014  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    ORR R1,R1,#(0x1<<10)  @将第[10]位设置为1
    STR R1,[R0] @将修改后的值写回去
    mov pc,lr

led2_off:
     @设置PF10输出高电平  GPIOE_ODR[10]->0   0x50007014
    LDR R0,=0X50007014  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x1<<10)  @将第[10]位设置为0
    STR R1,[R0] @将修改后的值写回去
    mov pc,lr



 led3_on:
     @设置PE8输出高电平  GPIOE_ODR[8]->1   0x50006014

    LDR R0,=0X50006014  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    ORR R1,R1,#(0x1<<8)  @将第[10]位设置为1
    STR R1,[R0] @将修改后的值写回去
    mov pc,lr

led3_off:
     @设置PE8输出高电平  GPIOE_ODR[8]->0   0x50006014
    LDR R0,=0X50006014  @指定寄存器地址
    LDR R1,[R0]  @将寄存器数值取出来放在R1中
    BIC R1,R1,#(0x1<<8)  @将第[10]位设置为0
    STR R1,[R0] @将修改后的值写回去
    mov pc,lr


delay:
    LDR  r3,=0x10000000
mm:
    cmp r3,#0
    subne r3,r3,#1
    bne mm
    mov pc,lr


.end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值