.text
.global _start
_start:
@将RCC_MP_AHB4ENSETR寄存器第[4]设置为1,使能GPIOE外设时钟
LDR R0,=0x50000a28 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
ORR R1,R1,#(0x1<<4) @将第4位设置为1
STR R1,[R0] @将修改后的数值写回@将RCC_MP_AHB4ENSETR寄存器第[4]设置为1,使能GPIOE外设时钟
LDR R0,=0x50000a28 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
ORR R1,R1,#(0x1<<5) @将第4位设置为1
STR R1,[R0] @将修改后的数值写回@1.GPIOE_MODER[21:20]设置为01,PE10管脚为输出模式
LDR R0,=0x50006000 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
BIC R1,R1,#(0x3<<20) @将第[21:20]位设置0
ORR R1,R1,#(0x1<<20) @将第20位设置为1
STR R1,[R0] @将修改后的数值写回@2.GPIOE_OTYPER[10]设置为0,PE10推挽输出
LDR R0,=0x50006004 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
BIC R1,R1,#(0x1<<10) @将第[10]位设置0
STR R1,[R0] @将修改后的数值写回@3.GPIOE_OSPEEDR[21:20]设置为00,PE10低速输出、
LDR R0,=0x50006008 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
BIC R1,R1,#(0x3<<20) @将第[21:20]位设置0
STR R1,[R0] @将修改后的数值写回@4.GPIOE_PUPDR[21:20]设置为00,PE10输出无上拉下拉电阻
LDR R0,=0x5000600C @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
BIC R1,R1,#(0x3<<20) @将第[21:20]位设置0
STR R1,[R0] @将修改后的数值写回@1.GPIOE_MODER[21:20]设置为01,PE10管脚为输出模式
LDR R0,=0x50006000 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
BIC R1,R1,#(0x3<<16) @将第[21:20]位设置0
ORR R1,R1,#(0x1<<16) @将第20位设置为1
STR R1,[R0] @将修改后的数值写回@2.GPIOE_OTYPER[10]设置为0,PE10推挽输出
LDR R0,=0x50006004 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
BIC R1,R1,#(0x1<<8) @将第[10]位设置0
STR R1,[R0] @将修改后的数值写回@3.GPIOE_OSPEEDR[21:20]设置为00,PE10低速输出、
LDR R0,=0x50006008 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
BIC R1,R1,#(0x3<<16) @将第[21:20]位设置0
STR R1,[R0] @将修改后的数值写回@4.GPIOE_PUPDR[21:20]设置为00,PE10输出无上拉下拉电阻
LDR R0,=0x5000600C @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
BIC R1,R1,#(0x3<<16) @将第[21:20]位设置0
STR R1,[R0] @将修改后的数值写回@5.GPIOE_ODR[10]设置为1,PE10输出高电平;设置为0,PE10输出低电平
LDR R0,=0x50006014 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
ORR R1,R1,#(0x1<<8) @将第[10]位设置1
STR R1,[R0] @将修改后的数值写回@程序返回@1.GPIOE_MODER[21:20]设置为01,PF10管脚为输出模式
LDR R0,=0x50007000 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
BIC R1,R1,#(0x3<<20) @将第[21:20]位设置0
ORR R1,R1,#(0x1<<20) @将第20位设置为1
STR R1,[R0] @将修改后的数值写回@2.GPIOE_OTYPER[10]设置为0,PF10推挽输出
LDR R0,=0x50007004 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
BIC R1,R1,#(0x1<<10) @将第[10]位设置0
STR R1,[R0] @将修改后的数值写回@3.GPIOE_OSPEEDR[21:20]设置为00,PF10低速输出、
LDR R0,=0x50007008 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
BIC R1,R1,#(0x3<<20) @将第[21:20]位设置0
STR R1,[R0] @将修改后的数值写回@4.GPIOE_PUPDR[21:20]设置为00,PF10输出无上拉下拉电阻
LDR R0,=0x5000700C @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
BIC R1,R1,#(0x3<<20) @将第[21:20]位设置0
STR R1,[R0] @将修改后的数值写回@5.GPIOE_ODR[10]设置为1,PE10输出高电平;设置为0,PE10输出低电平
LDR R0,=0x50007014 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
ORR R1,R1,#(0x1<<10) @将第[10]位设置1
STR R1,[R0] @将修改后的数值写回loop:BL led1_onbl Delaybl led1_offbl Delaybl led2_onbl Delaybl led2_offbl Delaybl led3_onbl Delaybl led3_offbl Delayb loopled1_on:
@5.GPIOE_ODR[10]设置为1,PE10输出高电平;设置为0,PE10输出低电平
LDR R0,=0x50006014 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
ORR R1,R1,#(0x1<<10) @将第[10]位设置1
STR R1,[R0] @将修改后的数值写回
mov pc,lr @程序返回led1_off:
@5.GPIOE_ODR[10]设置为1,PE10输出高电平;设置为0,PE10输出低电平
LDR R0,=0x50006014 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
bic R1,R1,#(0x1<<10) @将第[10]位设置0
STR R1,[R0] @将修改后的数值写回
mov pc,lr @程序返回led3_on:
@5.GPIOE_ODR[10]设置为1,PE10输出高电平;设置为0,PE10输出低电平
LDR R0,=0x50006014 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
ORR R1,R1,#(0x1<<8) @将第[10]位设置0
STR R1,[R0] @将修改后的数值写回
mov pc,lr @程序返回led3_off:
@5.GPIOE_ODR[10]设置为1,PE10输出高电平;设置为0,PE10输出低电平
LDR R0,=0x50006014 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
BIC R1,R1,#(0x1<<8) @将第[10]位设置0
STR R1,[R0] @将修改后的数值写回
mov pc,lr @程序返回led2_on:
@5.GPIOE_ODR[10]设置为1,PE10输出高电平;设置为0,PE10输出低电平
LDR R0,=0x50007014 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
ORR R1,R1,#(0x1<<10) @将第[10]位设置1
STR R1,[R0] @将修改后的数值写回
mov pc,lr @程序返回led2_off:
@4.GPIOE_ODR[10]设置为1,PE10输出高电平;设置为0,PE10输出低电平
LDR R0,=0x50007014 @指定操作的寄存器地址
LDR R1,[R0] @将寄存器数据取出来保存到R1中
BIC R1,R1,#(0x1<<10) @将第[10]位设置0
STR R1,[R0] @将修改后的数值写回
mov pc,lr @程序返回@延时函数
Delay:LDR r3,=0X10000000
MM:CMP R3,#0subne r3,r3,#1bne MMMOV PC,LR.end
先设置rcc,让gpio引脚使能,然后分别设置gpio的模式为输出模式,输出模式为推挽输出,设置输出速度为低速,无上下拉电阻,最后通过设置引脚的特定的高低电平控制led灯的亮灭。