ARM 实例代码

.text

.global _start

_start:

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

LDR r0,=0x50000A28

LDR r1,[r0]

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

STR r1,[r0]

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

LDR r0,=0x50000A28

LDR r1,[r0]

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

STR r1,[r0]

LDR r0,=0x50000A28

LDR r1,[r0]

ORR r1,r1,#(0x1<<1)

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]

LDR r0,=0x50007000

LDR r1,[r0]

BIC r1,r1,#(0x3<<12)

ORR r1,r1,#(0x1<<12)

STR r1,[r0]

LDR r0,=0x50003000

LDR r1,[r0]

BIC r1,r1,#(0x3<<12)

ORR r1,r1,#(0x1<<12)

STR r1,[r0]

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

LDR r0,=0x50006004

LDR r1,[r0]

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

STR r1,[r0]

LDR r0,=0x50007004

LDR r1,[r0]

BIC r1,r1,#(0x1<<6)

STR r1,[r0]

LDR r0,=0x50003004

LDR r1,[r0]

BIC r1,r1,#(0x1<<6)

STR r1,[r0]

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

LDR r0,=0x50006008

LDR r1,[r0]

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

STR r1,[r0]

LDR r0,=0x50007008

LDR r1,[r0]

BIC r1,r1,#(0x3<<12)

STR r1,[r0]

LDR r0,=0x50003008

LDR r1,[r0]

BIC r1,r1,#(0x3<<12)

STR r1,[r0]

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

LDR r0,=0x5000600C

LDR r1,[r0]

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

STR r1,[r0]

LDR r0,=0x5000700C

LDR r1,[r0]

BIC r1,r1,#(0x3<<12)

STR r1,[r0]

LDR r0,=0x5000300C

LDR r1,[r0]

BIC r1,r1,#(0x3<<12)

STR r1,[r0]

loop:

@LED1灯亮

bl led1_on

@bl tim4_ch1_on

bl delay

@LED1灯灭

bl led1_off

bl delay

bl led2_on

bl delay

bl led2_off

bl delay

@bl tim4_ch1_off

b loop

led1_on:

LDR r0,=0x50006014

LDR r1,[r0]

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

STR r1,[r0]

MOV pc,lr

led1_off:

LDR r0,=0x50006014

LDR r1,[r0]

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

STR r1,[r0]

MOV pc,lr

led2_on:

LDR r0,=0x50007014

LDR r1,[r0]

ORR r1,r1,#(0x1<<6)

STR r1,[r0]

MOV pc,lr

led2_off:

LDR r0,=0x50007014

LDR r1,[r0]

BIC r1,r1,#(0x1<<6)

STR r1,[r0]

MOV pc,lr

tim4_ch1_on:

LDR r0,=0x50003014

LDR r1,[r0]

ORR r1,r1,#(0x1<<6)

STR r1,[r0]

MOV pc,lr

tim4_ch1_off:

LDR r0,=0x50003014

LDR r1,[r0]

BIC r1,r1,#(0x1<<6)

STR r1,[r0]

MOV pc,lr

delay:

LDR R1,=0X10000000

mm:

cmp R1,#0

SUBNE R1,R1,#1

BNE mm

mov pc,lr

.end

相关推荐
代码游侠10 天前
STM32开发——基础外设
linux·运维·arm开发·stm32·单片机·嵌入式硬件·学习
代码游侠11 天前
Linux驱动复习——驱动
linux·运维·arm开发·笔记·学习
古译汉书11 天前
【IoT死磕系列】Day 6:工业控制底层大动脉—CAN总线
linux·网络·arm开发·单片机·物联网·tcp/ip
姜太公钓鲸23311 天前
STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器。上述文字中的内核是什么意思?作用是什么?
arm开发·stm32·嵌入式硬件
日更嵌入式的打工仔11 天前
FIQ 与 IRQ
arm开发·笔记
The️12 天前
STM32-FreeRTOS操作系统-软件定时器
arm开发·stm32·单片机·嵌入式硬件·mcu·c#
szxinmai主板定制专家12 天前
RK3588 8个USB工控解决方案,适用于机器视觉,工业互联等
arm开发·人工智能·fpga开发
我在人间贩卖青春12 天前
ARM编程模型
arm开发·arm工作模式
安全二次方security²12 天前
【CVE-2025-0647】ARM CPU漏洞安全通告
arm开发·安全·cve-2025-0647·tlbi·cpp rctx 指令·c1-ultra·虚拟化漏洞
道亦无名13 天前
armBitRevIndexTable1024
arm开发