【嵌入式学习】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/
相关推荐
Linging_249 分钟前
基于Langchain得AI Agent相关知识学习
人工智能·学习·langchain
minglie19 小时前
高等代数试题
学习
Xiaofeng369310 小时前
GPT-5.6 发布后,我用了一个周末重新规划学习路线图
gpt·学习
其实防守也摸鱼11 小时前
运维--怎么看接口的请求和返回
运维·学习·网络安全·网络攻击模型·burpsuite·攻防对抗·蓝队
酷讯网络_24087016011 小时前
区块粮仓宠物NFT源码区块狗/抢购转让预约区块投资理财系统
学习·开源·宠物
Generalzy12 小时前
从本地 Demo 到生产级检索:Milvus 学习笔记(3)
笔记·学习·milvus
心中有国也有家13 小时前
AtomGit Flutter 鸿蒙客户端:ModalBottomSheet 实战
android·javascript·学习·flutter·华为·harmonyos
tyqtyq2213 小时前
求职信生成:AI 智能求职信撰写系统的鸿蒙实现
人工智能·学习·华为·生活·harmonyos
MartinYeung513 小时前
[论文学习]PrivacyLens:评估语言模型在行动中的隐私规范意识
人工智能·学习·语言模型
凉、介14 小时前
Virtio 系列(一):框架概览
笔记·学习·嵌入式·虚拟化·virtio