fl2440按鍵中斷驅動

2021-06-07 16:24:26 字數 2050 閱讀 3088

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include //copy_to_user

#include //核心時鐘

#include //atomic_t

#include //s3c2410_gpf0等的定義

#include //s3c2410_gpio_getpin等的定義

#include //irq_eint0等的定義

#define dev_name "fl2440_button_driver"

#define key_count    4    //按鍵的個數

#define max_key_buf    16    //緩衝區的長度

#define key_up    0    //按鍵的狀態 抬起

#define key_down    1    //按下

#define key_down_int    2    //按下,來自中斷

#define delay_1    hz/50

#define delay_2    hz/20

#define is_key_down(x)    !s3c2410_gpio_getpin(key_infos[x].gpio)

typedef unsigned char key_ret;

struct key_dev

key_dev;

static struct timer_list key_timers[key_count];//去抖動定時器

//按鍵的硬體結構體

struct key_info

key_infos[key_count]=,,

,,};int dev_major=0;    //主裝置號

atomic_t need_request_irq=atomic_init(1);

irqreturn_t interrupt_handler(int irq,void* dev_id)

static int dev_open(struct inode* inode,struct file *filp)

static int dev_release(struct inode *inode,struct file *filp)

c=min(key_dev.tail-key_dev.head,count);

copy_to_user((void*)userp,key_dev.key_buffer,c);

//移動剩下的按鍵值到前面去   

for(i=c;i<=key_dev.tail;i++)

key_dev.tail-=c;

return 0;

}struct file_operations fops=

;//記錄按鍵值,喚醒等待佇列

void key_event(int key)

//定時器處理函式

void key_timer_function(unsigned long arg)

else

}else    //按鍵抬起

}static int __init dev_init(void)

init_waitqueue_head(&key_dev.wq);

printk("init module successful!/n");

return 0;

error2:

cdev_del(&key_dev.cdev);

unregister_chrdev_region(dev_id,key_count);

error0:

return err;

}static void __exit dev_exit(void)

module_init(dev_init);

module_exit(dev_exit);

module_license("gpl");

FL2440新增自帶led驅動

在之前學習驅動自己寫過led的驅動程式,其實s3c2440對於驅動已經支援得非常好,核心裡面已經有了led的驅動程式,我們要使能led驅動只需要稍作修改。device drivers led support led class support led support for samsung s3c2...

fl2440 驅動學習 LED測試程式

前面已經記錄學習了led驅動程式的 分析,並且成功將驅動模組載入到了開發板,現在就可以進行led應用程式的測試啦!測試 如下 led流水燈測試程式 include include include include include include include define led cnt 4 def...

FL2440開發板Jlink操作

fl2440開發板主控晶元為s3c2440。h halt,停止cpu執行 j link hspeed 設定 j link的速率 j link speed 12000loadbin 從本地硬碟載入檔案到記憶體中去 sram和sdram j link loadbin d bin 0 載入bootstra...