ARM实验 LED流水灯

news2024/9/25 11:09:24
.text 
.global _start
_start: 
    
@使能GPIOE GPIOF的外设时钟  RCC_MP_AHB4ENSETR的第[4][5]设置为1即可使能GPIOE GPIOF时钟
LDR R0,=0X50000A28   @指定寄存器地址
LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
ORR R1,R1,#(0x3<<4)   @将第4位设置为1
STR R1,[R0]  @将修改后的数值写回
 
@设置PE10为输出  将GPIOE_MODER[21:20]设置为01,就能够让PE10为输出工作模式
LDR R0,=0X50006000   @指定寄存器地址
LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
BIC R1,R1,#(0x3<<20)   @将第21:20清0
ORR R1,R1,#(0x1<<20)   @将第21:20设置为01
STR R1,[R0]  @将修改后的数值写回
 
@设置PE10为推晚输出  将GPIOE_OTYPER寄存器[10]设置为0,就能够让PE10以推挽输出模式进行工作
LDR R0,=0X50006004   @指定寄存器地址
LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
BIC R1,R1,#(0x1<<10)   @将第10清0
STR R1,[R0]  @将修改后的数值写回
 
@设置PE10为低速输出
LDR R0,=0X50006008   @指定寄存器地址
LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
BIC R1,R1,#(0x3<<20)   @将第21:20清0
STR R1,[R0]  @将修改后的数值写回
 
@设置无上拉下拉电阻 
LDR R0,=0X5000600C   @指定寄存器地址
LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
BIC R1,R1,#(0x3<<20)   @将第21:20清0
STR R1,[R0]  @将修改后的数值写回
 
@设置PF10为输出  将GPIOF_MODER[21:20]设置为01,就能够让PF10为输出工作模式
LDR R0,=0X50007000   @指定寄存器地址
LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
BIC R1,R1,#(0x3<<20)   @将第21:20清0
ORR R1,R1,#(0x1<<20)   @将第21:20设置为01
STR R1,[R0]  @将修改后的数值写回
 
@设置PF10为推晚输出  将GPIOF_OTYPER寄存器[10]设置为0,就能够让PF10以推挽输出模式进行工作
LDR R0,=0X50007004   @指定寄存器地址
LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
BIC R1,R1,#(0x1<<10)   @将第10清0
STR R1,[R0]  @将修改后的数值写回
 
@设置PF10为低速输出
LDR R0,=0X50007008   @指定寄存器地址
LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
BIC R1,R1,#(0x3<<20)   @将第21:20清0
STR R1,[R0]  @将修改后的数值写回
 
@设置无上拉下拉电阻 
LDR R0,=0X5000700C   @指定寄存器地址
LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
BIC R1,R1,#(0x3<<20)   @将第21:20清0
STR R1,[R0]  @将修改后的数值写回
 
 
@设置PE8为输出  将GPIOE_MODER[17:16]设置为01,就能够让PE8为输出工作模式
LDR R0,=0X50006000   @指定寄存器地址
LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
BIC R1,R1,#(0x3<<16)   @将第17:16清0
ORR R1,R1,#(0x1<<16)   @将第17:16设置为01
STR R1,[R0]  @将修改后的数值写回
 
@设置PE8为推晚输出  将GPIOE_OTYPER寄存器[8]设置为0,就能够让PE8以推挽输出模式进行工作
LDR R0,=0X50006004   @指定寄存器地址
LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
BIC R1,R1,#(0x1<<8)   @将第8清0
STR R1,[R0]  @将修改后的数值写回
 
@设置PE8为低速输出
LDR R0,=0X50006008   @指定寄存器地址
LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
BIC R1,R1,#(0x3<<16)   @将第17:16清0
STR R1,[R0]  @将修改后的数值写回
 
@设置无上拉下拉电阻 
LDR R0,=0X5000600C   @指定寄存器地址
LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
BIC R1,R1,#(0x3<<16)   @将第17:16清0
STR R1,[R0]  @将修改后的数值写回
 
 
loop:
@设置LED1亮
    BL LED1_ON
     BL LED2_OFF
     BL LED3_OFF
    BL DELAY
    @设置LED2亮
     BL LED2_ON
    BL LED1_OFF
    BL LED3_OFF
    BL DELAY
    @设置LED3亮
    BL LED3_ON
    BL LED1_OFF
    BL LED2_OFF
    BL DELAY
    b loop
 
LED1_ON:
   LDR R0,=0X50006014   @指定寄存器地址
    LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
    ORR R1,R1,#(0x1<<10)   @将第10设置为1
    STR R1,[R0]  @将修改后的数值写回 
    MOV PC,LR
