ARM汇编控制LED流水灯详解

发布时间:2026/10/27 19:44:10

ARM汇编控制LED流水灯详解 .text .global _start _start: 使能GPIOE的外设时钟 RCC_MP_AHB4ENSETR的第[4]设置为1即可使能GPIOE时钟 LDR R0,0X50000A28 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来保存到R1中 ORR R1,R1,#(0x34) 将第4位设置为1 将第5位设置为1 将GPIOF 将GPIOE STR R1,[R0] 将修改后的数值写回 设置PE10为输出 将GPIOE_MODER[21:20]设置为01就能够让PE10为输出工作模式 设置PE8为输出 将GPIOE_MODER[17:16]设置为01就能够让PE08为输出工作模式 LDR R0,0X50006000 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来保存到R1中 BIC R1,R1,#(0x3316) 将第21:2017:16清0 ORR R1,R1,#(0x1116) 将第21:20设置为01, 17:16设置为01 STR R1,[R0] 将修改后的数值写回 设置PF10为输出 将GPIOF_MODER[21:20]设置为01就能够让PF10为输出工作模式 LDR R0,0X50007000 指定寄存器的地址 LDR R1,[R0] 操作寄存器的值将它写到R1 BIC R1,R1,#(0x320) 将R1的2021位清0方便将这两位置位为01 ORR R1,R1,#(0x120) 将R1的21:20位置位为1 STR R1,[R0] 将修改后的数值写回 设置PE10为推完输出 将GPIOE_OTYPER寄存器[10]设置为0就能够让PE10以推挽输出模式进行工 设置PE8为推完输出 将GPIOE_OTYPER寄存器[8]设置为0就能够让PE8以推挽输出模式进行工作 LDR R0,0X50006004 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来保存到R1中 BIC R1,R1,#(0x58) 将第10,8位清0 STR R1,[R0] 将修改后的数值写回 设置PF10为推完输出 将GPIOF_OTYPER寄存器[10]设置为0就能够让PF10以推挽输出模式进行工作 LDR R0,0X50007004 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来保存到R1中 BIC R1,R1,#(0x110) 将第10清0 STR R1,[R0] 将修改后的数值写回 设置PE10PE8为低速输出将GPIOE_OTYPER寄存器[10],[8],设置为0能够让PE10,PE8为低俗输出 LDR R0,0X50006008 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来保存到R1中 BIC R1,R1,#(0x3316) STR R1,[R0] 设置PF10为低速输出 LDR R0,0X50007008 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来保存到R1中 BIC R1,R1,#(0x320) STR R1,[R0] 设置无上拉下拉电阻 LDR R0,0X5000600C 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来保存到R1中 BIC R1,R1,#(0x3316) 将17:16 和21:20设置为00表示无上拉电阻 STR R1,[R0] 将修改后的数值写回 LDR R0,0X5000700C 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来保存到R1中 BIC R1,R1,#(0x320) STR R1,[R0] 将修改后的数值写回 loop: 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 loop led1_on: 设置LED1亮 LDR R0,0X50006014 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来保存到R1中 ORR R1,R1,#(0x110) 将第10设置为1 高电平 STR R1,[R0] 将修改后的数值写回 mov pc,lr led1_off: 设置LED1关灯 LDR R0,0X50006014 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来保存到R1中 BIC R1,R1,#(0x110) 将第10设置为1 低电平 STR R1,[R0] 将修改后的数值写回 mov pc,lr led2_on: 设置LED2亮 LDR R0,0X50007014 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来保存到R1中 ORR R1,R1,#(0x110) 将第10设置为1 STR R1,[R0] 将修改后的数值写回 mov pc,lr led2_off: 设置LED2关灯 LDR R0,0X50007014 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来保存到R1中 BIC R1,R1,#(0x110) 将第10设置为1 STR R1,[R0] 将修改后的数值写回 mov pc,lr led3_on: 设置LED3亮 LDR R0,0X50006014 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来保存到R1中 ORR R1,R1,#(0x18) 将第8设置为1 STR R1,[R0] 将修改后的数值写回 mov pc,lr led3_off: 设置LED2关灯 LDR R0,0X50006014 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来保存到R1中 BIC R1,R1,#(0x18) 将第8设置为1 STR R1,[R0] 将修改后的数值写回 mov pc,lr 延时函数 delay: LDR R3,0X10000000 mm: cmp R3,#0 subne R3,R3,#1 bne mm mov pc,lr .end
延伸阅读

