1.自己试着点亮LED2 LED3 蜂鸣器
.text
.global _start
_start:
.if 0
以PE10 ---- LED1为例:
-----------------------------初始化的代码------------------------------------
-----------------------------RCC章节------------------------------
1、使能GPIOE组外设的时钟 - 0x50000A28[4] = 0b1
-----------------------------GPIO章节------------------------------
1、将PE10引脚配置为输出模式 - 0x50006000[21:20] = 0b01
2、将PE10引脚配置为推挽输出模式 - 0x50006004[10] = 0b0
3、将PE10引脚配置为低速输出模式 - 0x50006008[21:20] = 0b00
4、将PE19引脚配置为禁止上/下拉电阻 - 0x5000600C[21:20] = 0b00
-----------------------------循环执行的代码------------------------------------
while(1)
{
// 实验现象:LED1循环亮灭,间隔1s
// 1、向PE10引脚输出高电平信号(1) - 0x50006014[10] = 0b1 - LED1亮
// 延时1s
// 2、向PE10引脚输出低电平信号(0) - 0x50006014[10] = 0b0 - LED1灭
}
.endif
/*****************************初始化代码*********************************/
/*****************************RCC章节***********************************/
@ 1、能GPIOE组外设的时钟 - 0x50000A28[4] = 0b1
@ 1.1 准备一片地址为0x50000A28的内存空间
ldr r0, =0x50000A28
@ 1.2 将0x50000A28这片地址中的值读取到普通寄存器中
ldr r1, [r0]
@ 1.3 修改0x50000A28地址中的第[4],改为0b1
orr r1, r1, #(0x1 << 4)
@ 1.4 将修改完的寄存器中的值,写入到0x50000A28这片地址中
str r1, [r0]
/*****************************GPIO章节*********************************/
@ 1、将PE10引脚配置为输出模式 - 0x50006000[21:20] = 0b01
/*ldr r0, =0x50006000
ldr r1, [r0]
and r1, r1, #(~(0x3 << 20))
orr r1, r1, #(0x1 << 20)
str r1, [r0]
@ 2、将PE10引脚配置为推挽输出模式 - 0x50006004[10] = 0b0
ldr r0, =0x50006004
ldr r1, [r0]
and r1, r1, #(~(0x1 << 10))
str r1, [r0]
@ 3、将PE10引脚配置为低速输出模式 - 0x50006008[21:20] = 0b00
ldr r0, =0x50006008
ldr r1, [r0]
and r1, r1, #(~(0x3 << 20))
str r1, [r0]
@ 4、将PE19引脚配置为禁止上/下拉电阻 - 0x5000600C[21:20] = 0b00
ldr r0, =0x5000600C
ldr r1, [r0]
and r1, r1, #(~(0x3 << 20))
str r1, [r0]
stop:
@ 1、向PE10引脚输出高电平信号(1) - 0x50006014[10] = 0b1 - LED1亮
ldr r0, =0x50006014
ldr r1, [r0]
orr r1, r1, #(0x1 << 10)
str r1, [r0]
@ 延时1s
bl delay_1s
@ 2、向PE10引脚输出低电平信号(0) - 0x50006014[10] = 0b0 - LED1灭
ldr r0, =0x50006014
ldr r1, [r0]
and r1, r1, #(~(0x1 << 10))
str r1, [r0]*/
/********************************************/
/* ldr r0,=0x50003000
ldr r1,[r0]
and r1, r1, #(~(0x3 << 12))
orr r1, r1, #(0x1 << 12)
str r1, [r0]
ldr r0,=0x50003004
ldr r1,[r0]
and r1,r1,#(~(0x1<<6))
str r1,[r0]
ldr r0,=0x50003008
ldr r1,[r0]
and r1,r1,#(~(0x3<<12))
str r1,[r0]
ldr r0,=0x5000300c
ldr r1,[r0]
and r1,r1,#(~(0x3<<12))
str r1,[r0]*/
/**********LED2************/
ldr r0,=0x50007000
ldr r1,[r0]
and r1,r1,#(~(0x3<<20))
orr r1,r1,#(0x1<<20)
str r1,[r0]
ldr r0,=0x50007004
ldr r1,[r0]
and r1,r1,#(~(0x1<<10))
str r1,[r0]
ldr r0,=0x50007008
ldr r1,[r0]
and r1,r1,#(~(0x3<<20))
str r1,[r0]
ldr r0,=0x5000700c
ldr r1,[r0]
and r1,r1,#(~(0x3<<20))
str r1,[r0]
/********led3********/
@ 1、将PE8引脚配置为输出模式 - 0x50006000[17:16] = 0b01
ldr r0, =0x50006000
ldr r1, [r0]
and r1, r1, #(~(0x3 << 16))
orr r1, r1, #(0x1 << 16)
str r1, [r0]
@ 2、将PE8引脚配置为推挽输出模式 - 0x50006004[8] = 0b0
ldr r0, =0x50006004
ldr r1, [r0]
and r1, r1, #(~(0x1 << 8))
str r1, [r0]
@ 3、将PE8引脚配置为低速输出模式 - 0x50006008[17:16] = 0b00
ldr r0, =0x50006008
ldr r1, [r0]
and r1, r1, #(~(0x3 << 16))
str r1, [r0]
@ 4、将PE8引脚配置为禁止上/下拉电阻 - 0x5000600C[17:16] = 0b00
ldr r0, =0x5000600C
ldr r1, [r0]
and r1, r1, #(~(0x3 << 16))
str r1, [r0]
b stop
led2_on:
ldr r0,=0x50007014
ldr r1,[r0]
orr r1,r1,#(0x1<<10)
str r1,[r0]
mov pc,lr
led2_off:
ldr r0,=0x50007014
ldr r1,[r0]
and r1,r1,#(~(0x1<<10))
str r1,[r0]
mov pc,lr
@ LED3亮
led3_on:
@ 1、向PE8引脚输出高电平信号(1) - 0x50006014[8] = 0b1 - LED3亮
ldr r0, =0x50006014
ldr r1, [r0]
orr r1, r1, #(0x1 << 8)
str r1, [r0]
mov pc, lr
@ LED3灭
led3_off:
@ 2、向PE8引脚输出低电平信号(0) - 0x50006014[8] = 0b0 - LED3灭
ldr r0, =0x50006014
ldr r1, [r0]
and r1, r1, #(~(0x1 << 8))
str r1, [r0]
mov pc, lr
/* beep_on:
@ 1、向PB6引脚输出高电平信号(1) - 0x50003014[6] = 0b1 - 蜂鸣器工作
ldr r0, =0x50003014
ldr r1, [r0]
orr r1, r1, #(0x1 << 6)
str r1, [r0]
mov pc, lr
@ 蜂鸣器不工作
beep_off:
@ 2、向PE10引脚输出低电平信号(0) - 0x50003014[6] = 0b0 - 蜂鸣器不工作
ldr r0, =0x50003014
ldr r1, [r0]
and r1, r1, #(~(0x1 << 6))
str r1, [r0]
mov pc, lr*/
stop:
/*
@ 蜂鸣器工作
bl beep_on
@ 延时1s
bl delay_1s
@ 蜂鸣器不工作
bl beep_off
@ 延时1s
bl delay_1s*/
@le2亮
bl led2_on
bl delay_1s
@led2不亮
bl led2_off
bl delay_1s
@ LED3亮
bl led3_on
@ 延时1s
bl delay_1s
@ LED3灭
bl led3_off
@ 延时1s
bl delay_1s
@ 大概1s的延时函数
delay_1s:
mov r3, #0x10000000
mm:
cmp r3, #0
subne r3, r3, #1
bne mm
mov pc, lr
.end