.text
.global _start
_start:
@设置RCC寄存器使能
LDR R0,=0X50000A28
LDR R1,[R0]
ORR R1,R1,#(0X1<<4)
STR R1,[R0]
@使能gpiof
LDR R0,=0X50000A28
LDR R1,[R0]
ORR R1,R1,#(0X1<<5)
STR R1,[R0]
@初始化 led1
@设置PE10管脚为输出模式
LDR R0,=0X50006000
LDR R1,[R0]
BIC R1,R1,#(0X3<<20) @先清零
ORR R1,R1,#(0X1<<20) @再设置位
STR R1,[R0]
@设置PE10为推挽输出
LDR R0,=0X50006004
LDR R1,[R0]
BIC R1,R1,#(0X1<<10) @先清零
STR R1,[R0]
@设置PE10速度为低速
LDR R0,=0X50006008
LDR R1,[R0]
BIC R1,R1,#(0X3<<20) @先清零
STR R1,[R0]
@不设置上拉下拉电阻
LDR R0,=0X5000600C
LDR R1,[R0]
BIC R1,R1,#(0X3<<20) @先清零
STR R1,[R0]
@初始化led2
@设置Pf8管脚为输出模式
LDR R0,=0X50007000
LDR R1,[R0]
BIC R1,R1,#(0X3<<20) @先清零
ORR R1,R1,#(0X1<<20) @再设置位
STR R1,[R0]
@设置Pf8为推挽输出
LDR R0,=0X50007004
LDR R1,[R0]
BIC R1,R1,#(0X1<<10) @先清零
STR R1,[R0]
@设置Pf8速度为低速
LDR R0,=0X50007008
LDR R1,[R0]
BIC R1,R1,#(0X3<<20) @先清零
STR R1,[R0]
@不设置上拉下拉电阻
LDR R0,=0X5000700C
LDR R1,[R0]
BIC R1,R1,#(0X3<<20) @先清零
STR R1,[R0]
@初始化led3
@设置PE8管脚为输出模式
LDR R0,=0X50006000
LDR R1,[R0]
BIC R1,R1,#(0X3<<16) @先清零
ORR R1,R1,#(0X1<<16) @再设置位
STR R1,[R0]
@设置PE8为推挽输出
LDR R0,=0X50006004
LDR R1,[R0]
BIC R1,R1,#(0X1<<8) @先清零
STR R1,[R0]
@设置PE8速度为低速
LDR R0,=0X50006008
LDR R1,[R0]
BIC R1,R1,#(0X3<<16) @先清零
STR R1,[R0]
@不设置上拉下拉电阻
LDR R0,=0X5000600C
LDR R1,[R0]
BIC R1,R1,#(0X3<<16) @先清零
STR R1,[R0]
@循环输出高低电平
loop:
LDR R0,=0X50006014
@led1亮一秒
LDR R1,[R0]
ORR R1,R1,#(0X1<<10)
STR R1,[R0]
bl delay_1s
@led1灭led2亮一秒
@led1灭
LDR R1,[R0]
BIC R1,R1,#(0X1<<10)
STR R1,[R0]
@led2亮
LDR R0,=0x50007014
LDR R1,[R0]
ORR R1,R1,#(0X1<<10)
STR R1,[R0]
bl delay_1s
@led2灭led3亮一秒
@led2灭
LDR R1,[R0]
BIC R1,R1,#(0X1<<10)
STR R1,[R0]
@led3亮
LDR R0,=0x50006014
LDR R1,[R0]
ORR R1,R1,#(0X1<<8)
STR R1,[R0]
bl delay_1s
@led3灭
LDR R1,[R0]
BIC R1,R1,#(0X1<<8)
STR R1,[R0]
b loop
@1s左右的延时函数
delay_1s:
mov r3, #0x10000000
mm:
cmp r3, #0
subne r3, r3, #1
bne mm
mov pc, lr
.end
stm32实现led灯循环亮灭
最新推荐文章于 2024-10-12 22:35:47 发布