ArmDAY 4

代码:


.text 
.global _start
_start: 
RCC_EN:
	@RCC
	ldr r0,=0x50000a28
	ldr r1,[r0]
	orr r1,#(0x1 << 4)
	orr r1,#(0x1 << 5)
	str r1,[r0]

LED1_INIT:
	@MODER
	ldr r0,=0x50006000
	ldr r1,[r0]
	bic r1,#(0x3 << 20)
	orr r1,#(0x1 << 20)
	str r1,[r0],#4
	@OTYPER
	ldr r1,[r0]
	bic r1,#(0x1 << 10)
	str r1,[r0],#4
	@OSPEEDR
	ldr r1,[r0]
	bic r1,#(0x3 << 20)
	str r1,[r0],#4
	@PUPDR
	ldr r1,[r0]
	bic r1,#(0x3 << 20)
	str r1,[r0]
LED2_INIT:
	@MODER
	ldr r0,=0x50007000
	ldr r1,[r0]
	bic r1,#(0x3 << 20)
	orr r1,#(0x1 << 20)
	str r1,[r0],#4
	@OTYPER
	ldr r1,[r0]
	bic r1,#(0x1 << 10)
	str r1,[r0],#4
	@OSPEEDR
	ldr r1,[r0]
	bic r1,#(0x3 << 20)
	str r1,[r0],#4
	@PUPDR
	ldr r1,[r0]
	bic r1,#(0x3 << 20)
	str r1,[r0]
LED3_INIT:
	@MODER
	ldr r0,=0x50006000
	ldr r1,[r0]
	bic r1,#(0x3 << 16)
	orr r1,#(0x1 << 16)
	str r1,[r0],#4
	@OTYPER
	ldr r1,[r0]
	bic r1,#(0x1 << 8)
	str r1,[r0],#4
	@OSPEEDR
	ldr r1,[r0]
	bic r1,#(0x3 << 16)
	str r1,[r0],#4
	@PUPDR
	ldr r1,[r0]
	bic r1,#(0x3 << 16)
	str r1,[r0]

b MAIN2

LED1_ON:
	@ODR
	ldr r0,=0x50006014
	ldr r1,[r0]
	orr r1,#(0x1 << 10)
	str r1,[r0]
	mov pc,lr
LED1_OFF:
	@ODR
	ldr r0,=0x50006014
	ldr r1,[r0]
	bic r1,#(0x1 << 10)
	str r1,[r0]
	mov pc,lr

LED2_ON:
	@ODR
	ldr r0,=0x50007014
	ldr r1,[r0]
	orr r1,#(0x1 << 10)
	str r1,[r0]
	mov pc,lr
LED2_OFF:
	@ODR
	ldr r0,=0x50007014
	ldr r1,[r0]
	bic r1,#(0x1 << 10)
	str r1,[r0]
	mov pc,lr

LED3_ON:
	@ODR
	ldr r0,=0x50006014
	ldr r1,[r0]
	orr r1,#(0x1 << 8)
	str r1,[r0]
	mov pc,lr
LED3_OFF:
	@ODR
	ldr r0,=0x50006014
	ldr r1,[r0]
	bic r1,#(0x1 << 8)
	str r1,[r0]
	mov pc,lr

MAIN:
	bl LED1_ON
	bl LED2_ON
	bl LED3_ON
	bl delay_1s
	bl LED1_OFF
	bl LED2_OFF
	bl LED3_OFF
    bl delay_1s
	b MAIN

MAIN2:
	@流水灯
	bl LED1_ON
	bl delay_1s
	bl LED1_OFF
	bl LED2_ON
	bl delay_1s
	bl LED2_OFF
	bl LED3_ON
	bl delay_1s
	bl LED3_OFF
	b MAIN2

@ 大概1s的延时函数
delay_1s:
	mov r3, #0x10000000
	mm:
	cmp r3, #0
	subne r3, r3, #1
	bne mm
	mov pc, lr

.end

运行效果:

ArmDAY 4_第1张图片 

你可能感兴趣的:(linux,开发语言)