0628_ARM4

news2024/12/23 4:58:01

练习:

stm32流水灯

.text 
.global _start
_start: 

@使能GPIOE外设时钟   0X50000A28     RCC_MP_AHB4ENSETR[4]->1
LDR R0,=0x50000a28   @指定操作的内存地址
LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
ORR R1,R1,#(0x3<<4)   @将第4,5位设置为1
STR R1,[R0]  @将修改后的数值写回去


@设置PE10为输出   0X50006000 [21:20]->01
LDR R0,=0x50006000   @指定操作的内存地址
LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
BIC R1,R1,#(0x3<<20)   @先清零
ORR R1,R1,#(0x1<<20)   @再置位
STR R1,[R0]  @将修改后的数值写回去

@设置PE8为输出   0X50006000 [17:16]->01
LDR R0,=0x50006000   @指定操作的内存地址
LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
BIC R1,R1,#(0x3<<16)   @先清零
ORR R1,R1,#(0x1<<16)   @再置位
STR R1,[R0]  @将修改后的数值写回去

@设置PF10为输出   0X50007000 [21:20]->01
LDR R0,=0x50007000   @指定操作的内存地址
LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
BIC R1,R1,#(0x3<<20)   @先清零
ORR R1,R1,#(0x1<<20)   @再置位
STR R1,[R0]  @将修改后的数值写回去


@设置PE10为推挽输出  0X50006004  [10]->0
LDR R0,=0x50006004   @指定操作的内存地址
LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
BIC R1,R1,#(0x1<<10)   @将第10位设置为0
STR R1,[R0]  @将修改后的数值写回去

@设置PE8为推挽输出  0X50006004  [8]->0
LDR R0,=0x50006004   @指定操作的内存地址
LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
BIC R1,R1,#(0x1<<8)   @将第10位设置为0
STR R1,[R0]  @将修改后的数值写回去

@设置PF10为推挽输出  0X50007004  [10]->0
LDR R0,=0x50007004   @指定操作的内存地址
LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
BIC R1,R1,#(0x1<<10)   @将第10位设置为0
STR R1,[R0]  @将修改后的数值写回去

@设置PE10低速输出  0X50006008   [21:20]->00
LDR R0,=0x50006008   @指定操作的内存地址
LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
BIC R1,R1,#(0x3<<20)   @清零
STR R1,[R0]  @将修改后的数值写回去

@设置PE8低速输出  0X50006008   [17:16]->00
LDR R0,=0x50006008   @指定操作的内存地址
LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
BIC R1,R1,#(0x3<<16)   @清零
STR R1,[R0]  @将修改后的数值写回去

@设置PF10低速输出  0X50007008   [21:20]->00
LDR R0,=0x50007008   @指定操作的内存地址
LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
BIC R1,R1,#(0x3<<20)   @清零
STR R1,[R0]  @将修改后的数值写回去

@设置PE10无上啦下拉电阻  0X5000600C  [21:20]->00
LDR R0,=0x5000600C   @指定操作的内存地址
LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
BIC R1,R1,#(0x3<<20)   @清零
STR R1,[R0]  @将修改后的数值写回去

@设置PE8无上啦下拉电阻  0X5000600C  [17:16]->00
LDR R0,=0x5000600C   @指定操作的内存地址
LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
BIC R1,R1,#(0x3<<16)   @清零
STR R1,[R0]  @将修改后的数值写回去

@设置PF10无上啦下拉电阻  0X5000700C  [21:20]->00
LDR R0,=0x5000700C   @指定操作的内存地址
LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
BIC R1,R1,#(0x3<<20)   @清零
STR R1,[R0]  @将修改后的数值写回去

WH:
    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 WH

LED1_ON:
    @设置PE10输出高电平  0X50006014  [10]->1
    LDR R0,=0x50006014   @指定操作的内存地址
    LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
    ORR R1,R1,#(0x1<<10)   @写1
    STR R1,[R0]  @将修改后的数值写回去
    MOV PC,LR

LED2_ON:
    @设置PF10输出高电平  0X50007014  [10]->1
    LDR R0,=0x50007014   @指定操作的内存地址
    LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
    ORR R1,R1,#(0x1<<10)   @写1
    STR R1,[R0]  @将修改后的数值写回去
    MOV PC,LR

