STM32MP157汇编流水灯

c 复制代码
.text 
.global _start
_start: 

		/* 使能GPIOE、GPIOF寄存器   RCC_MP_AHB4ENSETR 
		 * 基地址: 0x50000000 + 偏移地址: 0xA28 = 0x50000A28
		 * RCC_MP_AHB4ENSETR[4]->1	RCC_MP_AHB4ENSETR[5]->1
		 */	
		
		LDR R0,=0x50000A28
		LDR R1,[R0]
		ORR R1,R1,#(0x1<<4)
		STR R1,[R0]
		
		LDR R0,=0x50000A28
		LDR R1,[R0]
		ORR R1,R1,#(0x1<<5)
		STR R1,[R0]
		
		/* 设置PE10,PE8,PF10引脚为输出模式
		 * GPIOF基地址: 0x50007000 + 偏移地址: 0x00 = 0x50007000
		 * GPIOE基地址: 0x50006000 + 偏移地址: 0x00 = 0x50006000
		 * PE10: GPIOE_MODER[21:20]->01
		 * PF10: GPIOF_MODER[21:20]->01
		 * PE8:  GPIOE_MODER[17:16]->01
		 */
		
		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<<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,PE8,PF10引脚为推挽输出
  		 * GPIOF基地址: 0x50007000 + 偏移地址: 0x04 = 0x50007004
		 * GPIOE基地址: 0x50006000 + 偏移地址: 0x04 = 0x50006004
		 * GPIOE_OTYPER[10]->0
		 * GPIOF_OTYPER[10]->0
		 * GPIOE_OTYPER[8]->0
		 */
		
		LDR R0,=0x50007004
		LDR R1,[R0]
		BIC R1,R1,#(0x1<<10)
		STR R1,[R0]
		
		LDR R0,=0x50006004
		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,PE8,PF10引脚为低速输出
  		 * GPIOF基地址: 0x50007000 + 偏移地址: 0x08 = 0x50007008
		 * GPIOE基地址: 0x50006000 + 偏移地址: 0x08 = 0x50006008
		 * GPIOE_OSPEEDR[21:20]->00
		 * GPIOF_OSPEEDR[21:20]->00
		 * GPIOE_OSPEEDR[17:16]->00
		 */
		
		LDR R0,=0x50007008
		LDR R1,[R0]
		BIC R1,R1,#(0x3<<20)
		STR R1,[R0]
		
		LDR R0,=0x50006008
		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,PE8,PF10引脚没有上下拉电阻
  		 * GPIOF基地址: 0x50007000 + 偏移地址: 0x0C = 0x5000700C
		 * GPIOE基地址: 0x50006000 + 偏移地址: 0x0C = 0x5000600C
		 * GPIOE_PUPDR[21:20]->00
		 * GPIOF_PUPDR[21:20]->00
		 * GPIOE_PUPDR[17:16]->00
		 */
		 
		LDR R0,=0x5000700C
		LDR R1,[R0]
		BIC R1,R1,#(0x3<<20)
		STR R1,[R0] 
		
		LDR R0,=0x5000600C
		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,PE8,PF10实现流水灯
  		 * GPIOF基地址: 0x50007000 + 偏移地址: 0x14 = 0x50007014
		 * GPIOE基地址: 0x50006000 + 偏移地址: 0x14 = 0x50006014
		 * GPIOE_ODR[10]->1
		 * GPIOF_ODR[10]->1
		 * GPIOE_ODR[8]->1
		 */
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,=0X1000000
mm:
		CMP R4,#0
		SUBNE R4,R4,#1
		BNE mm
		MOV PC,LR

.end
相关推荐
西城微科方案开发几秒前
高速低功耗增强型8位单片机——HC89F0531 SSOP24
单片机·嵌入式硬件
EdmundXjs1 小时前
flashrom v1.5.1 Windows
windows·stm32·单片机
Saniffer_SH3 小时前
【市场洞察】一叶知秋 - 从2026年开年Quarch公司PCIe 6.0测试工具销售状况说起
服务器·人工智能·嵌入式硬件·测试工具·fpga开发·自动化·压力测试
llilian_163 小时前
铷原子频率标准 以时频基准破局,为计量校准赋能 时基铷钟
网络·功能测试·单片机·嵌入式硬件·测试工具·算法
aq55356003 小时前
Laravel7.x重磅升级:十大新特性解析
开发语言·汇编·c#·html
潜创微科技4 小时前
CH9339 双主机 USB3.2 协同 + PD 快充对拷芯片方案
嵌入式硬件·音视频
wearegogog1234 小时前
NEC红外线协议编码与解码(STM32实现)
网络·stm32·嵌入式硬件
振南的单片机世界5 小时前
中断向量表:CPU的“紧急联系人”名单
单片机·嵌入式硬件
llilian_165 小时前
频率计生产厂家 高精度通用频率计核心参数设置指南 双频率计 无线频率计
功能测试·单片机·嵌入式硬件·硬件工程
普中科技5 小时前
【普中 51-Ai8051 开发攻略】-- 第 10 章 矩阵按键实验
单片机·嵌入式硬件·矩阵·开发板·普中科技·ai8051u·aicube