LED灯亮灭

Go 复制代码
.text 
.global _start
_start: 
	@设置GPIO寄存器的时钟使能  RCC_MP_AHB4ENSETR[4]->1     0x50000a28
	LDR R0,=0x50000A28
	LDR R1,[R0]   @从R0为起始地址的4个字节数据取出放入R1中
	ORR R1,R1,#(0x1<<4)    @第四位设置为1
	STR R1,[R0]      @写回


	LDR R0,=0x50000a28
	LDR R1,[R0]
	ORR R1,R1,#(0x1<<5)
	STR R1,[R0]


	LDR R0,=0x50000a28
	LDR R1,[R0]
	ORR R1,R1,#(0x1<<4)
	STR R1,[R0]




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


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



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




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


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



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



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


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



	LDR R0,=0x50006008
	LDR R1,[R0]
	BIC R1,R1,#(0x3<<16)
	STR R1,[R0]




	@设置PE10管脚输出时没有上拉下拉电阻  GPIOE_PUPDR[20:21]->00   0x5000600c
	LDR R0,=0x5000600c
	LDR R1,[R0]
	BIC R1,R1,#(0x3<<20)
	STR R1,[R0]


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



	LDR R0,=0x5000600c
	LDR R1,[R0]
	BIC R1,R1,#(0x3<<16)
	STR R1,[R0]




	@PE10输出高低电平   GPIOE_ODR[10]->1(高电平)   0(低电平)   0x50006014
	@LED1亮灭交替
LOOP1:
	@先亮
	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
	B LOOP2


LOOP2:
	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
	B LOOP3


LOOP3:
	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 LOOP1








	
@封装延时函数

delay:
	LDR R4,=#0x10000000
mm:
	cmp R4,#0
	SUBNE R4,R4,#1
	BNE mm
	MOV PC,LR   @程序返回
.end
相关推荐
kaiaaaa21 分钟前
算法训练第十一天
数据结构·算法
?!71423 分钟前
算法打卡第18天
c++·算法
springfe010135 分钟前
构建大顶堆
前端·算法
凌辰揽月1 小时前
Web后端基础(基础知识)
java·开发语言·前端·数据库·学习·算法
lifallen1 小时前
深入浅出 Arrays.sort(DualPivotQuicksort):如何结合快排、归并、堆排序和插入排序
java·开发语言·数据结构·算法·排序算法
jingfeng5141 小时前
数据结构排序
数据结构·算法·排序算法
能工智人小辰2 小时前
Codeforces Round 509 (Div. 2) C. Coffee Break
c语言·c++·算法
kingmax542120082 小时前
CCF GESP202503 Grade4-B4263 [GESP202503 四级] 荒地开垦
数据结构·算法
岁忧2 小时前
LeetCode 高频 SQL 50 题(基础版)之 【高级字符串函数 / 正则表达式 / 子句】· 上
sql·算法·leetcode
eachin_z3 小时前
力扣刷题(第四十九天)
算法·leetcode·职场和发展