现在的位置: 首页 > 技术文章 > 驱动开发 > 正文

Tiny4412 Linux驱动之按键(使用中断)

2015年12月05日 驱动开发 ⁄ 共 781字 ⁄ 字号 Tiny4412 Linux驱动之按键(使用中断)已关闭评论 ⁄ 阅读 2,411 次

接着上一个实验 《Tiny4412 Linux驱动之按键(使用查询方式)》 ,这一节使用中断的方式进行按键的检测,Linux下的中断体系结构前面也发了好几篇文章,写的都不错挺详细,大家可以看看,链接如下。

Linux内核异常处理体系结构详解(一)

Linux内核异常处理体系结构详解(二)

下面开始今天的正文,使用中断的方式检测按键,

还是一共三个文件,1驱动相关:. keyIrq_drv.c  Makefile

2.测试程序 : key_test_irq.c

实验步骤:

驱动和应用程序都编译出来之后,首先加载驱动:

insmod keyIrq_drv.ko

按键中断驱动

按键中断驱动

如上图所示,加载完驱动之后,按键节点已经自动创建出来了,

下面开始测试;

输入 ./key_test_irq

按键测试

按键测试

依次按下4个按键,可以看到输出正确,并且按键抖动也不是那么严重了(还有偶尔有的,以后会使用内核定时器进行过滤),可以看到申请的4个中断如下图所示:

按键中断号

按键中断号

再来看一下这种方式下的CPU使用率

CPU使用率

CPU使用率

可以看到基本不占用CPU,没有按键按下时key_test_irq进程是出于休眠状态的。

通过对比发现,使用中断的方式要不使用查询的方式好很多。本次测试结束。

×