目錄
作業(yè)要求:
現(xiàn)象:
代碼:
思維導(dǎo)圖:
模擬面試題:
作業(yè)要求:
GPIO實驗——3顆LED燈的流水燈實現(xiàn)
現(xiàn)象:
代碼:
.text
.global _start
_start:
@設(shè)置GPIOEF時鐘使能 0X50000A28
LDR R0,=0X50000A28 @指定寄存器地址
LDR R1,[R0] @將寄存器數(shù)值取出來放在R1中
ORR R1,R1,#(0x3<<4) @將第4位設(shè)置為1
STR R1,[R0] @將修改后的值寫回去
/************對led1的設(shè)置************/
@設(shè)置PE10為輸出 GPIOE_MODER[21:20]->01 0X50006000
ldr r0,=0x50006000 @指定寄存器地址
ldr r1,[r0] @將寄存器數(shù)值取出來放在r1中
bic r1,r1,#(0x3<<20) @將第20位和21位清零
orr r1,r1,#(0x1<<20) @將第20位和21位設(shè)置為01
STR r1,[r0]
@設(shè)置PE10為推挽輸出 GPIOE_OTYPER[10]->0 0X50006004
ldr r0,=0x50006004
ldr r1,[r0]
bic r1,r1,#(0x1<<10)
STR r1,[r0]
@設(shè)置PE10為低速輸出 GPIOE_OSPEEDR[21:20]->00 0x50006008
ldr r0,=0x50006008
ldr r1,[r0]
bic r1,r1,#(0x3<<20)
STR r1,[r0]
@設(shè)置PE10輸出時無上拉下拉電阻 GPIOE_PUPDR[21:20]->00 0X5000600C
ldr r0,=0x5000600c
ldr r1,[r0]
bic r1,r1,#(0x3<<20)
STR r1,[r0]
/************對led2的設(shè)置************/
@設(shè)置PF10為輸出 GPIOF_MODER[21:20]->01 0X50007000
ldr r0,=0x50007000 @指定寄存器地址
ldr r1,[r0] @將寄存器數(shù)值取出來放在r1中
bic r1,r1,#(0x3<<20) @將第20位和21位清零
orr r1,r1,#(0x1<<20) @將第20位和21位設(shè)置為01
STR r1,[r0]
@設(shè)置PF10為推挽輸出 GPIOF_OTYPER[10]->0 0X50007004
ldr r0,=0x50007004
ldr r1,[r0]
bic r1,r1,#(0x1<<10)
STR r1,[r0]
@設(shè)置PF10為低速輸出 GPIOF_OSPEEDR[21:20]->00 0x50007008
ldr r0,=0x50006008
ldr r1,[r0]
bic r1,r1,#(0x3<<20)
STR r1,[r0]
@設(shè)置PF10輸出時無上拉下拉電阻 GPIOF_PUPDR[21:20]->00 0X5000700C
ldr r0,=0x5000700c
ldr r1,[r0]
bic r1,r1,#(0x3<<20)
STR r1,[r0]
/************對led3的設(shè)置************/
@設(shè)置PE8為輸出 GPIOE_MODER[17:16]->01 0X50006000
ldr r0,=0x50006000 @指定寄存器地址
ldr r1,[r0] @將寄存器數(shù)值取出來放在r1中
bic r1,r1,#(0x3<<16) @將第20位和21位清零
orr r1,r1,#(0x1<<16) @將第20位和21位設(shè)置為01
STR r1,[r0]
@設(shè)置PE8為推挽輸出 GPIOE_OTYPER[8]->0 0X50006004
ldr r0,=0x50006004
ldr r1,[r0]
bic r1,r1,#(0x1<<8)
STR r1,[r0]
@設(shè)置PE8為低速輸出 GPIOE_OSPEEDR[21:20]->00 0x50006008
ldr r0,=0x50006008
ldr r1,[r0]
bic r1,r1,#(0x3<<20)
STR r1,[r0]
@設(shè)置PE8輸出時無上拉下拉電阻 GPIOE_PUPDR[17:16]->00 0X5000600C
ldr r0,=0x5000600c
ldr r1,[r0]
bic r1,r1,#(0x3<<16)
STR r1,[r0]
flash:
@ led1亮
bl led1_on
bl delay
@ led1滅且led2亮
bl led1_off
bl led2_on
bl delay
@ led2滅且led3亮
bl led2_off
bl led3_on
bl delay
@ led3滅 再 三燈同時亮
bl led3_off
bl led1_on
bl led2_on
bl led3_on
bl delay
@ 三燈同時滅
bl led1_off
bl led2_off
bl led3_off
bl delay
b flash
led1_on:
@設(shè)置PE10輸出高電平 GPIOE_ODR[10]->1 0X50006014
ldr r0,=0x50006014
ldr r1,[r0]
orr r1,r1,#(0x1<<10)
STR r1,[r0]
mov pc,lr
led1_off:
@設(shè)置PE10輸出低電平 GPIOE_ODR[10]->0 0X50006014
ldr r0,=0x50006014
ldr r1,[r0]
bic r1,r1,#(0x1<<10)
STR r1,[r0]
mov pc,lr
led2_on:
@設(shè)置PF10輸出高電平 GPIOF_ODR[10]->1 0X50007014
ldr r0,=0x50007014
ldr r1,[r0]
orr r1,r1,#(0x1<<10)
STR r1,[r0]
mov pc,lr
led2_off:
@設(shè)置PF10輸出低電平 GPIOF_ODR[10]->0 0X50007014
ldr r0,=0x50007014
ldr r1,[r0]
bic r1,r1,#(0x1<<10)
STR r1,[r0]
mov pc,lr
led3_on:
@設(shè)置PE8輸出高電平 GPIOE_ODR[8]->1 0X50006014
ldr r0,=0x50006014
ldr r1,[r0]
orr r1,r1,#(0x1<<8)
STR r1,[r0]
mov pc,lr
led3_off:
@設(shè)置PE8輸出低電平 GPIOE_ODR[8]->0 0X50006014
ldr r0,=0x50006014
ldr r1,[r0]
bic r1,r1,#(0x1<<8)
STR r1,[r0]
mov pc,lr
delay:
@延時函數(shù)
ldr r2,=0x10000000
dd:
cmp r2,#0
subne r2,#1
bne dd
mov pc,lr
.end
思維導(dǎo)圖:
文章來源:http://www.zghlxwxcb.cn/news/detail-771368.html
模擬面試題:
文章來源地址http://www.zghlxwxcb.cn/news/detail-771368.html
到了這里,關(guān)于華清遠(yuǎn)見嵌入式學(xué)習(xí)——ARM——作業(yè)2的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!