【嵌入式学习】ARM day04.11

一、思维导图

二、练习

实现三个灯闪烁

汇编代码

复制代码
.text 
.global _start
_start: 
            @使能GPIOE和F时钟
            LDR     r0,=0x50000A28
            LDR      r1,[R0]
            ORR     R1,R1,#(0X3<<4)
            STR      R1,[R0]

          @配置GPIOE和F的MODER寄存器
            LDR     r0,=0x50006000   @GPIOE
            LDR     R1,=0X50007000   @GPIOF
            LDR      R2,[R0]
            BIC       R2,R2,#(0X3<<20)
            BIC       R2,R2,#(0X3<<16)
            ORR     R2,R2,#(0X1<<20)
            ORR     R2,R2,#(0X1<<16)
            STR      R2,[R0]
            LDR      R2,[R1]
            BIC       R2,R2,#(0X3<<20)
            ORR     R2,R2,#(0X1<<20)
            STR      R2,[R1]

             @配置GPIOE和F的OTYPER寄存器
            LDR     r0,=0x50006004   @GPIOE
            LDR     R1,=0X50007004   @GPIOF
            LDR      R2,[R0]
            BIC       R2,R2,#(0X1<<10)
            BIC       R2,R2,#(0X1<<8)
            STR      R2,[R0]
            LDR      R2,[R1]
            BIC       R2,R2,#(0X1<<10)
            STR      R2,[R1]

          @配置GPIOE和F的OSPEEDR寄存器
            LDR     r0,=0x50006008   @GPIOE
            LDR     R1,=0X50007008   @GPIOF
            LDR      R2,[R0].text 
.global _start
_start: 
            @使能GPIOE和F时钟
            LDR     r0,=0x50000A28
            LDR      r1,[R0]
            ORR     R1,R1,#(0X3<<4)
            STR      R1,[R0]

          @配置GPIOE和F的MODER寄存器
            LDR     r0,=0x50006000   @GPIOE
            LDR     R1,=0X50007000   @GPIOF
            LDR      R2,[R0]
            BIC       R2,R2,#(0X3<<20)
            BIC       R2,R2,#(0X3<<16)
            ORR     R2,R2,#(0X1<<20)
            ORR     R2,R2,#(0X1<<16)
            STR      R2,[R0]
            LDR      R2,[R1]
            BIC       R2,R2,#(0X3<<20)
            ORR     R2,R2,#(0X1<<20)
            STR      R2,[R1]

             @配置GPIOE和F的OTYPER寄存器
            LDR     r0,=0x50006004   @GPIOE
            LDR     R1,=0X50007004   @GPIOF
            LDR      R2,[R0]
            BIC       R2,R2,#(0X1<<10)
            BIC       R2,R2,#(0X1<<8)
            STR      R2,[R0]
            BIC       R2,R2,#(0X3<<20)
            BIC       R2,R2,#(0X3<<16)
            STR      R2,[R0]
            LDR      R2,[R1]
            BIC       R2,R2,#(0X3<<20)
            STR      R2,[R1]


            @配置GPIOE和F的PUPDR寄存器
            LDR     r0,=0x5000600C   @GPIOE
            LDR     R1,=0X5000700C   @GPIOF
            LDR      R2,[R0]
            BIC       R2,R2,#(0X3<<20)
            BIC       R2,R2,#(0X3<<16)
            STR      R2,[R0]
            LDR      R2,[R1]
            BIC       R2,R2,#(0X3<<20)
            STR      R2,[R1]
LOOP:
           BL  LED_ON
           BL  DELAY
           BL  LED_OFF
           BL  DELAY
           B  LOOP

LED_ON:
            @GPIOE
            LDR     r0,=0x50006014
            LDR      r1,[R0]
            ORR      R1,R1,#(0X1<<10)
            ORR      R1,R1,#(0X1<<8)
            STR      R1,[R0]
            @GPIOF
            LDR     r0,=0x50007014
            LDR      r1,[R0]
            ORR      R1,R1,#(0X1<<10)
            STR      R1,[R0]
            MOV PC,LR

LED_OFF:
             @GPIOE
            LDR     R0,=0x50006014
            LDR      R1,[R0]
            BIC      R1,R1,#(0X1<<10)
            BIC      R1,R1,#(0X1<<8)
            STR      R1,[R0]
            @GPIOF
            LDR     r0,=0x50007014
            LDR      r1,[R0]
            BIC      R1,R1,#(0X1<<10)
            STR      R1,[R0]
            MOV PC,LR

DELAY:
            LDR R3,=0X10000000
MM:
            CMP R3,#0
            SUBNE R3,R3,#1
            BNE MM
            MOV PC,LR
.end

Makefile

复制代码
NAME=asm-led
CROSS_COMPILE = arm-linux-gnueabihf-

CC = $(CROSS_COMPILE)gcc

LD = $(CROSS_COMPILE)ld
OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump

all:
	
	$(CC) -O0 -g -c $(NAME).S -o $(NAME).o
	
	$(LD) -Ttext=0xC0008000 $(NAME).o -o $(NAME).elf 
	 
	$(OBJCOPY) -O binary $(NAME).elf  $(NAME).bin

	$(OBJDUMP) -D $(NAME).elf > $(NAME).dis
clean:
	rm -rf *.elf *.bin *.o *.dis

install:
	
	sudo cp $(NAME).bin  /mnt/hgfs/share/
相关推荐
AOwhisky7 分钟前
Docker 学习笔记:镜像分发、容器运行与资源限制
笔记·学习·docker
MediaTea1 小时前
人工智能通识课:机器学习之无监督学习
人工智能·深度学习·学习·机器学习
Fanfanaas2 小时前
2026 年 华中杯 数学建模竞赛 A 题 问题一个人解析
学习·数学建模
霑潇雨3 小时前
Spark学习基础转换算子案例(单词计数(WordCount))
java·大数据·分布式·学习·spark·maven
eastyuxiao4 小时前
数字孪生教程(软件篇)官方学习路径
大数据·人工智能·学习·数字孪生
小徐学编程-zZ4 小时前
拆解业务逻辑分析
数据库·学习
知识分享小能手4 小时前
R语言入门学习教程,从入门到精通,R语言获取数据 (7)
开发语言·学习·r语言
木木_王4 小时前
嵌入式学习 | STM32裸板驱动开发(Day01)入门学习笔记(超详细完整版|点灯实验 + 库函数代码 + 原理全解)
linux·驱动开发·笔记·stm32·学习
JAVA面经实录9174 小时前
Java架构师最终完整版学习路线图
java·开发语言·学习
叶子野格4 小时前
数据集网站kaggle注册无验证码选项?
学习