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

【arm实验1】GPIO实验-LED灯的流水亮灭

linux@linux:~/study/01-asm$ cat asm-led.S 
.text 
.global _start
_start: 
@1.设置GPIOE寄存器的时钟使能  RCC_MP_AHB4ENSETR[4]->1     0x50000a28
LDR R0,=0X50000A28
LDR R1,[R0]  @从r0为起始地址的4字节数据取出放在R1
ORR R1,R1,#(0x1<<4)  @第4位设置为1
ORR R1,R1,#(0x1<<5)  @第4位设置为1
STR R1,[R0]  @写回@2.设置PE10管脚为输出模式  GPIOE_MODER[21:20]->01   0x50006000
LDR R0,=0x50006000
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21L20]0
ORR R1,R1,#(0X1<<20) @设置
STR R1,[R0] 
@2.设置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_MODER[21:20]->01   0x50006000
LDR R0,=0x50006000
LDR R1,[R0]
BIC R1,R1,#(0x3<<16)@[21L20]0
ORR R1,R1,#(0X1<<16) @设置
STR R1,[R0]@3.设置PE10管脚为推挽输出  GPIOE_OTYPER[10]->0   0X50006004
LDR R0,=0X50006004
LDR R1,[R0]
BIC R1,R1,#(0X1<<10)
STR R1,[R0] 
@设置PF10
LDR R0,=0X50007004
LDR R1,[R0]
BIC R1,R1,#(0X1<<10)
STR R1,[R0] 
@设置PE8
LDR R0,=0X50006004
LDR R1,[R0]
BIC R1,R1,#(0X1<<8)
STR R1,[R0] @4.设置PE10管脚为低速输出   GPIOE_OSPEEDR[21:20]->00  0X50006008
LDR R0,=0x50006008
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21L20]0
STR R1,[R0] 
@设置PF10
LDR R0,=0x50007008
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21L20]0
STR R1,[R0]
@设置PE8
LDR R0,=0x50006008
LDR R1,[R0]
BIC R1,R1,#(0x3<<16)@[21L20]0
STR R1,[R0]@5.设置PE10管脚输出时没有上拉下拉电阻  GPIOE_PUPDR[21:20]->00  0X5000600C
LDR R0,=0x5000600c
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21L20]0
STR R1,[R0] 
@设置PF10
LDR R0,=0x5000700c
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)@[21L20]0
STR R1,[R0]
@设置PE8
LDR R0,=0x5000600c
LDR R1,[R0]
BIC R1,R1,#(0x3<<16)@[21L20]0
STR R1,[R0]@  6.PE10输出高低电平      GPIOE_ODR[10]->1(高电平)  0(低电平)    0X50006014
@LED1,LED2,LED3连续亮灭交替
loop:@亮LDR R0,=0X50006014LDR R1,[R0]ORR R1,R1,#(0x1<<10)STR R1,[R0]BL delay@灭LDR R0,=0X50006014LDR R1,[R0]BIC R1,R1,#(0x1<<10)STR R1,[R0]BL delay@亮LDR R0,=0X50007014LDR R1,[R0]ORR R1,R1,#(0x1<<10)STR R1,[R0]BL delay@灭LDR R0,=0X50007014LDR R1,[R0]BIC R1,R1,#(0x1<<10)STR R1,[R0]BL delay@亮LDR R0,=0X50006014LDR R1,[R0]ORR R1,R1,#(0x1<<8)STR R1,[R0]BL delay@灭LDR R0,=0X50006014LDR R1,[R0]BIC R1,R1,#(0x1<<8)STR R1,[R0]BL delayb loop@封装延时函数delay:LDR R4,=0X10000000
mm:cmp r4,#0subne r4,r4,#1bne mmmov pc,lr  @程序返回.end 

1
2

3

http://www.lryc.cn/news/188651.html

相关文章:

  • MySQL关联数据表操作方式
  • SMOS数据处理,投影变换,‘EPSG:6933‘转为‘EPSG:4326‘
  • 游戏服务端性能测试实战总结
  • 塔望食观察 | 中国海参产业发展现状及挑战
  • springboot 捕获特点异常信息并处理
  • 【Spring框架学习3】Spring Bean的作用域 及 生命周期
  • 多线程并发篇---第四篇
  • vs code 添加vue3代码模板方法
  • 怎么通过Fiddler对APP进行抓包?以及高级应用场景分析
  • centos下安装配置redis7
  • 【angular】TodoList小项目(已开源)
  • 【Java 进阶篇】HTML块级元素详解
  • CSS设置鼠标样式和添加视频样式
  • 项目文件上传到行云codeup teambition
  • 现货黄金和实物黄金有什么区别?
  • /dev下没有video0这个文件(ubuntu无法打开摄像头)
  • mysql面试题32:MySQL数据库服务器性能分析的方法命令有哪些?
  • 伦敦银最新价格能进吗?
  • 【计算机毕设案例推荐】洋州影院购票管理系统SpringBoot+Vue
  • Java设计模式之模板方法模式
  • MinIO的安装与使用
  • “==”和equals的区别
  • QT - 对话框去掉标题栏问号
  • FPGA---UDP通信求助
  • RxJava介绍及基本原理
  • nginx目录穿越
  • stl String
  • java通过ffmpeg将wav音频文件转广播音频编码-G.711文件发送
  • 【Spring】Springmvc执行流程
  • 游戏软件开发与应用软件开发有什么不同呢?