LED1_OFF:
   LDR R0,=0X50006014   @指定寄存器地址
    LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
    BIC R1,R1,#(0x1<<10)   @将第10设置为0
    STR R1,[R0]  @将修改后的数值写回 
    MOV PC,LR
  
    LED2_ON:
   LDR R0,=0X50007014   @指定寄存器地址
    LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
    ORR R1,R1,#(0x1<<10)   @将第10设置为1
    STR R1,[R0]  @将修改后的数值写回 
    MOV PC,LR
LED2_OFF:
   LDR R0,=0X50007014   @指定寄存器地址
    LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
    BIC R1,R1,#(0x1<<10)   @将第10设置为0
    STR R1,[R0]  @将修改后的数值写回 
    MOV PC,LR
 
LED3_ON:
   LDR R0,=0X50006014   @指定寄存器地址
    LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
    ORR R1,R1,#(0x1<<8)   @将第8设置为1
    STR R1,[R0]  @将修改后的数值写回 
    MOV PC,LR
LED3_OFF:
   LDR R0,=0X50006014   @指定寄存器地址
    LDR R1,[R0]  @将寄存器原来的数值读取出来,保存到R1中
    BIC R1,R1,#(0x1<<8)   @将第8设置为0
    STR R1,[R0]  @将修改后的数值写回 
    MOV PC,LR
 
DELAY:
    LDR R3,=0x10000000
MM:
    CMP R3,#0
    SUBNE R3,R3,#1
    BNE MM
    MOV PC,LR
 
.end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1539286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源项目ChatGPT-Next-Web的容器化部署(一)-- 优化Dockerfile

一、背景 最近比较火的无疑是chatgpt了&#xff0c;找到一款开源github项目&#xff0c;在其基础上修改&#xff0c;定制出适合于自身业务的系统。 它是nodejs后端项目&#xff0c;github地址是&#xff1a;https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web&#xff0c;依…

面试算法-87-分隔链表

题目 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1&#xff1a; 输入&#xff1a;head [1,4,3,2,5,2], x …

(力扣)删除链表的倒数第N个节点 C++

1、题目描述 2、三种方法 &#xff08;1&#xff09;方法一&#xff1a;计算链表长度 创建一个虚拟节点来处理删除头节点的情况通过计算链表的长度确定要删除节点的位置。使用双指针中的一个指针&#xff0c;移动到要删除节点的前一个位置。将指针后面的节点跳过&#xff0c;…

深度学习 线性神经网络(线性回归 从零开始实现)

介绍&#xff1a; 在线性神经网络中&#xff0c;线性回归是一种常见的任务&#xff0c;用于预测一个连续的数值输出。其目标是根据输入特征来拟合一个线性函数&#xff0c;使得预测值与真实值之间的误差最小化。 线性回归的数学表达式为&#xff1a; y w1x1 w2x2 ... wnxn …

openGauss学习笔记-249 openGauss性能调优-使用Plan Hint进行调优-Join顺序的Hint

文章目录 openGauss学习笔记-249 openGauss性能调优-使用Plan Hint进行调优-Join顺序的Hint249.1 功能描述249.2 语法格式249.3 参数说明249.4 示例 openGauss学习笔记-249 openGauss性能调优-使用Plan Hint进行调优-Join顺序的Hint 249.1 功能描述 指明join的顺序&#xff0…

内存卡的照片怎么突然就找不到了,内存卡照片突然找不到如何恢复

最近,我遇到了一个令人困惑的问题,就是我的内存卡中的照片突然间找不到了。作为一个热爱摄影的人,我经常使用内存卡来存储我的珍贵照片。然而,最近我发现,无论我如何搜索和浏览,这些照片似乎就像消失了一样。内存卡照片突然找不到如何恢复?虽然挺沮丧的,但幸好遇上了以…

五分钟快速搭建个人游戏网站(1Panel)

五分钟快速搭建个人游戏网站&#xff08;1Panel&#xff09; 环境要求&#xff1a;主流 Linux 发行版本&#xff08;基于 Debian / RedHat&#xff0c;包括国产操作系统&#xff09;&#xff1b; 如果是Windows OS的可以通过WSL来实现安装。 1 介绍 1Panel 是一个基于 Web 的 L…

OpenCV+OpenCV-Contrib源码编译

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、OpenCV是什么&#xff1f;二、OpenCV 源码编译1.前期准备1.1 源码下载1.2 cmake安装1.3 vscode 安装1.4 git 安装1.5 mingw安装 2.源码编译2.1 打开cmake2.…

[ESP32]:基于HTTP实现百度AI识图

