用彙編點亮乙個led
1 看原理圖
gpk4=0 ,led
亮
gpk4=1
,led
滅2 怎麼讓
gpk4
輸出高低電平
(看晶元手冊,操作暫存器實現
)配置功能:輸入/輸出/
其他設定其輸出高/
低電平3 檢視晶元手冊
gpk4 [19:16]
0000 = input 0001 = output
0010 = host i/f data[4] 0011 = hsi tx ready
0100 = reserved 0101 = data_cf[4]
0110 = reserved 0111 = reserved
gpkdat 在第4
位寫寫0
就對應gpk4
gpk[15:0] [15:0]
when the port is configured as input port, the corresponding bit is the pin state.
when the port is configured as output port, the pin state is the same as the
corresponding bit. when the port is configured as functional pin, the undefined
value will be read.
register address r/w description reset value
gpkcon0 0x7f008800 r/w port k configuration register 0 0x22222222
gpkcon1 0x7f008804 r/w port k configuration register 1 0x22222222
gpkdat 0x7f008808 r/w port k data register undefined
gpkpud 0x7f00880c r/w port k pull-up/down register 0x55555555
register address r/w description reset value
wtcon 0x7e004000 r/w watchdog timer control register 0x8021
示例**如下:
start.s檔案
..globl _start
_start:
cpu*/
ldr r0, =0x70000000
orr r0,r0,#0x13
mcr p15,0,r0,c15,c2,4
/*關閉看門狗
*/ldr r0,=0x7e004000
mov r1,#0
str r1,[r0]
/*設定
gpkcon gpk4
作為輸出引腳
*/ldr r1, =0x7f008800
mov r0,#0x10000000
str r0,[r1]
/*設定
gpkdat
讓gpk4
輸出0*/
ldr r1, =0x7f008808
mov r0,#0
str r0,[r1]
halt:
b halt
makefile檔案
led.bin: start.o
arm-linux-ld -ttext 0 -o led.elf start.o
arm-linux-objcopy -o binary led.elf led.bin
arm-linux-objdump -d led.elf > led.dis
start.o : start.s
arm-linux-gcc -o start.o start.s -c
clean:
rm *.o led.elf led.bin led.dis
編譯 make
將led_on.bin
燒寫到nand flash中,
如同燒寫
linux類似,
將led_on.bin
放到images
目錄下修改friendlyarm.ini
action=install
os=userbin
userbin-image=led_on.bin
點亮四個led
燈,示例**如下:
start.s檔案
.globl _start
_start:
/*硬體相關設定
*/ldr r0,=0x70000000
orr r0,r0,#0x13
mcr p15,0,r0,c15,c2,4
/*關閉看門狗
*/ldr r0,=0x7e004000
mov r1,#0
str r1,[r0]
/*設定
gpkcon gpk4/5/6/7
作為輸出
*/ldr r1,=0x7f008800
ldr r0,=0x11110000
str r0,[r1]
/*設定
gpkdat
讓gpk4
輸出0*/
ldr r1,=0x7f0088080
mov r0,#0
loop:
str r0,[r1]
add r0,r0,#1
cmp r0,#16
moveq r0,#0
bl delay
b loop
delay:
mov r2,#0x10000000
delay_loop:
sub r2,r2,#1
cmp r2,#0
bne delay_loop
mov pc,lr
halt:
b halt
makefile檔案同上
用c語言來實現點燈
1 硬體相關設定
2 呼叫c函式
示例**如下:
void delay(){
volatile int i=0x10000000;
while (i--);
int main(){
int i=0;
volatile unsigned long *gpkcon = (volatile unsigned long *)0x7f008800;
volatile unsigned long *gpkdat = (volatile unsigned long *)0x7f008808;
*gpkcon=0x11110000;
while(1){
*gpkdat=i;
i++;
if(i==16)
i=0;
delay();
return 0;
.globl _start
_start:
/*硬體相關設定
*/ldr r0,=0x70000000
orr r0,r0,#0x13
mcr p15,0,r0,c15,c2,4
/*關看門狗
*/ldr r0,=0x7e004000
mov r1,#0
str r1,[r0]
/*設定棧
*/ldr sp,=8*1024
bl main
halt:
b halt
led.bin: start.o led.o
arm-linux-ld -ttext 0 -o led.elf start.o led.o
arm-linux-objcopy -o binary led.elf led.bin
arm-linux-objdump -d led.elf > led.dis
start.o : start.s
arm-linux-gcc -o start.o start.s -c
led.o:led.c
arm-linux-gcc -o led.o led.c -c
clean:
rm *.o led.elf led.bin led.dis
17 3 15 關於GPIO學習筆記
1 輸入浮空 2 輸入上拉 3 輸入下拉 4 模擬輸入 5 開漏輸出 6 推挽輸出 7 推挽復用 8 開漏復用 埠配置暫存器 32位,共兩個,crl和crh 資料暫存器 32位,共兩個,idr和odr 置位 復位暫存器 32位,乙個,bsrr 復位暫存器 16位,乙個,brr 鎖存暫存器 32位,乙...
stm32學習筆記 GPIO
2011 03 06 15 10 stm32基本上每個引腳都有8種配置模式 浮空輸入 帶弱上拉輸入 帶弱下拉輸入 模擬輸入 推挽輸出 開漏輸出 復用推挽輸出 復用開漏輸出 通常有5種方式使用某個引腳功能,它們的配置方式如下 1 作為普通gpio輸入 根據需要配置該引腳為浮空輸入 帶弱上拉輸入或帶弱下...
NodeMCU 學習筆記(二)GPIO操作
lua語法 函式 function 函式名 引數 幹活,幹活 return 引數,引數 end條件 if 條件 then 幹活,幹活 else 幹活,幹活 1 點亮乙個led燈,電路如上圖。pin 0 0就是d0 gpio.mode pin,gpio.output gpio.write pin,gp...