From 7223bfcc006fdee03e54cae5bbe71ca77afdc69a Mon Sep 17 00:00:00 2001 From: D301_Ubuntu <1395769145@qq.com> Date: Thu, 11 Apr 2024 10:28:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=9A=E6=97=B6=E5=99=A8?= =?UTF-8?q?=E5=B9=B6=E7=BC=96=E8=AF=91=E6=88=90=E5=8A=9F=EF=BC=8C=E7=AD=89?= =?UTF-8?q?=E5=BE=85=E4=B8=8B=E8=BD=BD=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: D301_Ubuntu <1395769145@qq.com> --- 13_irq/imx6uirq.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/13_irq/imx6uirq.c b/13_irq/imx6uirq.c index 29d52c2..16c7dc3 100644 --- a/13_irq/imx6uirq.c +++ b/13_irq/imx6uirq.c @@ -60,10 +60,22 @@ struct imx6uirq_dev imx6uirq; /* irq设备 */ static irqreturn_t key0_handler(int irq,void *dev_id) { struct imx6uirq_dev *dev = (struct imx6uirq_dev *)dev_id; - unsigned char keyvalue; + dev->curkeynum = 0; + dev->timer.data = (volatile long)dev_id; + + mod_timer(&dev->timer, jiffies + msecs_to_jiffies(10)); + + return IRQ_RETVAL(IRQ_HANDLED); +} + +void timer_function(unsigned long arg) +{ + struct imx6uirq_dev *dev = (struct imx6uirq_dev *)arg; + unsigned char keyvalue; + keyvalue = gpio_get_value(dev->irqkeydesc.gpio); if (keyvalue == 0) /* 按键被按下 */ { @@ -73,8 +85,6 @@ static irqreturn_t key0_handler(int irq,void *dev_id) atomic_set(&dev->keyvalue, 0x80 | dev->irqkeydesc.value); atomic_set(&dev->releasekey, 1);/* 松开标记 */ } - - return IRQ_RETVAL(IRQ_HANDLED); } static int keyio_init(void) @@ -114,6 +124,10 @@ static int keyio_init(void) return -EFAULT; } + /* 初始化定时器 */ + init_timer(&imx6uirq.timer); + imx6uirq.timer.function = timer_function; + return 0; } @@ -192,12 +206,14 @@ static __init imx6uirq_init(void) atomic_set(&imx6uirq.releasekey,0); keyio_init(); + return 0; } static __exit imx6uirq_exit(void) { - free_irq(imx6uirq.irqkeydesc.irqnum,&imx6uirq); + del_timer_sync(&imx6uirq.timer); + free_irq(imx6uirq.irqkeydesc.irqnum, &imx6uirq); gpio_free(imx6uirq.irqkeydesc.gpio ); // 注销字符设备驱动 -- Gitee