华清远见嵌入式学习——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

思维导图:

模拟面试题:

相关推荐
lingggggaaaa3 分钟前
小迪安全v2023学习笔记(六十一讲)—— 持续更新中
笔记·学习·安全·web安全·网络安全·反序列化
不太可爱的叶某人1 小时前
【学习笔记】Java并发编程的艺术——第6章 Java并发容器和框架
java·笔记·学习
yi.Ist2 小时前
图论——Djikstra最短路
数据结构·学习·算法·图论·好难
诗书画唱5 小时前
学习笔记与效率提升指南:编程、记忆与面试备考
笔记·学习·面试
似乎很简单5 小时前
【opencv-Python学习笔记(5):几何变换】
笔记·opencv·学习
丁满与彭彭9 小时前
嵌入式学习笔记--MCU阶段--DAY12实时操作系统rt_thread1
笔记·学习
诗书画唱11 小时前
我的学习认知、高效方法与知识积累笔记
笔记·学习
小大力11 小时前
简单的 HTTPS 学习
网络协议·学习·https
我们从未走散12 小时前
设计模式学习笔记-----单例模式
java·笔记·学习·单例模式·设计模式
宇寒风暖16 小时前
@(AJAX)
前端·javascript·笔记·学习·ajax