ARM流水灯

.text

.global _start

_start:

@LED1闪烁

@1.RCC时钟使能GPIOE RCC_MP_AHB4ENSETR[4]->1

LDR R0,=0x50000a28

LDR R1,[R0]

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

STR R1,[R0]

@2.设置PE10为输出模式 GPIOE_MODER[21:20]->01

@先清零

LDR R0,=0x50006000

LDR R1,[R0]

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

@再置位

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

STR R1,[R0]

@3.设置PE10为推挽输出 GPIO_OTYPER[10]->0

LDR R0,=0x50006004

LDR R1,[R0]

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

STR R1,[R0]

@4.设置PE10为低速输出 GPIOE_OSPEEDR[21:20]->00

LDR R0,=0x50006008

LDR R1,[R0]

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

STR R1,[R0]

@5.设置PE10输出无上拉下拉 GPIO_PUPDR[21:20]->00

LDR R0,=0x5000600c

LDR R1,[R0]

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

STR R1,[R0]

@LED2闪烁

@1.RCC时钟使能GPIOF RCC_MP_AHB4ENSETR[5]->1

LDR R0,=0x50000a28

LDR R1,[R0]

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

STR R1,[R0]

@2.设置PF10为输出模式 GPIOF_MODER[21:20]->01

@先清零

LDR R0,=0x50007000

LDR R1,[R0]

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

@再置位

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

STR R1,[R0]

@3.设置PF10为推挽输出 GPIO_OTYPER[10]->0

LDR R0,=0x50007004

LDR R1,[R0]

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

STR R1,[R0]

@4.设置PF10为低速输出 GPIOF_OSPEEDR[21:20]->00

LDR R0,=0x50007008

LDR R1,[R0]

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

STR R1,[R0]

@5.设置PF10输出无上拉下拉 GPIO_PUPDR[21:20]->00

LDR R0,=0x5000700c

LDR R1,[R0]

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

STR R1,[R0]

@LED3闪烁

@1.RCC时钟使能GPIOE RCC_MP_AHB4ENSETR[4]->1

LDR R0,=0x50000a28

LDR R1,[R0]

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

STR R1,[R0]

@2.设置PE8为输出模式 GPIOE_MODER[17:16]->01

@先清零

LDR R0,=0x50006000

LDR R1,[R0]

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

@再置位

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

STR R1,[R0]

@3.设置PE8为推挽输出 GPIO_OTYPER[8]->0

LDR R0,=0x50006004

LDR R1,[R0]

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

STR R1,[R0]

@4.设置PE8为低速输出 GPIOE_OSPEEDR[17:16]->00

LDR R0,=0x50006008

LDR R1,[R0]

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

STR R1,[R0]

@5.设置PE8输出无上拉下拉 GPIO_PUPDR[17:16]->00

LDR R0,=0x5000600c

LDR R1,[R0]

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

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亮

led1_on:

LDR R0,=0x50006014

LDR R1,[R0]

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

STR R1,[R0]

mov pc,lr

@LED1灭

led1_off:

LDR R0,=0x50006014

LDR R1,[R0]

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

STR R1,[R0]

mov pc,lr

@LED2亮

led2_on:

LDR R0,=0x50007014

LDR R1,[R0]

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

STR R1,[R0]

mov pc,lr

@LED2灭

led2_off:

LDR R0,=0x50007014

LDR R1,[R0]

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

STR R1,[R0]

mov pc,lr

@LED3亮

led3_on:

LDR R0,=0x50006014

LDR R1,[R0]

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

STR R1,[R0]

mov pc,lr

@LED3灭

led3_off:

LDR R0,=0x50006014

LDR R1,[R0]

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

STR R1,[R0]

mov pc,lr

@封装汇编的延时函数

delay:

LDR R1,=0X10000000

mm:

cmp R1,#0

SUBNE R1,R1,#1

BNE mm

mov pc,lr

.end

相关推荐
satadriver2 天前
Qemu arm操作系统开发环境
arm开发
待什么青丝3 天前
【TMS570LC4357】之相关驱动开发学习记录1
c语言·arm开发·驱动开发·学习
南玖yy4 天前
x86 汇编逻辑运算全解析:从【位操作】到实际应用(AND,OR,NOT,XOR,TEST)
开发语言·汇编·arm开发·后端·架构·策略模式
菜只因C5 天前
嵌入式系统:从技术原理到未来趋势(驱动程序篇)
arm开发
!chen7 天前
鲲鹏Arm+麒麟V10 K8s 离线部署教程
java·arm开发·kubernetes
ScilogyHunter7 天前
ARM P15协处理器指令详解:架构、编程与应用实践
arm开发·协处理器指令·cp15
apolloyhl8 天前
1-Wire 一线式总线:从原理到实战,玩转 DS18B20 温度采集
arm开发·stm32·单片机·嵌入式硬件
二进制coder8 天前
芯片:数字时代的算力引擎——鲲鹏、升腾、海光、Intel 全景解析
arm开发·架构·硬件架构
荆楚闲人8 天前
Keil MDK5.37或更高版本不再预装ARM Compiler Version5导致编译错误的解决方法
arm开发
MonKingWD8 天前
【Redis原理】四万字总结Redis网络模型的全部概念
网络·arm开发·redis