2023/12/21作业

思维导图

代码

.text

.global _start

_start:

@灯1

@gpio时钟使能 [4]->1 0x5000A28

LDR R0,=0x50000A28 @指定寄存器地址

LDR R1,[R0]@将寄存器取出放到R1

ORR R1,R1,#(0x1<<4)@将第四位设置为1

STR R1,[R0]@读取R0寄存器到R1

@PE10为输出 [21:20]->01 0x50006000

LDR R0,=0X50006000

LDR R1,[R0]

BIC R1,R1,#(0x3<<20)

ORR R1,R1,#(0x1<<20)

STR R1,[R0]

@PE10为推挽输出[10]->0 0x50006004

LDR R0,=0X50006004

LDR R1,[R0]

BIC R1,R1,#(0x1<<10)

STR R1,[R0]

@PE10为低速输出 [21:20]->00 0x5006008

LDR R0,=0X50006008

LDR R1,[R0]

BIC R1,R1,#(0x3<<20)

STR R1,[R0]

@PE10为无上下拉电阻 [21:20]->00 0x500600c

LDR R0,=0X5000600c

LDR R1,[R0]

BIC R1,R1,#(0x3<<20)

STR R1,[R0]

@灯2

@gpio时钟使能 [4]->1 0x5000A28

LDR R0,=0x50000A28 @指定寄存器地址

LDR R1,[R0]@将寄存器取出放到R1

ORR R1,R1,#(0x1<<5)@将第五位设置为1

STR R1,[R0]@读取R0寄存器到R1

@PE10为输出 [21:20]->01 0x50007000

LDR R0,=0X50007000

LDR R1,[R0]

BIC R1,R1,#(0x3<<20)

ORR R1,R1,#(0x1<<20)

STR R1,[R0]

@PE10为推挽输出[10]->0 0x50007004

LDR R0,=0X50007004

LDR R1,[R0]

BIC R1,R1,#(0x1<<10)

STR R1,[R0]

@PE10为低速输出 [21:20]->00 0x5007008

LDR R0,=0X50007008

LDR R1,[R0]

BIC R1,R1,#(0x3<<20)

STR R1,[R0]

@PE10为无上下拉电阻 [21:20]->00 0x500700c

LDR R0,=0X5000700c

LDR R1,[R0]

BIC R1,R1,#(0x3<<20)

STR R1,[R0]

@灯3

@gpio时钟使能 [4]->1 0x5000A28

LDR R0,=0x50000A28 @指定寄存器地址

LDR R1,[R0]@将寄存器取出放到R1

ORR R1,R1,#(0x1<<4)@将第四位设置为1

STR R1,[R0]@读取R0寄存器到R1

@PE10为输出 [17:16]->01 0x50006000

LDR R0,=0X50006000

LDR R1,[R0]

BIC R1,R1,#(0x3<<16)

ORR R1,R1,#(0x1<<16)

STR R1,[R0]

@PE10为推挽输出[8]->0 0x50006004

LDR R0,=0X50006004

LDR R1,[R0]

BIC R1,R1,#(0x1<<8)

STR R1,[R0]

@PE10为低速输出 [17:16]->00 0x5006008

LDR R0,=0X50006008

LDR R1,[R0]

BIC R1,R1,#(0x3<<16)

STR R1,[R0]

@PE10为无上下拉电阻 [17:16]->00 0x500600c

LDR R0,=0X5000600c

LDR R1,[R0]

BIC R1,R1,#(0x3<<16)

STR R1,[R0]

flash:

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

bl led1_on

bl led2_on

bl led3_on

bl delay

bl led1_off

bl led2_off

bl led3_off

bl delay

b flash

@led1

led1_on:

@gpio[10]->1 0x50006014

LDR R0,=0X50006014

LDR R1,[R0]

ORR R1,R1,#(0x1<<10)

STR R1,[R0]

MOV PC,LR

led1_off:

@gpio[10]->0 0x50006014

LDR R0,=0X50006014

LDR R1,[R0]

BIC R1,R1,#(0x1<<10)

STR R1,[R0]

MOV PC,LR

@led2

led2_on:

@gpio[10]->1 0x50007014

LDR R0,=0X50007014

LDR R1,[R0]

ORR R1,R1,#(0x1<<10)

STR R1,[R0]

MOV PC,LR

led2_off:

@gpio[10]->0 0x50007014

LDR R0,=0X50007014

LDR R1,[R0]

BIC R1,R1,#(0x1<<10)

STR R1,[R0]

MOV PC,LR

@led3

led3_on:

@gpio[10]->1 0x50006014

LDR R0,=0X50006014

LDR R1,[R0]

ORR R1,R1,#(0x1<<8)

STR R1,[R0]

MOV PC,LR

led3_off:

@gpio[10]->0 0x50006014

LDR R0,=0X50006014

LDR R1,[R0]

BIC R1,R1,#(0x1<<8)

STR R1,[R0]

MOV PC,LR

delay:

LDR R3,=0X10000000

mm:

cmp r3,#0

subne r3,r3,#1

bne mm

mov pc,lr

.end

相关推荐
代码改变世界ctw8 小时前
2.2 TF-A在ARM生态系统中的角色
汇编·arm开发·安全·trustzone·atf·optee
baynk14 小时前
逆向入门(9)汇编篇-bound指令的学习
汇编·学习
网易独家音乐人Mike Zhou17 小时前
【Linux应用】开发板USB共享网络,网线或USB以太网共享网络(局域网连接PC和开发板,实现PC给开发板共享网络,USB通过NDIS驱动共享)
linux·网络·单片机·mcu·物联网·嵌入式·iot
无小道1 天前
c++--typedef和#define的用法及区别
c语言·开发语言·汇编·c++
Freak嵌入式2 天前
一文速通 Python 并行计算:13 Python 异步编程-基本概念与事件循环和回调机制
开发语言·python·嵌入式·协程·硬件·异步编程
不脱发的程序猿2 天前
SoC程序如何使用单例模式运行
linux·嵌入式
鑫宇吖2 天前
Polyspace作为MISRA-C合规性检查工具,其检查规则会根据目标C语言标准(C90或C99)动态调整限值要求。
c语言·嵌入式·c99·c90·polyspace·misra-c合规性检查
代码改变世界ctw3 天前
ARM汇编编程(AArch64架构)课程 - 第5章函数调用规范
汇编·arm开发·架构
liulilittle3 天前
C/C++ inline-hook(x86)高级函数内联钩子
c语言·开发语言·汇编·c++·hook·底层·钩子
代码改变世界ctw3 天前
ARM汇编编程(AArch64架构)课程 - 第8章:控制流与循环
汇编·arm开发