ARM_LED实现

cs 复制代码
.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]

@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为推挽输出  GPIOE_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输出无上拉下拉 GPIOE_PUPDR[21:20]->00

LDR R0,=0x5000600C
LDR R1,[R0]
BIC R1,R1,#(0x3<<20)
STR R1,[R0]

@led2
ldr r2,=0x50000a28
ldr r3,[r2]
orr r3,r3,#(0x1<<5)
str r3,[r2]

ldr r2,=0x50007000
ldr r3,[r2]
bic r3,r3,#(0x3<<20)
orr r3,r3,#(0x1<<20)
str r3,[r2]

ldr r2,=0x50007004
ldr r3,[r2]
bic r3,r3,#(0x1<<10)
str r3,[r2]

ldr r2,=0x50007008
ldr r3,[r0]
bic r3,r3,#(0x3<<20)
str r3,[r0]

ldr r2,=0x5000700C
ldr r3,[r0]
bic r3,r3,#(0x3<<20)
str r3,[r0]

@led3
ldr r4,=0x50000a28
ldr r5,[r4]
orr r5,r5,#(0x1<<4)
str r5,[r4]

ldr r4,=0x50006000
ldr r5,[r4]
bic r5,r5,#(0x3<<16)
orr r5,r5,#(0x1<<16)
str r5,[r4]

ldr r4,=0x50006004
ldr r5,[r4]
bic r5,r5,#(0x1<<8)
str r5,[r4]

ldr r4,=0x50006008
ldr r5,[r4]
bic r5,r5,#(0x3<<16)
str r5,[r4]

ldr r4,=0x5000600C
ldr r5,[r4]
bic r5,r5,#(0x3<<16)
str r5,[r4]

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_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 r2,=0x50007014
ldr r3,[r2]
orr r3,r3,#(0x1<<10)
str r3,[r2]
mov pc,lr

led2_off:
ldr r2,=0x50007014
ldr r3,[r2]
bic r3,r3,#(0x1<<10)
str r3,[r2]
mov pc,lr

led3_on:
ldr r4,=0x50006014
ldr r5,[r4]
orr  r5,r5,#(0x1<<8)
str r5,[r4]
mov pc,lr

led3_off:
ldr r4,=0x50006014
ldr r5,[r4]
bic r5,r5,#(0x1<<8)
str r5,[r4]
mov pc,lr

@封装汇编的延时函数
delay:
    LDR R1,=0X10000000
mm:
    cmp R1,#0
    SUBNE R1,R1,#1
    BNE mm
    mov pc,lr	

.end
相关推荐
神罚天下ET3 小时前
典型arm位单片机启动流程(从上电到main.c)
c语言·arm开发·单片机
振南的单片机世界10 小时前
高优先级“插队”,低优先级让路:中断嵌套的核心规则
arm开发·stm32·单片机·嵌入式硬件
Dlrb12111 天前
ARM---IMX6ULL 的 PWM 模块介绍及其程序的编写
arm开发·arm·pwm·imx6ull·lcd屏幕
byte轻骑兵1 天前
如何定制BlueZ编译:开启/关闭BLE/音频模块的编译参数配置
linux·arm开发·蓝牙·bluez·电脑蓝牙
亿道电子Emdoor2 天前
【Arm】MSP和PSP的区别简介
c语言·arm开发·单片机·mcu
Lee_jerome3 天前
《C/C++编译全家桶:g++四阶段、.a与.so区别、CMake构建、ARM交叉编译,这篇全讲透了》
c语言·开发语言·arm开发·c++·编译·cmake·cmakelists
Dlrb12113 天前
ARM---IMX6ULL的LCD模块简介及LCD驱动程序的编写
arm开发·lcd·arm·imx6ull·显存·像素
深信达沙箱4 天前
漏洞修不完、合规过不了?先御OS如何让嵌入式设备‘出厂即合规
arm开发·操作系统·嵌入式操作系统
木木_王4 天前
嵌入式学习 | STM32 裸板驱动开发(Day05)超详细复习笔记外部中断 EXTI、NVIC 优先级、串口中断实战
arm开发·stm32·学习
振南的单片机世界4 天前
3.5T静默分帧,CRC16校验:Modbus-RTU帧结构解析
arm开发·stm32·单片机·嵌入式硬件