按鍵驅動 OS

2021-06-02 02:11:03 字數 1916 閱讀 5046

一、實驗平台:開發板fs2410,採用三星s3c2410的cpu,linux作業系統。

二、實現功能:當按下開關時,列印出是哪個開關被按下了。如按下了k1,則顯示k1被按下了。

三、實驗原理:

fs2410共有16個按鍵,若採用查詢的方式,會占用cpu很多資源,這裡採用中斷的方式。

首先將kscan0~3全部設為輸出0,eint0、eint2、eint11、eint19設為中斷功能,當按下被按下後,將會產生中斷訊號。而乙個中斷源上有四個開關,為了區分這四個開關,在中斷服務程式中,將收到中斷訊號的引腳馬上設為輸出,並輸出0,kscan0~3全部設為輸入。再讀取kscan0~3中引腳的值,這四個引腳中只可能乙個引腳為低電平,知道了哪個引腳是低電平,就知道是哪個開關被按下了。

四、實驗現象:

執行測試程式後,按下開關,顯示對應的開關被按下了。

五、實驗總結:

六、示例**:

/*驅動**keys.c*/

#include#include#include#include#include#include#include#include#include#include#include#includechar key_value = 0;

static unsigned int keys_major = 0;

static struct class *keys_class = null;

int kscan_pin[4] = ;

struct key;

struct key keys_desc[16] = ,

, ,

, , ,

, ,

,, ,

, , ,

, ,

};void wait(unsigned long dly)

static irqreturn_t keys_irq(int irq, void *dev_id)

/*再將kscan0~3(gpe11,gpg6,gpe13,gpg2)輸出0*/

s3c2410_gpio_cfgpin(kscan_pin[i], s3c2410_gpio_output);

s3c2410_gpio_setpin(kscan_pin[i], 0);

} /*產生中斷的引腳設為中斷功能*/

s3c2410_gpio_cfgpin(key_pin->pin, s3c2410_gpio_irq);

return irq_handled;

}static int keys_open(struct inode *inode,struct file *file)

return 0;

}static ssize_t keys_read(struct file *file,char __user *buf,size_t count,loff_t *opps)

static ssize_t keys_write(struct file *file,const char __user *buf,size_t count,loff_t *opps)

struct file_operations keys_fops = ;

int __init keys_init(void)

return 0;

}void __exit keys_exit(void)

module_init(keys_init);

module_exit(keys_exit);

module_license("gpl");

/*測試**keys_test.c*/

#include#include#include#include#include#include#includeint main(void)

while(1)

return 0;

}

Linux驅動 按鍵驅動

開發板 tiny6410 核心版本 linux2.6.38 要想寫出案件驅動 需要複習的知識 1 混雜裝置的使用原理 2 系統呼叫驅動函式的原理 3 中斷處理機制 4 阻塞性裝置驅動的書寫規範 1 混雜裝置的註冊和使用比較簡單,以前也複習過,這裡不再複習 3 中斷處理機制 也有部落格內容中斷處理機制...

4412驅動 key 按鍵驅動

key driver.c include include include include include include include include include include include static struct class keydrv class static struct cl...

Linux系統按鍵驅動

linux系統下對於按鍵裝置不僅可以進行讀操作,還可以進行寫操作。對鍵盤 滑鼠等裝置進行寫操作可以實現模擬按鍵的功能。另外,想知道 dev input eventx分別是哪些裝置可以通過執行下面的命令進行檢視,如下所示 yuhaiping neolix cat proc bus input devi...