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

相关推荐
梁洪飞40 分钟前
解决摄像头驱动起不来的情况
linux·arm开发·图像处理·嵌入式硬件·arm
lysine_2 小时前
实现ubuntu两个网口桥接
linux·服务器·网络·arm开发·ubuntu
代码游侠10 小时前
ARM开发——阶段问题综述(二)
运维·arm开发·笔记·单片机·嵌入式硬件·学习
_chirs19 小时前
编译不依赖动态库的FFMPEG(麒麟国防 V10)
arm开发·ffmpeg
飞凌嵌入式21 小时前
1块集成了4核Cortex-A7高性能CPU、1颗RISC-V MCU、多种高速总线、还兼容树莓派的T153低成本开发板
linux·arm开发·嵌入式硬件·risc-v
若风的雨1 天前
【 ARMv8多核处理器启动方案设计】
linux·arm开发
切糕师学AI1 天前
ARM 汇编指令系列文章导读
汇编·arm开发
切糕师学AI1 天前
ARM 汇编语言语法小解
arm开发
若风的雨1 天前
ATF + ARMv8 多核启动流程图
linux·arm开发
若风的雨1 天前
安全方案原理与作用详解
linux·arm开发