ARM 2410裸機系列 按鍵查詢式控制led

2022-05-06 18:03:09 字數 3240 閱讀 8752

開發環境

led燈原理圖

按鍵原理圖

按鍵的接線資源

kscan0 ->

gpe11

kscan1 ->

gpg6

kscan2 ->

gpe13

kscan3 ->

gpg2

eint0  ->

gpf0

eint2  ->

gpf2

eint11 ->

gpg3

eint19 ->

gpg11

程式主要原理

這裡實現對 k1,k2,k3,k4 這四個鍵的查詢。

主要涉及到k1,k2, k3, k4這四個按鍵,要用查詢的方式進行判斷哪個鍵被按下去了,因此:

例如先讓kscan0~2 = 011,那麼k1被按下時,eint19才會變為低電平,這時k2按下時,eint19不會變低,這樣就區分了按鍵k1和k2,區分其它按鍵原理一樣。

暫存器配置

有關led的暫存器的配置:(設定gpf4-gpf7為輸出)

按鍵方面涉及到暫存器配置(設定相關暫存器輸入輸出)

精簡原理圖

程式源**

//l

ed_key.c

1 #include "

2410addr.h"2

3void delay(long

long max) //

延遲函式48

9int main(void)10

39}40else

4154}55

}565758 rgpedat |= (1

<< 11); //

將gpe11和gpe13置1,同時將gpg6置0

59 rgpedat |= (1

<< 13

);60 rgpgdat &= (0

<< 6

);61

62 read_value = rgpgdat & (0x8

<< 8); //

讀取gpg11的值

6364

if(read_value == 0) //

判斷gpg11是否輸入0,以此判斷k2鍵按下65

76}7778 rgpedat &= (0

<< 13); //

將gpe13置0, 同時將gpe11和gpg6置1

79 rgpedat |= (1

<< 11

);80 rgpgdat |= (1

<< 6

);81

82 read_value = rgpgdat & 0x800; //

讀取gpg11的值

8384

if(read_value == 0) //

判斷gpg11是否為0,以此判斷k3鍵是否按下

8596}97

}9899return0;

100 }

view code

//啟動檔案start.s

1

.text

2.global _start

3_start:

4#define watchdog 0x53000000

5ldr r0, =watchdog

6mov r1, #0

7str

r1, [r0]

89 ldr sp, =1024*4

10bl main

1112

loop:

13 b loop

view code

//makefile

1

led.bin:start.s led_key.c

2 arm-linux-gcc -c start.s -o start.o

3 arm-linux-gcc -c led_key.c -o led_key.o

4 arm-linux-ld -ttext 0x30008000 start.o led_key.o -o led_key

5 arm-linux-objcopy -o binary -s led_key led_key.bin

6clean:

7rm -f *.o led_key.bin

view code

編譯

ok,生成led_key.bin檔案了

ok,執行成功!

ARM 2410裸機系列 中斷處理

目的 為了更好地掌握s3c2410中斷的原理及中斷程式的編寫。內容利用s3c2410的外部中斷0和外部中斷1實現兩個按鍵功能 原理 本次選擇的是外部中斷extint0和extint11。中斷的產生分別來自按鈕sb1202和sb1203,當按鈕按下時,extint0 對應管腳gpf0 或extint1...

Linux2 6 21之ARM2410電源管理分析

由於arm系統中沒有bios裝置,所以要使用apm advanced power management 只能為arm系統建立乙個虛擬的字元裝置來模擬apm與使用者空間進行通訊.這就是drivers char apm emulation.c檔案。drivers char apm emulation.c...

ARM裸機開發 按鍵輸入實驗

正點原子i.mx6u阿爾法開發板 按鍵輸入是配置gpio作為輸入,檢測按鍵引腳電平,採用掃瞄的方式讀取按鍵按下的資訊,imx6ul的按鍵引腳如下 可以看到按鍵引腳接到 gpio1 io18 口,按鍵的原理就是預設接乙個上拉電阻,按鍵按下接地,可以有效控制 io 電平 按鍵工程我們基於上一節工程進行開...