矩阵键盘驱动开发实验研究.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告书实验名称:矩阵键盘驱动开发实验专业班级:学号:姓名:联系电话:指导老师:实验时间: 2014年11月13日计算机学院计算机科学与技术一、实验目的1、掌握4×4 键盘驱动的写法;2、深入了解linux 驱动架构。二、实验设备1、装有Linux 系统或装有Linux 虚拟机的PC 机一台;2、凌阳ARM9 嵌入式实验箱SP-32AM11A 一台;3、S3C2410 CPU 核心板一块;4、本实验用到实验箱的模块有:S3C2410 CPU 板模块、4×4 键盘模块。三、实验要求1、实现功能:编写4×4 键盘驱动,并将键值通过控制台打印出来;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 端口就会触发外部中断,由外部中断服务程序判断具体是哪个按键被按下。2、外部中断S3C2410 处理器集成了外部中断功能,所谓外部中断是指处理器中具有触发中断功能GPIO,当GPIO 出现电平变动时会触发中断。触发中断的方式有多种,比如高电平触发低电平触发、上升沿触发,下降沿触发等。S3C2410 处理器中具有外部中断功能的GPIO 每一位都可以单独设定中断触发方式,以满足不同的需要。在4×4 键盘驱动中,使用上升沿沿触发中断的方式,当按键按下时外部中断被触发获得一次键值。在linux 系统中对外部中断提供了比较好的支持,可以通过以下的函数设置外部中断。【函数原型】int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *),unsigned long irq_flags,const char * devname,void *dev_id)【功能】申请中断【参数】irq:要申请的硬件中断号handler:向系统登记的中断处理函数,当中断发生时,系统调用这个函数irqflags:中断处理的属性,若设置了SA_INTERRUPT,则表示中断处理函数是快速处理函数;若设置为SA_SHIRQ 则表示多个设备共享中断devname:设备标识字符串dev_id在中断共享时用到,用于标识不同的中断响应。【返回值】成功返回0,失败返回错误码【函数原型】int set_external_irq(int irq, int edge, int pullup)【功能】设置外部中断的中断触发方式【参数】irq:外部中断号edge:设置外部中断触发类型pullup:设置GPIO 上拉或下拉【返回值】成功返回0,失败返回错误码【函数原型】int disable_irq(int irq)【功能】禁止外部中断【参数】irq:外部中断号【返回值】成功返回0,失败返回错误码【函数原型】int enable_irq(int irq)【功能】使能外部中断【参数】irq:外部中断号【返回值】成功返回0,失败返回错误码【函数原型】void free_irq(unsigned int irq, void *dev_id)【功能】释放外部中断【参数】irq:外部中断号dev_id: 在中断共享时会用到,用于标识不同的中断,这个参数要和request_irq函数中的参数dev_id 相同【返回值】成功返回0,失败返回错误码3、4×4 键盘驱动架构4×4 键盘驱动通过全局数据缓冲队列实现在中断服务程序和读取函数之间数据传递,键值数据转移流程如图6.3所示。五、实验步骤1、实验指导书附带的源码中已经提供了键盘的驱动,驱动程序源码的路径为:\drivers\gpf4×4Keyboard,里面包含了键盘驱动程序和测试程序,可以使用下面的命令编译该驱动程序。其中,-I 参数后面的斜体部分需要换成实际的Linux 源码路径。arm-linux-gcc –c –I/root/kernel/include –D__KERNEL__ s3c2410-gpf-keyboard.c–o s3c2410-gpf-keyboard.o // 编译驱动arm-linux-gcc test.c -o test // 编译应用程序2、执行上面的命令后,将生成的s3c2410-gpf-keyboard.o、test 复制到目标板上,增加执行权限,然后使用下面的命令将驱动程序插入

文档评论(0)

1112111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档