更多相关文章

2026/10/25 11:04:15

大数据毕设选题推荐:基于 SpringBoot 的超市客流数据处理分析系统的设计与实现 大型超市营收数据处理可视化系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/10/25 7:08:38

2026工业废水用聚丙烯酰胺生产厂家盘点 避坑指南

工业废水用聚丙烯酰胺核心选型要求工业废水处理场景复杂,不同行业废水的污染物成分、PH值、悬浮物浓度差异显著,聚丙烯酰胺的选型直接决定水处理效率与排放合规性,是工业企业环保运维的核心采购决策项。当前国内水处理药剂赛道供应商数量较多…

2026/10/27 7:30:19

AD7175-8与PIC18F45K42构建高精度信号采集系统

1. 项目概述:高精度信号采集系统设计在工业测量、医疗设备和科学仪器等领域,对微弱信号的精确采集一直是工程师面临的挑战。AD7175-8作为ADI公司推出的高性能ADC(模数转换器),配合PIC18F45K42微控制器的强大处理能力&a…

2026/10/27 19:40:03

AI代理如何重塑消费决策与商业生态

1. 当AI代理开始主导消费行为:一场静默的商业革命上周调试购物机器人时,我意外发现系统自动续费了三年份的猫粮——尽管我根本没有养猫。这个令人啼笑皆非的事件背后,隐藏着一个正在发生的重大转变:AI代理正在从服务提供者转变为具…

2026/10/27 19:40:03

CMake 3.10.0 for Windows:工业级构建的版本锚点与实战指南

简介:本资源为CMake 3.10.0官方Windows 64位安装包(RAR格式),专为Windows平台开发者、C项目构建初学者及跨平台工程实践者提供稳定可靠的构建工具支持,有效解决多编译器(如MSVC)、多IDE&#xf…

2026/10/27 19:40:03

n8n自动化工具核心概念与实战应用指南

1. 为什么需要理解n8n的核心概念? 第一次接触n8n时,我完全被它复杂的界面搞懵了。作为一个开源的自动化工具,n8n的强大之处在于它的灵活性,但这也意味着学习曲线相对陡峭。经过半年多的实际项目应用,我发现真正理解它…

2026/10/27 19:40:03

智元机器人技术演进与核心突破解析

1. 智元机器人技术演进全景图(2015-2025)2015年我在深圳科技园第一次见到实验室里的机械臂时,它还在用示教器进行点位编程。十年后的今天,当我看着搭载多模态感知系统的智元机器人自主完成精密装配任务时,不禁感慨技术…

2026/10/27 19:40:03

有机与无机的本质区别:从碳骨架、键合方式到生命系统

1. 从厨房灶台到显微镜下:为什么“有机”不等于“健康”,“无机”也不代表“危险”你有没有在超市买酱油时盯着配料表发过呆?看到“谷氨酸钠”就皱眉,看到“酵母提取物”却觉得天然;刷到短视频说“纯有机蔬菜不含农药”…

2026/10/27 19:35:02

AI技术变革中的资本博弈与创新路径

1. 技术变革中的资本力量博弈最近和几位做早期投资的朋友聊天,他们桌上摆着的BP(商业计划书)十份里有八份都带着"AI"这个标签。这让我想起2014年那波O2O创业潮,只不过这次的主角换成了大模型和生成式AI。作为经历过三波…

2026/10/27 14:24:03

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/27 9:34:54

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/27 0:59:21

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式19_“模式选错”的典型代价

“模式选错”的典型代价 摘要 在软件工程中,设计模式、架构模式、并发模式乃至团队协作模式的选择,往往在项目早期就决定了后续的开发效率和维护成本。本文通过多个真实场景,剖析“模式选错”带来的典型代价——包括返工成本、技术债务累积、…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式20_新手推荐路径

新手推荐路径 摘要 在 AI 辅助开发工具快速普及的今天,新手面对最多的困惑往往不是"工具够不够强",而是"我该从哪一步开始用"。本文提出一条经过实践验证的三阶段学习路径:先从 Ask(问答式交互)起…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