day58:ARMday5,GPIO流水灯实验

汇编指令:

复制代码
.text 
.global _start
_start: 
@1.设置GPIOE GPIOF寄存器的时钟使能 RCC_MP_AHB4ENSETR[5:4]->1 	0x50000a28
LDR R0,=0x50000a28
LDR R1,[R0]
ORR R1,R1,#(0x3<<4)
STR R1,[R0]

@2.设置PE10、PF10、PE8管脚为输出模式,GPIOE_MODER[21:20]->01 	0x50006000
LDR R0,=0x50006000
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)
ORR R1,R1,#(0x1<<20)
BIC R1,R1,#(0x3<<16)
ORR R1,R1,#(0x1<<16)
STR R1,[R0]

LDR R0,=0x50007000
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)
ORR R1,R1,#(0x1<<20)
STR R1,[R0]

@3.设置PE10、PF10、PE8管脚为推挽输出,GPIOE_OTYPER[10]->0 	0x50006004
LDR R0,=0x50006004
LDR R1,[R0]
BIC R1,R1,#(0x1<<10)
BIC R1,R1,#(0x1<<8)
STR R1,[R0]

LDR R0,=0x50007004
LDR R1,[R0]
BIC R1,R1,#(0x1<<10)
STR R1,[R0]

@4.设置PE10、PF10、PE8管脚为低速输出,GPIO_OSPEEDR[21:20]->00 	0x50006008
LDR R0,=0x50006008
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)
BIC R1,R1,#(0x3<<16)
STR R1,[R0]

LDR R0,=0x50007008
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)
STR R1,[R0]

@5.设置PE10、PF10、PE8管脚为不设置上拉下拉模式,GPIOE_PUPDR[21:20]->00 	0x5000600c
LDR R0,=0x5000600c
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)
BIC R1,R1,#(0x3<<16)
STR R1,[R0]

LDR R0,=0x5000700c
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)
STR R1,[R0]

@6.设置PE10、PF10、PE8管脚为高低电平,GPIOE_ODR[10]->1/0 	0x50006014
									@GPIOF_ODR[10]->1/0 	0x50007014
									@GPIOE_ODR[8]->1/0 		0x50006014
loop:
	@LD1亮
	LDR R0,=0x50006014
	LDR R1,[R0]
	ORR R1,R1,#(0x1<<10)
	STR R1,[R0]
	BL delay

	@LD1灭
	LDR R0,=0x50006014
	LDR R1,[R0]
	BIC R1,R1,#(0x1<<10)
	STR R1,[R0]

	@LD2亮
	LDR R0,=0x50007014
	LDR R1,[R0]
	ORR R1,R1,#(0x1<<10)
	STR R1,[R0]
	BL delay

	@LD2灭
	LDR R0,=0x50007014
	LDR R1,[R0]
	BIC R1,R1,#(0x1<<10)
	STR R1,[R0]

	@LD3亮
	LDR R0,=0x50006014
	LDR R1,[R0]
	ORR R1,R1,#(0x1<<8)
	STR R1,[R0]
	BL delay

	@LD3灭
	LDR R0,=0x50006014
	LDR R1,[R0]
	BIC R1,R1,#(0x1<<8)
	STR R1,[R0]
	b loop

delay:
	LDR R4,=0x10000000
mm:
	cmp r4,#0
	subne r4,r4,#1
	bne mm
	mov pc,lr @程序返回

.end

实验现象:

相关推荐
fengye2071616 小时前
板凳----------(枯藤 )vs2026+win10(第六章-2)
汇编
2501_9181269115 小时前
用Python开发一个三进制程序开发工具
开发语言·汇编·python·个人开发
大聪明-PLUS15 小时前
Linux 下的 C 语言编程:创建你自己的命令 shell
linux·嵌入式·arm·smarc
黎雁·泠崖1 天前
Java底层探秘进阶:JIT汇编逐行拆解!Java方法栈帧与C语言深度对标
java·c语言·汇编
小初生ZLD1 天前
CSDN年度技术趋势预
汇编
切糕师学AI2 天前
ARM 汇编指令:STM
汇编·arm开发·stm
大聪明-PLUS2 天前
关于 systemd 和桌面应用程序自动启动
linux·嵌入式·arm·smarc
qq13267029402 天前
ARM版统信UOS桌面安装JDK
java·jdk·arm·统信uos·毕昇jdk 11
大聪明-PLUS2 天前
了解 Linux 系统中用于流量管理的 libnl 库
linux·嵌入式·arm·smarc
黎雁·泠崖2 天前
Java 方法栈帧深度解析:从 JIT 汇编视角,打通 C 与 Java 底层逻辑
java·c语言·汇编