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

ARM的学习

点亮流水灯

.text 
.global _start
_start: @使能GPIOE的外设时钟   RCC_MP_AHB4ENSETR 0x50000a28   [4]->1LDR R0,=0X50000A28  @指定基地址LDR R1,[R0]  @将寄存器数据读取出来保存到R1中ORR R1,R1,#(0x3<<4)   @[4]设置为1ORR R1,R1,#(0x3<<5)   @[5]设置为1STR R1,[R0]  @将修改之后的值写回去@设置PE10为输出   GPIOE_MODER [21:20]->01   0X50006000LDR R0,=0X50006000  @指定基地址LDR R1,[R0]  @将寄存器数据读取出来保存到R1中BIC R1,R1,#(0x3<<20)   @[21:20]设置为00ORR R1,R1,#(0x1<<20)   @[21:20]设置为01BIC R1,R1,#(0x3<<16)   @[17:16]设置为00ORR R1,R1,#(0x1<<16)   @[17:16]设置为01STR R1,[R0]  @将修改之后的值写回去@设置PE10为推挽输出  GPIOE_OTYPER[10]->0   0X50006004LDR R0,=0X50006004  @指定基地址LDR R1,[R0]  @将寄存器数据读取出来保存到R1中BIC R1,R1,#(0x1<<10)   @[10]设置为0BIC R1,R1,#(0x1<<8)   @[8]设置为0STR R1,[R0]  @将修改之后的值写回去@设置PE10低速输出  GPIOE_OSPEEDR[21:20]->00  0X50006008LDR R0,=0X50006008  @指定基地址LDR R1,[R0]  @将寄存器数据读取出来保存到R1中BIC R1,R1,#(0x3<<20)   @[21:20]设置为0BIC R1,R1,#(0x3<<16)   @[17:16]设置为0STR R1,[R0]  @将修改之后的值写回去@设置PE10无上拉下拉电阻 GPIOx_PUPDRLDR R0,=0X5000600C  @指定基地址LDR R1,[R0]  @将寄存器数据读取出来保存到R1中BIC R1,R1,#(0x3<<20)   @[21:20]设置为0BIC R1,R1,#(0x3<<16)   @[17:16]设置为0STR R1,[R0]  @将修改之后的值写回去@设置PF10为输出   GPIOF_MODER [21:20]->01   0X50007000LDR R0,=0X50007000  @指定基地址LDR R1,[R0]  @将寄存器数据读取出来保存到R1中BIC R1,R1,#(0x3<<20)   @[21:20]设置为00ORR R1,R1,#(0x1<<20)   @[17:16]设置为01STR R1,[R0]  @将修改之后的值写回去@设置PF10为推挽输出  GPIOF_OTYPER[10]->0   0X5000F004LDR R0,=0X50007004  @指定基地址LDR R1,[R0]  @将寄存器数据读取出来保存到R1中BIC R1,R1,#(0x1<<10)   @[10]设置为0STR R1,[R0]  @将修改之后的值写回去@设置PF10低速输出  GPIOF_OSPEEDR[21:20]->00  0X5000F008LDR R0,=0X50007008  @指定基地址LDR R1,[R0]  @将寄存器数据读取出来保存到R1中BIC R1,R1,#(0x3<<20)   @[21:20]设置为0STR R1,[R0]  @将修改之后的值写回去@设置PF10无上拉下拉电阻 GPIOx_PUPDRLDR R0,=0X5000700C  @指定基地址LDR R1,[R0]  @将寄存器数据读取出来保存到R1中BIC R1,R1,#(0x3<<20)   @[21:20]设置为0STR R1,[R0]  @将修改之后的值写回去LOOP:  @B不让程序结束bl LED1_ONbl DELAYbl LED1_OFFbl DELAYbl LED2_ONbl DELAYbl LED1_OFFbl DELAYbl LED3_ONbl DELAYbl LED1_OFFbl DELAYB LOOP@亮灯
LED1_ON:@点灯  GPIOE_ODR[10]->1    0向0006014LDR R0,=0X50006014  @指定基地址LDR R1,[R0]  @将寄存器数据读取出来保存到R1中  ORR R1,R1,#(0x1<<10)   @[10]设置为0STR R1,[R0]  @将修改之后的值写回去MOV PC,LR  @程序返回LED2_ON:@点灯  GPIOE_ODR[10]->1    0向0006014LDR R0,=0X50006014  @指定基地址LDR R1,[R0]  @将寄存器数据读取出来保存到R1中ORR R1,R1,#(0x1<<8)   @[8]设置为0STR R1,[R0]  @将修改之后的值写回去MOV PC,LR  @程序返回@亮灯
LED3_ON:LDR R2,=0X50007014  @指定基地址LDR R3,[R2]  @将寄存器数据读取出来保存到R3中ORR R3,R3,#(0x1<<10)   @[10]设置为0STR R3,[R2]  @将修改之后的值写回去MOV PC,LR  @程序返回@灭灯
LED_OFF:LDR R0,=0X50006014  @指定基地址LDR R1,[R0]  @将寄存器数据读取出来保存到R1中LDR R2,=0X50007014  @指定基地址LDR R3,[R2]  @将寄存器数据读取出来保存到R3中BIC R3,R3,#(0x1<<10)   @[10]设置为0BIC R1,R1,#(0x1<<10)   @[10]设置为0BIC R1,R1,#(0x1<<8)   @[8]设置为0STR R1,[R0]  @将修改之后的值写回去STR R3,[R2]  @将修改之后的值写回去MOV PC,LR  @程序返回@延时函数
DELAY:LDR R4,=0X10000000
MM:CMP R4,#0SUBNE R4,R4,#1BNE MMMOV PC,LR  @程序返回.end

效果演示

流水灯

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

相关文章:

  • Restful API接口规范(以Django为例)
  • AI助力,程序员压力倍增?
  • LoRA微调
  • 45.基于SpringBoot + Vue实现的前后端分离-驾校预约学习系统(项目 + 论文)
  • 系统思考—时间滞延
  • SSM项目转Springboot项目
  • VUE3.0对比VUE2.0
  • 车内AR互动娱乐解决方案,打造沉浸式智能座舱体验
  • OR36 链表的回文结构
  • 【译】微调与人工引导: 语言模型调整中的 SFT 和 RLHF
  • kylin java.io.IOException: error=13, Permission denied
  • 前端面试01总结
  • 算法--目录
  • ArcGIS Pro 3D建模简明教程
  • 24届数字IC设计/验证秋招总结贴——先看这个
  • 带洞平面三角分割结果的逆向算法
  • MGRE-OSPF接口网络类型实验
  • ChatGPT科研利器详解:写作论文轻松如玩游戏
  • vue3从精通到入门23:定义全局变量
  • 反爬虫之代理IP封禁-协采云IP池
  • ELK-Kibana 部署
  • Backtrader 量化回测实践(7)——在jupyter中执行bt的samples
  • npm vs. pnpm vs. Yarn: 三者之间的区别与比较
  • Learning Feature Sparse Principal Subspace 论文阅读
  • Hibernate入门经典与注解式开发大全
  • 蓝桥杯之注意事项
  • ES6 全详解 let 、 const 、解构赋值、剩余运算符、函数默认参数、扩展运算符、箭头函数、新增方法,promise、Set、class等等
  • c++ - 类的默认成员函数
  • Java哈希查找(含面试大厂题和源码)
  • c++中常用库函数