矩阵键盘驱动开发实验报告

矩阵键盘驱动开发实验报告

ID:12032674

大小:451.65 KB

页数:11页

时间:2018-07-15

矩阵键盘驱动开发实验报告_第1页
矩阵键盘驱动开发实验报告_第2页
矩阵键盘驱动开发实验报告_第3页
矩阵键盘驱动开发实验报告_第4页
矩阵键盘驱动开发实验报告_第5页
资源描述:

《矩阵键盘驱动开发实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验报告书实验名称:矩阵键盘驱动开发实验专业班级:学号:姓名:联系电话:指导老师:实验时间:2014年11月13日计算机学院计算机科学与技术一、实验目的1、掌握4×4键盘驱动的写法;2、深入了解linux驱动架构。二、实验设备1、装有Linux系统或装有Linux虚拟机的PC机一台;2、凌阳ARM9嵌入式实验箱SP-32AM11A一台;3、S3C2410CPU核心板一块;4、本实验用到实验箱的模块有:S3C2410CPU板模块、4×4键盘模块。三、实验要求1、实现功能:编写4×4键盘驱动,并将键值通过控制台打印

2、出来;2、实验现象:每个键值通过控制台打印出来。四、实验原理1、硬件原理本实验箱采用GPF0~7连接4×4键盘,其中GPF0~3与K1~K4连接,GPF4~7与KA~KD连接,分别用于控制4×4键盘的纵列和横列。硬件连接如图6.2所示。4×4键盘一般采用行列扫描方法获取键值,为了进一步提高驱动程序的效率,这里结合外部中断获取键值。GPF组IO端口都有外部中断功能,设置GPF0~3为上升沿触发外部中断,设置GPF4~7输出高电平,这样当有任何一个按键按下的时候,按键所在列对应的GPIO端口就会触发外部中断,由外部

3、中断服务程序判断具体是哪个按键被按下。2、外部中断S3C2410处理器集成了外部中断功能,所谓外部中断是指处理器中具有触发中断功能GPIO,当GPIO出现电平变动时会触发中断。触发中断的方式有多种,比如高电平触发低电平触发、上升沿触发,下降沿触发等。S3C2410处理器中具有外部中断功能的GPIO每一位都可以单独设定中断触发方式,以满足不同的需要。在4×4键盘驱动中,使用上升沿沿触发中断的方式,当按键按下时外部中断被触发获得一次键值。在linux系统中对外部中断提供了比较好的支持,可以通过以下的函数设置外部中断

4、。【函数原型】intrequest_irq(unsignedintirq,void(*handler)(int,void*,structpt_regs*),unsignedlongirq_flags,constchar*devname,void*dev_id)【功能】申请中断【参数】irq:要申请的硬件中断号handler:向系统登记的中断处理函数,当中断发生时,系统调用这个函数irqflags:中断处理的属性,若设置了SA_INTERRUPT,则表示中断处理函数是快速处理函数;若设置为SA_SHIRQ则表示多

5、个设备共享中断devname:设备标识字符串dev_id在中断共享时用到,用于标识不同的中断响应。【返回值】成功返回0,失败返回错误码【函数原型】intset_external_irq(intirq,intedge,intpullup)【功能】设置外部中断的中断触发方式【参数】irq:外部中断号edge:设置外部中断触发类型pullup:设置GPIO上拉或下拉【返回值】成功返回0,失败返回错误码【函数原型】intdisable_irq(intirq)【功能】禁止外部中断【参数】irq:外部中断号【返回值】成功返

6、回0,失败返回错误码【函数原型】intenable_irq(intirq)【功能】使能外部中断【参数】irq:外部中断号【返回值】成功返回0,失败返回错误码【函数原型】voidfree_irq(unsignedintirq,void*dev_id)【功能】释放外部中断【参数】irq:外部中断号dev_id:在中断共享时会用到,用于标识不同的中断,这个参数要和request_irq函数中的参数dev_id相同【返回值】成功返回0,失败返回错误码3、4×4键盘驱动架构4×4键盘驱动通过全局数据缓冲队列实现在中断服务

7、程序和读取函数之间数据传递,键值数据转移流程如图6.3所示。五、实验步骤1、实验指导书附带的源码中已经提供了键盘的驱动,驱动程序源码的路径为:driversgpf4×4Keyboard,里面包含了键盘驱动程序和测试程序,可以使用下面的命令编译该驱动程序。其中,-I参数后面的斜体部分需要换成实际的Linux源码路径。arm-linux-gcc–c–I/root/kernel/include–D__KERNEL__s3c2410-gpf-keyboard.c–os3c2410-gpf-keyboard.o//编

8、译驱动arm-linux-gcctest.c-otest//编译应用程序2、执行上面的命令后,将生成的s3c2410-gpf-keyboard.o、test复制到目标板上,增加执行权限,然后使用下面的命令将驱动程序插入到目标Linux系统的内核中,由于在驱动程序中已经使用devfs为自己创建了设备文件节点,所以这里无需再使用mknod命令。最后运行测试程序test,按下不同的键观察串口

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。