7th_drv.c
来源:互联网 发布:辐射4 mac 下载 编辑:程序博客网 时间:2024/06/15 02:25
7th_drv.c
驱动层:
static struct timer_list buttons_timer;
static struct pin_desc *irq_pd;
/*
* 确定按键值
*/
static irqreturn_t buttons_irq(int irq, void *dev_id)
{
/* 10ms后启动定时器 */
irq_pd = (struct pin_desc *)dev_id;
mod_timer(&buttons_timer, jiffies+HZ/100);
return IRQ_RETVAL(IRQ_HANDLED);
}
static void buttons_timer_function(unsigned long data)
{
struct pin_desc * pindesc = irq_pd;
unsigned int pinval;
if (!pindesc)
return;
pinval = s3c2410_gpio_getpin(pindesc->pin);
if (pinval)
{
/* 松开 */
key_val = 0x80 | pindesc->key_val;
}
else
{
/* 按下 */
key_val = pindesc->key_val;
}
ev_press = 1; /* 表示中断发生了 */
wake_up_interruptible(&button_waitq); /* 唤醒休眠的进程 */
kill_fasync (&button_async, SIGIO, POLL_IN);
}
static int sixth_drv_init(void)
{
init_timer(&buttons_timer);
buttons_timer.function = buttons_timer_function;
//buttons_timer.expires = 0; //它初始化的溢出值为0,当add_timer()一使用就会进入定时器函数
add_timer(&buttons_timer); //由于通过pindesc判断过,所以不会进行错误判断
.... //只有当按键按下时,进入中断程序irq_button中,将定时器时间
} //修改延时10ms后,再进入定时器函数中。
驱动层:
static struct timer_list buttons_timer;
static struct pin_desc *irq_pd;
/*
* 确定按键值
*/
static irqreturn_t buttons_irq(int irq, void *dev_id)
{
/* 10ms后启动定时器 */
irq_pd = (struct pin_desc *)dev_id;
mod_timer(&buttons_timer, jiffies+HZ/100);
return IRQ_RETVAL(IRQ_HANDLED);
}
static void buttons_timer_function(unsigned long data)
{
struct pin_desc * pindesc = irq_pd;
unsigned int pinval;
if (!pindesc)
return;
pinval = s3c2410_gpio_getpin(pindesc->pin);
if (pinval)
{
/* 松开 */
key_val = 0x80 | pindesc->key_val;
}
else
{
/* 按下 */
key_val = pindesc->key_val;
}
ev_press = 1; /* 表示中断发生了 */
wake_up_interruptible(&button_waitq); /* 唤醒休眠的进程 */
kill_fasync (&button_async, SIGIO, POLL_IN);
}
static int sixth_drv_init(void)
{
init_timer(&buttons_timer);
buttons_timer.function = buttons_timer_function;
//buttons_timer.expires = 0; //它初始化的溢出值为0,当add_timer()一使用就会进入定时器函数
add_timer(&buttons_timer); //由于通过pindesc判断过,所以不会进行错误判断
.... //只有当按键按下时,进入中断程序irq_button中,将定时器时间
} //修改延时10ms后,再进入定时器函数中。
0 0
- 7th_drv.c
- C.7
- c++(7)
- 高质量C++/C编程指南[7]
- C/C++_lesson1~7_总结
- C/C++(7)字符串操作学习
- c练习7
- C语言例题7:
- c语言练习7
- C:1-7
- C程序设计语言读书笔记(7)
- 技术小记7(C++)
- C基础7
- C-数组指针(7)
- c语言思想7
- 再探Objective-C.7
- 《C++Prinmer》读书笔记(7)
- CF 7C Line
- MySQL存储过程详解 mysql 存储过程
- Window Routing and Remote Access 服务(RRAS)无法启动
- 控件中显示系统当前时间?包括:年、月、日、时、分
- 自定义装饰类
- alt和title的区别和写法
- 7th_drv.c
- NSDate 的一些操作(比较、创建、在现有date加减一定时间等)
- LeetCode(90) Subsets II
- Android Please ensure that adb is correctly located at问题解决
- 使用Cookie记住表单用户名
- 实用的AndroidStudio快捷键
- hdu 5460 Poker(暴力)
- Hive安装与配置——深入浅出学Hive
- 多git账户操作