#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...