华清远见嵌入式学习——ARM——作业2

目录

作业要求:

现象:

代码:

思维导图:

模拟面试题:


作业要求:

GPIO实验------3颗LED灯的流水灯实现

现象:

代码:

bash 复制代码
.text 
.global _start
_start: 
    
    @设置GPIOEF时钟使能    0X50000A28
    LDR R0,=0X50000A28         @指定寄存器地址
    LDR R1,[R0]                @将寄存器数值取出来放在R1中
    ORR R1,R1,#(0x3<<4)        @将第4位设置为1
    STR R1,[R0]                @将修改后的值写回去
 
    /************对led1的设置************/
    @设置PE10为输出  GPIOE_MODER[21:20]->01   0X50006000
    ldr r0,=0x50006000         @指定寄存器地址
    ldr r1,[r0]                @将寄存器数值取出来放在r1中
    bic r1,r1,#(0x3<<20)      @将第20位和21位清零
    orr r1,r1,#(0x1<<20)      @将第20位和21位设置为01
    STR r1,[r0]

 
    @设置PE10为推挽输出 GPIOE_OTYPER[10]->0  0X50006004
    ldr r0,=0x50006004
    ldr r1,[r0]
    bic r1,r1,#(0x1<<10)
    STR r1,[r0]
 
    @设置PE10为低速输出 GPIOE_OSPEEDR[21:20]->00  0x50006008
    ldr r0,=0x50006008
    ldr r1,[r0]
    bic r1,r1,#(0x3<<20)
    STR r1,[r0]
 
    @设置PE10输出时无上拉下拉电阻  GPIOE_PUPDR[21:20]->00  0X5000600C
    ldr r0,=0x5000600c
    ldr r1,[r0]
    bic r1,r1,#(0x3<<20)
    STR r1,[r0]

    /************对led2的设置************/
    @设置PF10为输出  GPIOF_MODER[21:20]->01   0X50007000
    ldr r0,=0x50007000         @指定寄存器地址
    ldr r1,[r0]                @将寄存器数值取出来放在r1中
    bic r1,r1,#(0x3<<20)      @将第20位和21位清零
    orr r1,r1,#(0x1<<20)      @将第20位和21位设置为01
    STR r1,[r0]

 
    @设置PF10为推挽输出 GPIOF_OTYPER[10]->0  0X50007004
    ldr r0,=0x50007004
    ldr r1,[r0]
    bic r1,r1,#(0x1<<10)
    STR r1,[r0]
 
    @设置PF10为低速输出 GPIOF_OSPEEDR[21:20]->00  0x50007008
    ldr r0,=0x50006008
    ldr r1,[r0]
    bic r1,r1,#(0x3<<20)
    STR r1,[r0]
 
    @设置PF10输出时无上拉下拉电阻  GPIOF_PUPDR[21:20]->00  0X5000700C
    ldr r0,=0x5000700c
    ldr r1,[r0]
    bic r1,r1,#(0x3<<20)
    STR r1,[r0]


    /************对led3的设置************/ 
    @设置PE8为输出  GPIOE_MODER[17:16]->01   0X50006000
    ldr r0,=0x50006000         @指定寄存器地址
    ldr r1,[r0]                @将寄存器数值取出来放在r1中
    bic r1,r1,#(0x3<<16)      @将第20位和21位清零
    orr r1,r1,#(0x1<<16)      @将第20位和21位设置为01
    STR r1,[r0]

 
    @设置PE8为推挽输出 GPIOE_OTYPER[8]->0  0X50006004
    ldr r0,=0x50006004
    ldr r1,[r0]
    bic r1,r1,#(0x1<<8)
    STR r1,[r0]
 
    @设置PE8为低速输出 GPIOE_OSPEEDR[21:20]->00  0x50006008
    ldr r0,=0x50006008
    ldr r1,[r0]
    bic r1,r1,#(0x3<<20)
    STR r1,[r0]
 
    @设置PE8输出时无上拉下拉电阻  GPIOE_PUPDR[17:16]->00  0X5000600C
    ldr r0,=0x5000600c
    ldr r1,[r0]
    bic r1,r1,#(0x3<<16)
    STR r1,[r0]

 
flash:
    @ led1亮
    bl led1_on
    bl delay

    @ led1灭且led2亮
    bl led1_off
    bl led2_on
    bl delay

    @ led2灭且led3亮
    bl led2_off
    bl led3_on
    bl delay

    @ led3灭 再 三灯同时亮
    bl led3_off
    bl led1_on
    bl led2_on
    bl led3_on
    bl delay

    @ 三灯同时灭
    bl led1_off
    bl led2_off
    bl led3_off
    bl delay

    b flash

led1_on:
    @设置PE10输出高电平     GPIOE_ODR[10]->1    0X50006014
    ldr r0,=0x50006014
    ldr r1,[r0]
    orr r1,r1,#(0x1<<10)
    STR r1,[r0]
    mov pc,lr

led1_off:
    @设置PE10输出低电平     GPIOE_ODR[10]->0    0X50006014
    ldr r0,=0x50006014
    ldr r1,[r0]
    bic r1,r1,#(0x1<<10)
    STR r1,[r0]
    mov pc,lr

led2_on:
    @设置PF10输出高电平     GPIOF_ODR[10]->1    0X50007014
    ldr r0,=0x50007014
    ldr r1,[r0]
    orr r1,r1,#(0x1<<10)
    STR r1,[r0]
    mov pc,lr

led2_off:
    @设置PF10输出低电平     GPIOF_ODR[10]->0    0X50007014
    ldr r0,=0x50007014
    ldr r1,[r0]
    bic r1,r1,#(0x1<<10)
    STR r1,[r0]
    mov pc,lr

led3_on:
    @设置PE8输出高电平     GPIOE_ODR[8]->1    0X50006014
    ldr r0,=0x50006014
    ldr r1,[r0]
    orr r1,r1,#(0x1<<8)
    STR r1,[r0]
    mov pc,lr

led3_off:
    @设置PE8输出低电平     GPIOE_ODR[8]->0    0X50006014
    ldr r0,=0x50006014
    ldr r1,[r0]
    bic r1,r1,#(0x1<<8)
    STR r1,[r0]
    mov pc,lr

delay:
    @延时函数
    ldr r2,=0x10000000
dd:
    cmp r2,#0
    subne r2,#1
    bne dd
    mov pc,lr	

.end

思维导图:

模拟面试题:

相关推荐
降临-max5 分钟前
OpenStack创建实例一直处于创建且未分配IP问题解决
笔记·学习·openstack
老虎062730 分钟前
黑马点评学习笔记10(优惠券秒杀下单优化(分布式锁的优化,Lua脚本))
笔记·分布式·学习
递归不收敛1 小时前
config.json 完全指南:项目配置的核心实践
笔记·学习·json
shenghaide_jiahu1 小时前
字符串匹配和回文串类题目
学习·算法·动态规划
驯狼小羊羔2 小时前
学习随笔-http和https有何区别
前端·javascript·学习·http·https
风无雨2 小时前
gin学习
学习·gin
招风的黑耳3 小时前
Axure可视化大屏原型模板库:学习设计/提高效率/快速可视化
学习·axure·数据可视化·大屏设计
charlie1145141913 小时前
CSS学习笔记5:CSS 盒模型 & Margin 注意事项
前端·css·笔记·学习·教程
Radan小哥3 小时前
Docker学习笔记---day002
笔记·学习·docker
py有趣3 小时前
LeetCode算法学习之有效的字母异位词
学习·算法·leetcode