STM32MP157汇编流水灯

2023-10-09 03:04
文章标签 流水 汇编 stm32mp157

本文主要是介绍STM32MP157汇编流水灯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

.text 
.global _start
_start: /* 使能GPIOE、GPIOF寄存器   RCC_MP_AHB4ENSETR * 基地址: 0x50000000 + 偏移地址: 0xA28 = 0x50000A28* RCC_MP_AHB4ENSETR[4]->1	RCC_MP_AHB4ENSETR[5]->1*/	LDR R0,=0x50000A28LDR R1,[R0]ORR R1,R1,#(0x1<<4)STR R1,[R0]LDR R0,=0x50000A28LDR R1,[R0]ORR R1,R1,#(0x1<<5)STR R1,[R0]/* 设置PE10,PE8,PF10引脚为输出模式* GPIOF基地址: 0x50007000 + 偏移地址: 0x00 = 0x50007000* GPIOE基地址: 0x50006000 + 偏移地址: 0x00 = 0x50006000* PE10: GPIOE_MODER[21:20]->01* PF10: GPIOF_MODER[21:20]->01* PE8:  GPIOE_MODER[17:16]->01*/LDR R0, =0x50007000LDR R1,[R0]BIC R1,R1,#(0x3<<20)ORR R1,R1,#(0x1<<20)STR R1,[R0]LDR R0, =0x50006000LDR R1,[R0]BIC R1,R1,#(0x3<<20)ORR R1,R1,#(0x1<<20)STR R1,[R0]LDR R0, =0x50006000LDR R1,[R0]BIC R1,R1,#(0x3<<16)ORR R1,R1,#(0x1<<16)STR R1,[R0]/* 设置PE10,PE8,PF10引脚为推挽输出* GPIOF基地址: 0x50007000 + 偏移地址: 0x04 = 0x50007004* GPIOE基地址: 0x50006000 + 偏移地址: 0x04 = 0x50006004* GPIOE_OTYPER[10]->0* GPIOF_OTYPER[10]->0* GPIOE_OTYPER[8]->0*/LDR R0,=0x50007004LDR R1,[R0]BIC R1,R1,#(0x1<<10)STR R1,[R0]LDR R0,=0x50006004LDR R1,[R0]BIC R1,R1,#(0x1<<10)STR R1,[R0]LDR R0,=0x50006004LDR R1,[R0]BIC R1,R1,#(0x1<<8)STR R1,[R0]/* 设置PE10,PE8,PF10引脚为低速输出* GPIOF基地址: 0x50007000 + 偏移地址: 0x08 = 0x50007008* GPIOE基地址: 0x50006000 + 偏移地址: 0x08 = 0x50006008* GPIOE_OSPEEDR[21:20]->00* GPIOF_OSPEEDR[21:20]->00* GPIOE_OSPEEDR[17:16]->00*/LDR R0,=0x50007008LDR R1,[R0]BIC R1,R1,#(0x3<<20)STR R1,[R0]LDR R0,=0x50006008LDR R1,[R0]BIC R1,R1,#(0x3<<20)STR R1,[R0]LDR R0,=0x50006008LDR R1,[R0]BIC R1,R1,#(0x3<<16)STR R1,[R0]/* 设置PE10,PE8,PF10引脚没有上下拉电阻* GPIOF基地址: 0x50007000 + 偏移地址: 0x0C = 0x5000700C* GPIOE基地址: 0x50006000 + 偏移地址: 0x0C = 0x5000600C* GPIOE_PUPDR[21:20]->00* GPIOF_PUPDR[21:20]->00* GPIOE_PUPDR[17:16]->00*/LDR R0,=0x5000700CLDR R1,[R0]BIC R1,R1,#(0x3<<20)STR R1,[R0] LDR R0,=0x5000600CLDR R1,[R0]BIC R1,R1,#(0x3<<20)STR R1,[R0]LDR R0,=0x5000600CLDR R1,[R0]BIC R1,R1,#(0x3<<16)STR R1,[R0]/* 设置PE10,PE8,PF10实现流水灯* GPIOF基地址: 0x50007000 + 偏移地址: 0x14 = 0x50007014* GPIOE基地址: 0x50006000 + 偏移地址: 0x14 = 0x50006014* GPIOE_ODR[10]->1* GPIOF_ODR[10]->1* GPIOE_ODR[8]->1*/
loop:LDR R0,=0X50006014LDR R1,[R0]ORR R1,R1,#(0x1<<10)STR R1,[R0]BL delayLDR R0,=0X50006014LDR R1,[R0]BIC R1,R1,#(0x1<<10)STR R1,[R0]BL delayLDR R0,=0X50007014LDR R1,[R0]ORR R1,R1,#(0x1<<10)STR R1,[R0]BL delayLDR R0,=0X50007014LDR R1,[R0]BIC R1,R1,#(0x1<<10)STR R1,[R0]BL delayLDR R0,=0X50006014LDR R1,[R0]ORR R1,R1,#(0x1<<8)STR R1,[R0]BL delayLDR R0,=0X50006014LDR R1,[R0]BIC R1,R1,#(0x1<<8)STR R1,[R0]BL delayb loop/* 延时函数 */delay:LDR R4,=0X1000000
mm:CMP R4,#0SUBNE R4,R4,#1BNE mmMOV PC,LR.end

