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
相关推荐
爱编程的化学家24 分钟前
代码随想录算法训练营第十一天--二叉树2 || 226.翻转二叉树 / 101.对称二叉树 / 104.二叉树的最大深度 / 111.二叉树的最小深度
数据结构·c++·算法·leetcode·二叉树·代码随想录
tqs_1234525 分钟前
redis zset 处理大规模数据分页
java·算法·哈希算法
吃着火锅x唱着歌1 小时前
LeetCode 1446.连续字符
算法·leetcode·职场和发展
愚润求学1 小时前
【贪心算法】day10
c++·算法·leetcode·贪心算法
吴秋霖2 小时前
主流反爬虫、反作弊防护与风控对抗手段
爬虫·算法·反爬虫技术
java1234_小锋2 小时前
Scikit-learn Python机器学习 - 分类算法 - K-近邻(KNN)算法
python·算法·机器学习
智者知已应修善业2 小时前
【矩阵找最大小所在位置】2022-11-13
c语言·c++·经验分享·笔记·算法·矩阵
shan&cen2 小时前
Day04 前缀和&差分 1109. 航班预订统计 、304. 二维区域和检索 - 矩阵不可变
java·数据结构·算法
手握风云-2 小时前
回溯剪枝的 “减法艺术”:化解超时危机的 “救命稻草”(二)
算法·机器学习·剪枝
QiZhang | UESTC2 小时前
JAVA算法练习题day11
java·开发语言·python·算法·hot100