当前位置: 首页 > news >正文

GPIO输出实验,控制LED灯

1.实验工具:FSMP1A开发板

核心板:

拓展板:

2.实验要求:编写汇编程序,实现三盏灯流水

程序代码:

.text 
.global _start
_start: 

@将RCC_MP_AHB4ENSET寄存器第4位设置为1,使能GPIO外设时钟  地址:0X50000A28
LDR R0,=0X50000A28
LDR R1,[R0]
ORR R1,R1,#(0X1<<4)
STR R1,[R0]

@LED1
@1.将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]

@2.将PE10设置为推挽输出  GPIOE_OTYPER[10]->0   0x50006004
LDR R0,=0X50006004
LDR R1,[R0]
BIC R1,R1,#(0X1<<10)
STR R1,[R0]

@3.将PE10设置为低速输出  GPIOE_OSPEEDR[21:20]->00  0x50006008
LDR R0,=0X50006008
LDR R1,[R0]
BIC R1,R1,#(0X3<<20)
STR R1,[R0]

@4.将PE10设置为无上拉下拉GPIOE_PUPDR[21:20]->00   0x5000600c
LDR R0,=0X5000600C
LDR R1,[R0]
BIC R1,R1,#(0X3<<20)
STR R1,[R0]

@LED3
@1.将PE8设置为输出模式  GPIOE_MODER[17:16]->01   0x50006000
LDR R0,=0X50006000
LDR R1,[R0]
BIC R1,R1,#(0X3<<16)
ORR R1,R1,#(0X1<<16)
STR R1,[R0]

@2.将PE8设置为推挽输出  GPIOE_OTYPER[8]->0   0x50006004
LDR R0,=0X50006004
LDR R1,[R0]
BIC R1,R1,#(0X1<<8)
STR R1,[R0]

@3.将PE8设置为低速输出  GPIOE_OSPEEDR[17:16]->00  0x50006008
LDR R0,=0X50006008
LDR R1,[R0]
BIC R1,R1,#(0X3<<16)
STR R1,[R0]

@4.将PE8设置为无上拉下拉GPIOE_PUPDR[17:16]->00   0x5000600c
LDR R0,=0X5000600C
LDR R1,[R0]
BIC R1,R1,#(0X3<<16)
STR R1,[R0]

@LED2
@将RCC_MP_AHB4ENSET寄存器第5位设置为1,使能GPIO外设时钟  地址:0X50000A28
LDR R0,=0X50000A28
LDR R1,[R0]
ORR R1,R1,#(0X1<<5)
STR R1,[R0]

@1.将PF10设置为输出模式  GPIOE_MODER[21:20]->01   0x50007000
LDR R0,=0X50007000
LDR R1,[R0]
BIC R1,R1,#(0X3<<20)
ORR R1,R1,#(0X1<<20)
STR R1,[R0]

@2.将PF10设置为推挽输出  GPIOE_OTYPER[10]->0   0x50007004
LDR R0,=0X50007004
LDR R1,[R0]
BIC R1,R1,#(0X1<<10)
STR R1,[R0]

@3.将PF10设置为低速输出  GPIOE_OSPEEDR[21:20]->00  0x50007008
LDR R0,=0X50007008
LDR R1,[R0]
BIC R1,R1,#(0X3<<20)
STR R1,[R0]

@4.将PF10设置为无上拉下拉GPIOE_PUPDR[21:20]->00   0x5000700c
LDR R0,=0X5000700C
LDR R1,[R0]
BIC R1,R1,#(0X3<<20)
STR R1,[R0]


LOOP:
	BL LED1_ON
	BL DELAY
	BL LED1_OFF
	BL DELAY

	BL LED2_ON
	BL DELAY
	BL LED2_OFF
	BL DELAY

	BL LED3_ON
	BL DELAY
	BL LED3_OFF
	BL DELAY
	B LOOP

@将PE10输出高电平      GPIOE_ODR[10]->1     0x50006014
@LED1开
LED1_ON:
LDR R0,=0X50006014
LDR R1,[R0]
ORR R1,R1,#(0X1<<10)
STR R1,[R0]
MOV PC,LR

@LED1关
LED1_OFF:
LDR R0,=0X50006014
LDR R1,[R0]
BIC R1,R1,#(0X1<<10)
STR R1,[R0]
MOV PC,LR

@LED2开
LED2_ON:
LDR R0,=0X50007014
LDR R1,[R0]
ORR R1,R1,#(0X1<<10)
STR R1,[R0]
MOV PC,LR

@LED2关
LED2_OFF:
LDR R0,=0X50007014
LDR R1,[R0]
BIC R1,R1,#(0X1<<10)
STR R1,[R0]
MOV PC,LR

@LED3开
LED3_ON:
LDR R0,=0X50006014
LDR R1,[R0]
ORR R1,R1,#(0X1<<8)
STR R1,[R0]
MOV PC,LR

@LED3关
LED3_OFF:
LDR R0,=0X50006014
LDR R1,[R0]
BIC R1,R1,#(0X1<<8)
STR R1,[R0]
MOV PC,LR

@延时标签
DELAY:
	MOV R3,#0X10000000
MM:
	CMP R3,#0
	SUBNE R3,R3,#1
	BNE MM
	MOV PC,LR


.end

相关文章:

  • 地图(死亡细胞)
  • 第六章 数学
  • Dynamic WallPaper-壁纸动态-Mac电脑-4K超高清
  • k8s 基础知识:Service + 负载均衡(下)
  • 【Django】教程-2-前端-目录结构介绍
  • 单细胞簇鉴定
  • ubuntu如何安装conda
  • 记录一次渗透测试/常用命令
  • 华为配置篇-ISIS基础实验
  • BKA-CNN-GRU、CNN-GRU、GRU、CNN四模型多变量时序预测(Matlab)
  • 【机器学习】——模型评估与选择
  • 【大模型基础_毛玉仁】4.5 实践与应用--参数高效微调PEFT
  • 6、进程理论和简单进程创建
  • WMS系统功能设计和源码实现(Java开发)
  • Redisson - 分布式锁和同步器
  • 嵌入式系统中各类存储方式的区别及接口协议详解
  • 如何应对竞品分析不足导致的方案偏差
  • 禅道后台命令执行漏洞
  • Vue 中provide和inject的作用,在什么场景下使用它们进行跨层级组件通信?
  • 图解AUTOSAR_SWS_FlashEEPROMEmulation
  • 腾讯微博做网站外链步骤/关键词排名点击软件
  • 做电商网站/天津百度搜索网站排名
  • 知名的政府网站建设企业/沈阳优化网站公司
  • 自治区建设厅官方网站/查找关键词的工具叫什么
  • 成都 做网站 模版/营销推广软文案例
  • 鞍山哪里做网站/最新新闻热点话题