arm裸机测试led灯亮灭、风扇、马达等

2023-11-11 01:20

本文主要是介绍arm裸机测试led灯亮灭、风扇、马达等,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 汇编代码:

.text 
.global _start
_start: 
@RCC使能GPIOE   RCC_MP_AHB4ENSETR[4]->1
LDR R0,=0X50000A28
LDR R1,[R0]
ORR R1,R1,#(0X3<<4)
ORR R1,R1,#0X10@PB
STR R1,[R0]
@设置PE10/8为输出模式 GPIOE_MODER[20:21]->01
LDR R0,=0X50006000
LDR R1,[R0]
@10
BIC R1,R1,#(0X3<<20)
ORR R1,R1,#(0X1<<20)
@8
BIC R1,R1,#(0X3<<16)
ORR R1,R1,#(0X1<<16)
@9
BIC R1,R1,#(0X3<<18)
ORR R1,R1,#(0X1<<18)
STR R1,[R0]
@设置PF10为输出模式 GPIOE_MODER[20:21]->01
LDR R0,=0X50007000
LDR R1,[R0]
@10
BIC R1,R1,#(0X3<<20)
ORR R1,R1,#(0X1<<20)
@6
BIC R1,R1,#(0X3<<12)
ORR R1,R1,#(0X1<<12)
STR R1,[R0]
@设置PE10为推挽输出 GPIOE_OTYPER[10]->0
LDR R0,=0X50006004
LDR R1,[R0]
@10
BIC R1,R1,#(0X1<<10)
@8
BIC R1,R1,#(0X1<<8)
@9
BIC R1,R1,#(0X1<<9)
STR R1,[R0]
@设置PF10为推挽输出 GPIOE_OTYPER[10]->0
LDR R0,=0X50007004
LDR R1,[R0]
@10
BIC R1,R1,#(0X1<<10)
@6
BIC R1,R1,#(0X1<<6)
STR R1,[R0]
@设置PE10为低速输出  GPIOE_OSPEEDR[20:21]->00
LDR R0,=0X50006008
LDR R1,[R0]
@10
BIC R1,R1,#(0X1<<20)
@8
BIC R1,R1,#(0X1<<16)
@9
BIC R1,R1,#(0X1<<18)
STR R1,[R0]
@设置PF10为低速输出  GPIOE_OSPEEDR[20:21]->00
LDR R0,=0X50007008
LDR R1,[R0]
@10
BIC R1,R1,#(0X3<<20)
@6
BIC R1,R1,#(0X1<<12)
STR R1,[R0]
@设置PE10为输出无上下拉 GPIOE_PUPDR[20:21]->00
LDR R0,=0X5000600C
LDR R1,[R0]
@10
BIC R1,R1,#(0X1<<20)
@8
BIC R1,R1,#(0X1<<16)
@9
BIC R1,R1,#(0X1<<18)
STR R1,[R0]
@设置PF10为输出无上下拉 GPIOE_PUPDR[20:21]->00
LDR R0,=0X5000700C
LDR R1,[R0]
@10
BIC R1,R1,#(0X3<<20)
@6
BIC R1,R1,#(0X1<<12)
STR R1,[R0]@闪烁loop:BL wind_onBL led1_onbl delayBL led1_offBL led2_onbl delayBL led2_offBL led3_onbl delayBL led3_offBL power_onbl delayBL power_offBL wind_offb loop@LED1亮
led1_on:LDR R0,=0x50006014LDR R1,[R0]ORR R1,R1,#(0x1<<10)STR R1,[R0] mov pc,lr
@LED1灭
led1_off:LDR R0,=0x50006014LDR R1,[R0]BIC R1,R1,#(0x1<<10)STR R1,[R0] mov pc,lr@LED2亮
led2_on:LDR R0,=0x50007014LDR R1,[R0]ORR R1,R1,#(0x1<<10)STR R1,[R0] mov pc,lr
@LED2灭
led2_off:LDR R0,=0x50007014LDR R1,[R0]BIC R1,R1,#(0x1<<10)STR R1,[R0] mov pc,lr@LED3亮
led3_on:LDR R0,=0x50006014LDR R1,[R0]ORR R1,R1,#(0x1<<8)STR R1,[R0]mov pc,lr
@LED3灭
led3_off:LDR R0,=0x50006014LDR R1,[R0]BIC R1,R1,#(0x1<<8)STR R1,[R0] mov pc,lr@POWER
power_on:LDR R0,=0x50007014LDR R1,[R0]ORR R1,R1,#(0x1<<6)STR R1,[R0] mov pc,lrpower_off:LDR R0,=0x50007014LDR R1,[R0]BIC R1,R1,#(0x1<<6)STR R1,[R0] mov pc,lr@WIND
wind_on:LDR R0,=0x50006014LDR R1,[R0]ORR R1,R1,#(0x1<<9)STR R1,[R0] mov pc,lr
@LED1灭
wind_off:LDR R0,=0x50006014LDR R1,[R0]BIC R1,R1,#(0x1<<9)STR R1,[R0] mov pc,lr@封装汇编的延时函数
delay:LDR R1,=0X10000000
mm:cmp R1,#0SUBNE R1,R1,#1BNE mmmov pc,lr.end

现象:

xianxiang

这篇关于arm裸机测试led灯亮灭、风扇、马达等的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/386588

相关文章

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在