[ESP32]&#xff1a;基于HTTP实现百度AI识图 测试环境&#xff1a; esp32-s3esp idf 5.1 首先&#xff0c;先配置sdk&#xff0c;可以写入到sdkconfig.defaults CONFIG_IDF_TARGET"esp32s3" CONFIG_IDF_TARGET_ESP32S3yCONFIG_PARTITION_TABLE_CUSTOMy CONFIG_PA…

vue.config.js配置项

vue.config.js配置项 vue-cli3 脚手架搭建完成后&#xff0c;项目目录中没有 vue.config.js 文件&#xff0c;需要手动创建 创建vue.config.js vue.config.js(相当于之前的webpack.config.js) 是一个可选的配置文件&#xff0c;如果项目的 (和 package.json 同级的) 根目录中存…

数组不初始化带来的问题及解决、动态分配

C中数组不初始化会输出什么结果 在C中&#xff0c;如果你声明了一个数组但没有对其进行初始化&#xff0c;数组的元素将具有未定义的值。这意味着数组元素的值是不确定的&#xff0c;可能是垃圾值。 当你访问未初始化的数组元素时&#xff0c;可能会得到以下结果&#xff1a;…

力扣---全排列---回溯

思路&#xff1a; 递归做法&#xff0c;一般会有visit数组来判断第 i 位是否被考虑了。我们先考虑第0位&#xff0c;再考虑第1位&#xff0c;再考虑第2位...dfs函数中还是老套路&#xff0c;先判定特殊条件&#xff0c;再从当下的角度&#xff08;决定第 j 位是哪个元素&#x…

Docker 【通过Dockerfile构建镜像】【docker容器与镜像的关系】

文章目录 前言一、前期的准备工作二、上手构建一个简单的镜像三、DcokerFile1 指令总览2 指令详情 四、Dockerfile文件规范五、docker运行build时发生了什么?六、调试手段1. 修改镜像打包后&#xff0c;如何验证新内容已更新至镜像 七、Dockerfile优化方案 前言 docker构建镜…

优化选址问题 | 基于鹈鹕算法求解基站选址问题含Matlab源码

目录 问题代码问题 鹈鹕算法(Pelican Optimization Algorithm, POA)是一种相对较新的启发式优化算法,模拟了鹈鹕鸟觅食的行为。这种算法通常用于解决复杂的优化问题,如函数优化、路径规划、调度问题等。基站选址问题通常是一个复杂的优化问题,需要考虑覆盖范围、干扰、成…

AI修复老照片的一些参数设置

很久没更新CSDN文章了&#xff0c;这次给粉丝带来老照片修复流程 1>用ps修图 图章工具 笔刷 画笔修复 2>高清放大 3>lineattile 重绘 4>上色 具体可参考我的B站视频。 下面是一些笔记。 best quality,masterpiece,photorealistic,8k,ultra high res,solo,ext…

Fabric Measurement

Fabric Measurement 布料测量

通信网络设计[PTA]

文章目录 题目描述思路AC代码 题目描述 输入样例1 6 10 1 2 6 1 5 10 1 6 12 2 4 5 2 6 8 2 3 3 3 4 7 4 5 9 4 6 11 5 6 16 输出样例1 YES! Total cost:31输入样例2 5 4 1 2 3 1 3 11 2 3 8 4 5 9 输出样例2 NO! 1 part:1 2 3 2 part:4 5思路 最小生成树–kruskal算法 具体做法…

RbbitMQ使用教程

RabbitMQ 是一个可靠且成熟的消息传递和流代理&#xff0c;易于部署在云环境、本地和本地计算机上。它目前被全球数百万人使用。通过确认消息传递和跨集群复制消息的功能&#xff0c;您可以使用 RabbitMQ 确保您的消息是安全的。 RabbitMQ安装 推荐使用docker安装部署&#xf…

VMware Workstation Pro 17虚拟机超级详细搭建(含redis,nacos,docker)(一)

今天从零搭建一下虚拟机的环境&#xff0c;把nacos&#xff0c;redis等微服务组件还有数据库搭建到里面&#xff0c;首先看到的是我们最开始下载VMware Workstation Pro 17 之后的样子&#xff0c;总共一起应该有三部分因为篇幅太长了 下载地址 : VMware - Delivering a Digit…

pytest全局配置+前后只固件配置

pytest全局配置前后只固件配置 通过读取pytest.ini配置文件运行通过读取pytest.ini配置文件运行无条件跳过pytest.initest_mashang.pyrun.py 有条件跳过test_mashang.py pytest框架实现的一些前后置&#xff08;固件、夹具&#xff09;处理方法一&#xff08;封装&#xff09;方…