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

思维导图:

模拟面试题:

相关推荐
小弥儿9 小时前
GitHub今日热榜 | 2026-09-18:腾讯双项目上榜
学习·开源
知识分享小能手11 小时前
深度学习学习教程,从入门到精通,深度生成模型 —— 知识点详解与代码实现(20)
人工智能·深度学习·学习
m4Rk_12 小时前
【论文阅读】Agent 记忆机制(74):CompassMem——从相似度检索走向事件图上的记忆导航
论文阅读·人工智能·学习·开源·github
小李不想当小白12 小时前
DMA直接存储器存取(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·分享
2601_9499506314 小时前
练题簿在线练题全流程:从资料导入到模拟考试与错题复盘
学习·考研·小程序·刷题·小程序推荐
别动我齐刘海14 小时前
ROS2 Jazzy + C++ 实战路线——基础学习2
c++·人工智能·vscode·python·学习·机器学习·机器人
水云桐程序员16 小时前
量子力学概论,量子力学概念总结
笔记·科技·学习·量子计算
三克的油17 小时前
java-学习1
java·开发语言·学习
j7~17 小时前
【C++微服务项目开发脚手架】(接口篇一)gflags + gtest + spdlog 接口学习笔记
c++·学习·gtest·项目开发·spdlog·gflags·c++项目微服务开发脚手架
彧azz18 小时前
图的最短路径:Dijkstra与Floyd算法
数据结构·笔记·学习