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

相关推荐
GilgameshJSS13 小时前
STM32H743-ARM27例程-TCP_Server
c语言·arm开发·stm32·单片机·tcp/ip
切糕师学AI13 小时前
ARM Cortex-M 中的断点单元FPB是什么?
arm开发·cortex-m
碰大点18 小时前
Ubuntu 16.04交叉编译arm-linux-gnueabihf的QT5.6.2
linux·arm开发·qt·ubuntu·arm-linux
我是场18 小时前
AI入门 - 什么是ARM SME2 AI加速指令集
arm开发·人工智能
PeaceKeeper718 小时前
简易的arm-linux库文件移植
linux·运维·arm开发
YouEmbedded1 天前
ARM开发板基础与文件传输
arm开发·vscode·交叉编译·mobaxterm
凤山老林1 天前
SpringBoot 如何实现零拷贝:深度解析零拷贝技术
java·linux·开发语言·arm开发·spring boot·后端
Yuki’2 天前
Linux系统的ARM库移植
linux·arm开发
GilgameshJSS2 天前
STM32H743-ARM例程26-TCP_CLIENT
c语言·arm开发·stm32·单片机·tcp/ip
瑞禧生物ruixibio3 天前
CY5-3-IAA|CY5标记3-吲哚乙酸|化学结构与功能特性
arm开发