LED3_ON:
    @设置PE8输出高电平  0X50006014  [8]->1
    LDR R0,=0x50006014   @指定操作的内存地址
    LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
    ORR R1,R1,#(0x1<<8)   @写1
    STR R1,[R0]  @将修改后的数值写回去
    MOV PC,LR

LED1_OFF:
    @设置PE10输出高电平  0X50006014  [10]->1
    LDR R0,=0x50006014   @指定操作的内存地址
    LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
    BIC R1,R1,#(0x1<<10)   @清0
    STR R1,[R0]  @将修改后的数值写回去
    MOV PC,LR

LED2_OFF:
    @设置PF10输出高电平  0X50007014  [10]->1
    LDR R0,=0x50007014   @指定操作的内存地址
    LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
    BIC R1,R1,#(0x1<<10)   @清0
    STR R1,[R0]  @将修改后的数值写回去
    MOV PC,LR

LED3_OFF:
    @设置PE8输出高电平  0X50006014  [8]->1
    LDR R0,=0x50006014   @指定操作的内存地址
    LDR R1,[R0]  @将R0对应的地址空间中的值读取出来
    BIC R1,R1,#(0x1<<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/1885683.html

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

相关文章

ForkJoinPool与ThreadPoolExecutor

ThreadPoolExecutor不多介绍&#xff0c;重点介绍ForkJoinPool&#xff0c;以及二者的区别 ForkJoinPool ForkJoinPool 是 Java 7 引入的一种用于并行计算的框架&#xff0c;特别适合处理递归任务。它是 java.util.concurrent 包的一部分&#xff0c;基于工作窃取算法&#x…

【Qwen2部署实战】Qwen2初体验:用Transformers打造智能聊天机器人

系列篇章&#x1f4a5; No.文章1【Qwen部署实战】探索Qwen-7B-Chat&#xff1a;阿里云大型语言模型的对话实践2【Qwen2部署实战】Qwen2初体验&#xff1a;用Transformers打造智能聊天机器人3【Qwen2部署实战】探索Qwen2-7B&#xff1a;通过FastApi框架实现API的部署与调用4【Q…

java 程序、进程 、线程,cpu,并行、并发、启动线程两种方式

1、重写 Thread 父类方法 后创建实例调用 start 方法 2、将创建自实现 Runable 接口后的实例 作为参数传递给 Thread 的构造方法 两个条件同时存在&#xff0c;那个生效&#xff1f; new Thread(/* condition 1 */threadTest2) {Override/* condition 2 */public void run() {T…

如何查看xpf文件

xpf文件是什么 XPF文件是“XML Paper Specification File”的缩写&#xff0c;它是一种文件保存格式&#xff0c;具有以下特点和相关信息&#xff1a; 一、定义与用途 定义&#xff1a;XPF文件用于保留文档的固定布局&#xff0c;包括文本、图片以及其他文档元素的确切位置。…

【HarmonyOS NEXT】鸿蒙如何动态添加组件(NodeController)

NodeController用于实现自定义节点的创建、显示、更新等操作的管理&#xff0c;并负责将自定义节点挂载到NodeContainer上。 说明 本模块首批接口从API version 11开始支持 当前不支持在预览器中使用NodeController。 导入模块 import { NodeController } from "ohos…

23种设计模式之装饰者模式

深入理解装饰者模式 一、装饰者模式简介1.1 定义1.2 模式类型1.3 主要作用1.4 优点1.5 缺点 二、模式动机三、模式结构四、 装饰者模式的实现4.1 组件接口4.2 具体组件4.3 装饰者抽象类4.4 具体装饰者4.5 使用装饰者模式4.6 输出结果&#xff1a; 五、 应用场景5.1 图形用户界面…

嵌入式Linux系统编程 — 6.2 signal和 sigaction信号处理函数

目录 1 信号如何处理 2 signal()函数 2.1 signal()函数介绍 2.2 示例程序 3 sigaction()函数 3.1 sigaction()函数介绍 3.2 示例程序 1 信号如何处理 信号通常是发送给对应的进程&#xff0c;当信号到达后&#xff0c; 该进程需要做出相应的处理措施&#xff0c;可以通…

ROS——Server、Client的编程实现,服务数据的定义与使用,参数的使用和编程方法