在这里插入图片描述

这篇关于STM32MP157汇编流水灯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

物联网之流水LED灯、正常流水灯、反复流水灯、移动流水灯

MENU 硬件电路设计软件程序设计正常流水LED灯反复流水LED灯移动流水LED灯 硬件电路设计 材料名称数量直插式LED1kΩ电阻杜邦线(跳线)若干面包板1 每一个LED的正极与开发板一个GPIO引脚相连,并串联一个电阻,负极接GND。 当然也可以选择只使用一个电阻。 软件程序设计 正常流水LED灯 因为要用到多个GPIO引脚,所以最好把所有的GPI

汇编:嵌入式软件架构学习资源

成为嵌入式软件架构设计师需要掌握多方面的知识,包括嵌入式系统、实时操作系统、硬件接口、软件设计模式等。 以下是一些推荐的博客和网站,可以帮助你深入学习嵌入式软件架构设计: ### 1. **Embedded.com**    - **网址**: [Embedded.com](https://www.embedded.com/)    - **简介**: 这是一个专注于嵌入式系统设计的专业网

批量生成编号(A~Z+3位流水编号)

/*** 批量生成编号* @param num* @param warehouseId* @return*/public synchronized List<String> generatCodeList(int num,long warehouseId){MesRack rack = this.getCurrentRack(warehouseId);String oldRackCode;Lis

GDB 查看汇编

查看汇编 x disassemble

C语言-程序环境 #预处理 #编译 #汇编 #链接 #执行环境

文章目录 前言 一、程序的环境翻译和执行环境 二、翻译环境 (一)、整体把握 (一)、编译 1、预处理(预编译) 2、编译 a、词法分析 b、语法分析 c、语义分析 d、符号汇总 3、汇编 (二)、链接 三、运行环境 总结​​​​​​​ 前言 路漫漫其修远兮,吾将上下而求索; PS:本文参考了《程序员的自我修养》,致敬大佬们! 一、程序的

git 学习的流水log

git命令联系 配置以及修改全局user信息 git config --global user.name 'you_name' git config --global user.email 'you_email@qq.com' 现有设备中的所有配置 git config --list 现有设备中的所有配置 git config --list --local/--global/--syste

Linux 技巧汇编

10个重要的Linux ps命令实战 显示所有当前进程 根据用户过滤进程 通过cpu和内存使用来过滤进程 通过进程名和PID过滤 根据线程来过滤进程 树形显示进程 显示安全信息 格式化输出root用户(真实的或有效的UID)创建的进程 使用PS实时监控进程状态 https://linux.cn/article-4743-1.html Python 云服务器应用 | Http

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编

文章目录 一、裸机开发(21个)二、嵌入式Linux驱动例程三、汇编3.1 处理器内部数据传输指令3.2 存储器访问指令3.3 压栈和出栈指令3.4 跳转指令3.5 算术运算指令3.6 逻辑运算指令 一、裸机开发(21个) 二、嵌入式Linux驱动例程 三、汇编 我们在进行嵌入式 Linux 开发的时候是绝对要掌握基本的 ARM 汇编,因为 Cortex-A 芯片一

GCC编程过程:预处理-编译-汇编-链接

 在Linux下进行C语言编程,必然要采用GNU GCC来编译C源代码生成可执行程序。 一、GCC快速入门 Gcc指令的一般格式为:Gcc [选项] 要编译的文件 [选项] [目标文件] 其中,目标文件可缺省,Gcc默认生成可执行的文件名为:编译文件.out 我们来看一下经典入门程序"Hello World!" # vi hello.c #include <stdlib.h> #