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

相关推荐
Tlog嵌入式15 小时前
蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键
arm开发·stm32·单片机·mcu·物联网·蓝桥杯·iot
Q8343158191 天前
华为 海思22AP10(SS524)H.265 编解码处理器用户指南
arm开发·人工智能·嵌入式硬件·音视频·硬件工程·h.265·视频编解码
星羽空间1 天前
win11下 keil报错Cannot load driver ‘D:\Keil_v5\ARM\Segger\JL2CM3.dll‘
arm开发·keil
日晨难再1 天前
AMBA:APB的历史(从APB1到APB5)
arm开发·arm·硬件工程·fpga·数字ic
Tlog嵌入式2 天前
蓝桥杯【物联网】零基础到国奖之路:十八. 扩展模块之光敏和AS312
arm开发·stm32·单片机·mcu·物联网·蓝桥杯·iot
汽车电子助手2 天前
【STM32开发环境搭建】-4-在STM32CubeMX中新增Keil(MDK-ARM) 5的工程目录(包含指定路径的C和H文件)
c语言·arm开发·stm32·stm32cubemx·keil
海滩游侠2 天前
ARM Assembly 6: Shift 和 Rotate
arm开发
htx nb3 天前
ARM 架构、cpu
arm开发
极客小张3 天前
基于STM32的远程工业控制系统架构设计:MQTT通信、React界面与FreeRTOS优化的综合应用
c语言·arm开发·stm32·物联网·算法·react.js·毕业设计
勾栏听曲_03 天前
ARM6818开发板画任意矩形,圆形,三角形,五角星,6818开发板画太极,画五星红旗(含码源与思路)
c语言·arm开发·单片机·嵌入式硬件·硬件工程