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

思维导图:

模拟面试题:

相关推荐
qq_386322699 分钟前
华为网路设备学习-33(BGP协议 八)BGP路由 选路规则
学习·华为
xy_recording27 分钟前
学习番外:Docker和K8S理解
学习·docker·kubernetes
鱼嘻41 分钟前
西嘎嘎学习 - C++ 继承 - Day 10
开发语言·c++·学习·算法
Hello_Embed1 小时前
STM32HAL 快速入门(二十四):I2C 编程(一)—— 从 OLED 显示初识 I2C 协议
c语言·stm32·单片机·嵌入式硬件·学习
凯尔萨厮1 小时前
Java学习笔记四(继承)
java·笔记·学习
ホロHoro1 小时前
学习笔记:Javascript(5)——事件监听(用户交互)
javascript·笔记·学习
爱喝水的鱼丶2 小时前
SAP-MM:SAP核心组织单元:工厂(Plant)全面学习指南及配置图解
学习·sap·abap·配置·工厂·mm模块
励志不掉头发的内向程序员2 小时前
STL库——AVL树
开发语言·c++·学习
晨非辰4 小时前
#C语言——刷题攻略:牛客编程入门训练(十一):攻克 循环控制(三),轻松拿捏!
c语言·开发语言·经验分享·学习·visual studio
xiaoxiaoxiaolll5 小时前
期刊速递 | 《Light Sci. Appl.》超宽带光热电机理研究,推动碳纳米管传感器在制药质控中的实际应用
人工智能·学习