.text
.global _start
_start:
@使能GPIOE和GPIOF的外设时钟
LDR R0,=0X50000A28 @将AHB4使能寄存器的地址放进R0中
LDR R1,[R0] @将R0中存放的内存地址的4字节数据读取到R1中
ORR R1,R1,#0X32 @使能GPIOE、GPIOF和GPIOB的时钟
STR R1,[R0] @AHB4使能寄存器的值重新写进内存地址中
@设置PE10,PE8,PF10引脚为输出模式
LDR R0,=0X50006000 @将GPIOE的模式寄存器的地址放进R0中
LDR R1,=0X50007000 @将GPIOF的模式寄存器的地址放进R1中
LDR R5,=0X50003000 @将GPIOB的模式寄存器的地址放进R5中
LDR R7,=(0X303<<12)
LDR R8,=(0X101<<12)
LDR R2,[R0] @将R0中存放的内存地址的4字节数据读取到R2中
LDR R3,[R1] @将R1中存放的内存地址的4字节数据读取到R3中
LDR R6,[R5] @将R5中存放的内存地址的4字节数据读取到R6中
BIC R2,R2,#(0X3F<<16) @将GPIOE的模式寄存器的[21:16]位置清0
BIC R3,R3,R7 @将GPIOF的模式寄存器的[21:20]位置清0
BIC R6,R6,#(0X3<<12)
ORR R2,R2,#(0X15<<16) @将GPIOE的模式寄存器的[20]、[16]和[18]位置置1
ORR R3,R3,R8 @将GPIOF的模式寄存器的[20]和[12]位置置1
ORR R6,R6,#(0X1<<12)
STR R2,[R0] @将GPIOE的模式寄存器的值重新写进内存地址中
STR R3,[R1] @将GPIOF的模式寄存器的值重新写进内存地址中
STR R6,[R5]
@设置PE10,PE8,PF10引脚为推挽输出
LDR R0,=0X50006004 @将GPIOE的输出模式寄存器的地址放进R0中
LDR R1,=0X50007004 @将GPIOF的输出模式寄存器的地址放进R1中
LDR R5,=0X50003004 @将GPIOB的模式寄存器的地址放进R5中
LDR R2,[R0] @将R0中存放的内存地址的4字节数据读取到R2中
LDR R3,[R1] @将R1中存放的内存地址的4字节数据读取到R3中
LDR R6,[R5] @将R5中存放的内存地址的4字节数据读取到R6中
BIC R2,R2,#(0X7<<8) @将GPIOE的输出模式寄存器的[10]和[8]位置清0
BIC R3,R3,#(0X11<<6) @将GPIOF的输出模式寄存器的[10]位置清0
BIC R6,R6,#(0X1<<6)
STR R2,[R0] @将GPIOE的输出模式寄存器的值重新写进内存地址中
STR R3,[R1] @将GPIOF的输出模式寄存器的值重新写进内存地址中
STR R6,[R5]
@设置PE10,PE8,PF10引脚为低速输出
LDR R0,=0X50006008 @将GPIOE的输出速度寄存器的地址放进R0中
LDR R1,=0X50007008 @将GPIOF的输出速度寄存器的地址放进R1中
LDR R5,=0X50003008 @将GPIOB的模式寄存器的地址放进R5中
LDR R7,=(0X303<<12)
LDR R2,[R0] @将R0中存放的内存地址的4字节数据读取到R2中
LDR R3,[R1] @将R1中存放的内存地址的4字节数据读取到R3中
LDR R6,[R5] @将R5中存放的内存地址的4字节数据读取到R6中
BIC R2,R2,#(0X3F<<16) @将GPIOE的模式寄存器的[21:16]位置清0
BIC R3,R3,R7 @将GPIOF的模式寄存器的[21:20]位置清0
BIC R6,R6,#(0X3<<12)
STR R2,[R0] @将GPIOE的输出速度寄存器的值重新写进内存地址中
STR R3,[R1] @将GPIOF的输出速度寄存器的值重新写进内存地址中
STR R6,[R5]
@设置PE10,PE8,PF10引脚无需上拉下拉电阻
LDR R0,=0X5000600C @将GPIOE的输出速度寄存器的地址放进R0中
LDR R1,=0X5000700C @将GPIOF的输出速度寄存器的地址放进R1中
LDR R5,=0X5000300C @将GPIOB的模式寄存器的地址放进R5中
LDR R7,=(0X303<<12)
LDR R2,[R0] @将R0中存放的内存地址的4字节数据读取到R2中
LDR R3,[R1] @将R1中存放的内存地址的4字节数据读取到R3中
LDR R6,[R5] @将R5中存放的内存地址的4字节数据读取到R6中
BIC R2,R2,#(0X3F<<16) @将GPIOE的模式寄存器的[21:16]位置清0
BIC R3,R3,R7 @将GPIOF的模式寄存器的[21:20]位置清0
BIC R6,R6,#(0X3<<12)
STR R2,[R0] @将GPIOE的输出速度寄存器的值重新写进内存地址中
STR R3,[R1] @将GPIOF的输出速度寄存器的值重新写进内存地址中
STR R6,[R5]
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
BL BEEP_ON
BL delay
BL BEEP_OFF
BL delay
BL FAN_ON
BL delay
BL FAN_OFF
BL delay
BL MOTOR_ON
BL delay
BL MOTOR_OFF
BL delay
B loop
LED1_ON:
LDR R0,=0X50006014 @将GPIOE的输出数据寄存器的地址放进R0中
LDR R1,[R0] @将R0中存放的内存地址的4字节数据读取到R1中
BIC R1,R1,#(0X1<<10)
ORR R1,R1,#(0X1<<10)
STR R1,[R0]
MOV PC,LR
LED1_OFF:
LDR R0,=0X50006014 @将GPIOE的输出数据寄存器的地址放进R0中
LDR R1,[R0] @将R0中存放的内存地址的4字节数据读取到R1中
BIC R1,R1,#(0X1<<10)
STR R1,[R0]
MOV PC,LR
LED2_ON:
LDR R0,=0X50007014 @将GPIOF的输出数据寄存器的地址放进R0中
LDR R1,[R0] @将R0中存放的内存地址的4字节数据读取到R1中
ORR R1,R1,#(0X1<<10)
STR R1,[R0]
MOV PC,LR
LED2_OFF:
LDR R0,=0X50007014 @将GPIOF的输出数据寄存器的地址放进R0中
LDR R1,[R0] @将R0中存放的内存地址的4字节数据读取到R1中
BIC R1,R1,#(0X1<<10)
STR R1,[R0]
MOV PC,LR
LED3_ON:
LDR R0,=0X50006014 @将GPIOE的输出数据寄存器的地址放进R0中
LDR R1,[R0] @将R0中存放的内存地址的4字节数据读取到R1中
ORR R1,R1,#(0X1<<8)
STR R1,[R0]
MOV PC,LR
LED3_OFF:
LDR R0,=0X50006014 @将GPIOE的输出数据寄存器的地址放进R0中
LDR R1,[R0] @将R0中存放的内存地址的4字节数据读取到R1中
BIC R1,R1,#(0X1<<8)
STR R1,[R0]
MOV PC,LR
BEEP_ON:
LDR R0,=0X50003014
LDR R1,[R0]
ORR R1,R1,#(0X1<<6)
STR R1,[R0]
MOV PC,LR
BEEP_OFF:
LDR R0,=0X50003014
LDR R1,[R0]
BIC R1,R1,#(0X1<<6)
STR R1,[R0]
MOV PC,LR
FAN_ON:
LDR R0,=0X50006014 @将GPIOE的输出数据寄存器的地址放进R0中
LDR R1,[R0] @将R0中存放的内存地址的4字节数据读取到R1中
ORR R1,R1,#(0X1<<9)
STR R1,[R0]
MOV PC,LR
FAN_OFF:
LDR R0,=0X50006014 @将GPIOE的输出数据寄存器的地址放进R0中
LDR R1,[R0] @将R0中存放的内存地址的4字节数据读取到R1中
BIC R1,R1,#(0X1<<9)
STR R1,[R0]
MOV PC,LR
MOTOR_ON:
LDR R0,=0X50007014 @将GPIOF的输出数据寄存器的地址放进R0中
LDR R1,[R0] @将R0中存放的内存地址的4字节数据读取到R1中
ORR R1,R1,#(0X1<<6)
STR R1,[R0]
MOV PC,LR
MOTOR_OFF:
LDR R0,=0X50007014 @将GPIOF的输出数据寄存器的地址放进R0中
LDR R1,[R0] @将R0中存放的内存地址的4字节数据读取到R1中
BIC R1,R1,#(0X1<<6)
STR R1,[R0]
MOV PC,LR
delay:
LDR R4,=0X10000000
mm:
CMP R4,#0X0
SUBNE R4,R4,#0X1
BNE mm
MOV PC,LR
ARM第一次
最新推荐文章于 2024-09-24 08:48:12 发布