客户端 创建功能包 创建客户端、创建服务、配置请求数据、请求调用、等待应答 设置编译规则 编译运行客户端 服务端 创建服务器 编译成目标执行文件、相关库的连接 add_executable(turtle_command_server src/turtle_command_server.cpp) target_link_libraries(turtle_comman…

第2章 寄存器

第2章 寄存器 一个 CPU 由运算器&#xff0c;控制器&#xff0c;寄存器等器件构成&#xff0c;这些器件靠内部总线进行相连。简单的说 CPU 中&#xff1a; 运算器进行信息处理寄存器进行信息存储控制器控制各种器件进行工作内部总线连接各个器件&#xff0c;在他们之间进行各种…

工业交换机端口统计功能

工业交换机端口统计功能不仅是一项技术手段&#xff0c;更是一双透视企业网络健康状态的慧眼。通过这一功能&#xff0c;企业能够实时捕捉到网络中每一个端口的流量情况&#xff0c;这不仅仅是数据的积累&#xff0c;更是对网络脉搏的精准把握。当网络的每一个脉动都被记录在案…

git基本使用(一):git的基本概念

Git 是一种分布式版本控制系统&#xff0c;最初由 Linus Torvalds 于 2005 年为 Linux 内核开发。它主要用于跟踪文件的更改&#xff0c;特别是在软件开发过程中&#xff0c;可以帮助团队成员协同工作。它在实际项目开发中&#xff0c;应用非常广泛&#xff0c;我们这一节来掌握…

第2章.现场设备的物联网模式--设备管理

2.3 设备管理 设备的作用及其管理方式是物联网和非物联网部署之间的关键区别。设备生命周期管理的阶段包括设备供应&#xff08;注册、激活和调试&#xff09;到取消供应。本书中用于设备管理的注释如下图所示&#xff1a; 图2.6——设备管理模式的符号 设备管理包括现场设备的…

Power Platform功能管理实战课程重点学什么?怎么学?

Power Platform 由 Power BI、Power Apps、Power Automate、Power Virtual Agents 四大模块组成。 这几个模块单独应用都具有强大的功能&#xff0c;而微软把它们放在一起&#xff0c;相互协作、相得益彰&#xff0c;形成了强大的生态系统。而这也是Power Platform的核心理念—…

Java案例实现双色球

一问题&#xff1a; 二具体代码&#xff1a; package 重修;import java.util.Random; import java.util.Scanner;public class first {public static void main(String[] args) {int []usersnumbersusernumslect();System.out.println("用户");for (int i 0; i <…

springboot个人证书管理系统-计算机毕业设计源码16679

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了个人证书管理系统的开发全过程。通过分析个人证书管理系统管理的不足&#xff0c;创建了一个计算机管理个人证书管理系统的方案。文章介绍了个人证书管理系统的系…

计算机系统基础(二)

1.数值数据的表示 为什么采用二进制&#xff1f; 二进制只有两种基本状态&#xff0c;两个物理器件就可以表示0和1二进制的编码、技术、运算规则都很简单0和1与逻辑命题的真假对应&#xff0c;方便通过逻辑门电路实现算术运算 数值数据表示的三要素 进位记数制&#xff08;十…

开发数字药店APP实战:互联网医院系统源码详解

本篇文章&#xff0c;笔者将深入探讨如何开发一个功能完善的数字药店APP&#xff0c;并详细解析互联网医院系统的源码实现。 一、数字药店APP的需求分析 应具备以下基本功能&#xff1a; 用户注册与登录 药品搜索与浏览 在线下单与支付 订单管理 健康咨询与远程医疗 个人…

发电机保护屏组成都有哪些,如何选择

发电机保护屏组成都有哪些&#xff0c;如何选择 发电机是电力系统中最常用的一种电力设备。例如水力发电机&#xff0c;柴油发电机&#xff0c;风力发电机&#xff0c;火力发电等等。发电机保护是保证发电机安全、稳定运行的重要手段之一。对于一些小型机组的发电机&#xff0c…

Mysql部署MHA高可用

部署前准备&#xff1a; mysql-8.0.27下载地址&#xff1a;https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar mha-manager下载地址&#xff1a;https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-mana…

因为自己淋过雨所以想给嵌入式撑把伞

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;新手学嵌入式&#xff0c;…