arm-三盏灯流水

cpp 复制代码
.text 
.global _start
_start: 
@1.设置GPIOE寄存器的时钟使能  RCC_MP_AHB4ENSETR[4]->1     0x50000a28
LDR R0,=0x50000A28
LDR R1,[R0]
ORR R1,R1,#(0x3<<4) @第四位第五位都设置为1
STR R1,[R0] @写回

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


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

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


@5.设置PE10管脚输出时没有上拉下拉电阻  GPIOE_PUPDR[21:20]->00  0X5000600C
@5.设置PE8管脚输出时没有上拉下拉电阻  GPIOE_PUPDR[17:16]->00  0X5000600C
LDR R0,=0x5000600c
LDR R1,[R0]
BIC R1,R1,#(0X3<<16)
BIC R1,R1,#(0X3<<20)
STR R1,[R0]
@5.设置PF10管脚输出时没有上拉下拉电阻  GPIOE_PUPDR[21:20]->00  0X5000700C
LDR R0,=0x5000700c
LDR R1,[R0]
BIC R1,R1,#(0X3<<20)
STR R1,[R0]

@  6.PE10输出高低电平      GPIOE_ODR[10]->1(高电平)  0(低电平)    0X50006014
loop:
	LDR R0,=0X50006014
	LDR R1,[R0]
	ORR R1,R1,#(0x1<<10)
	STR R1,[R0]
	BL delay

	LDR R0,=0X50006014
	LDR R1,[R0]
	BIC R1,R1,#(0x1<<10)
	STR R1,[R0]
	BL delay
	
	LDR R0,=0X50007014
	LDR R1,[R0]
	ORR R1,R1,#(0x1<<10)
	STR R1,[R0]
	BL delay

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

	LDR R0,=0X50006014
	LDR R1,[R0]
	ORR R1,R1,#(0x1<<8)
	STR R1,[R0]
	BL delay

	LDR R0,=0X50006014
	LDR R1,[R0]
	BIC R1,R1,#(0x1<<8)
	STR R1,[R0]
	BL delay

	b loop

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

.end
相关推荐
szxinmai主板定制专家1 小时前
【精密测量】基于ARM+FPGA的多路光栅信号采集方案
服务器·arm开发·人工智能·嵌入式硬件·fpga开发
Paper_Love1 小时前
x86-64_windows交叉编译arm_linux程序
arm开发·windows
奇文怪式8 小时前
VSCode+arm-none-eabi-gcc交叉编译+CMake构建+OpenOCD(基于Raspberry Pico RP2040)
arm开发·ide·vscode·rp2040
Imagine Miracle8 小时前
Ubuntu for ARM 更换为阿里云镜像源
arm开发·ubuntu·阿里云
wwwlyj1233218 小时前
arm 精准总线错误与非精准总线错误
arm开发
liuluyang5302 天前
ARM DStream仿真器脚本常用命令
arm开发·dstream
沉在嵌入式的鱼3 天前
使用nomachine远程连接ARM设备桌面
arm开发·rk3588·远程连接·nomachine
进击的程序汪3 天前
Linux 启动过程流程图--ARM版
linux·运维·arm开发
比奇堡在逃帅哥13 天前
硬件-DAY04(ds18b20、ARM内核)
arm开发
Ronin-Lotus13 天前
微处理器原理与应用篇---ARM常见汇编指令
汇编·arm开发·微处理原理与应用