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
相关推荐
ZhengEnCi8 小时前
GPT-6 Astra 爆改 Qwen 权重真有那么神吗:权重空间编程 0.016% 参数的真相
算法·架构
罗西的思考8 小时前
【轻量化复刻大模型 / KIMI K3】KDA(Kimi Delta Attention):并行
人工智能·算法·机器学习
夜不会漫长10 小时前
C++:红黑树
数据结构·算法
AI备案指南-满满11 小时前
算法备案审核不通过,一般是什么原因?
java·人工智能·算法·大模型备案·算法备案·大模型登记
Ramble_Naylor11 小时前
Rust深度解读:Send 与 Sync 的本质与线程安全边界
python·算法·rust
秋天的怀念_David11 小时前
算法一千零一夜 · 第二十三夜 电力民生写成的曲线
java·程序人生·算法
不一样的故事12611 小时前
NB/T 47013.8-2015 附录D 吸枪技术
人工智能·经验分享·算法
通问AI11 小时前
用 200 行 Python 给文档库做「上下文完整度」自检:四个可复算的检查项
算法
揽星河..11 小时前
【C语言】扫雷游戏
c语言·算法·游戏
丘山录11 小时前
本地部署 LongCat-2.5,要 7 台机器我只有 4 台
人工智能·算法