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
相关推荐
jiang_bluetooth13 分钟前
奈奎斯特第一准则理解和WIFI OFDM的关联
算法
DuHz7 小时前
论文精读:大语言模型 (Large Language Models, LLM) —— 一项调查
论文阅读·人工智能·深度学习·算法·机器学习·计算机视觉·语言模型
加农炮手Jinx8 小时前
LeetCode 72. Edit Distance 题解
算法·leetcode·力扣
借雨醉东风8 小时前
程序分享--常见算法/编程面试题:旋转矩阵
c++·线性代数·算法·面试·职场和发展·矩阵
_深海凉_8 小时前
LeetCode热题100-打家劫舍
算法·leetcode·职场和发展
jghhh019 小时前
使用 MATLAB 实现支持向量回归 (SVR) 预测未来数据
算法·matlab
云泽8089 小时前
笔试算法 - 双指针篇(二):四大经典求和题型 + 有效三角形计数问题
c++·算法
刀法如飞10 小时前
【合并已排序数组的三种实现策略,哪一种更可取?】
算法·程序员
王老师青少年编程10 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【区间贪心】:种树
c++·算法·贪心·csp·信奥赛·区间贪心·种树
hi_ro_a10 小时前
C++ 哈希表封装 unordered_map /unordered_set
数据结构·c++·算法·哈希算法