电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

11页
  • 卖家[上传人]:笛音
  • 文档编号:40639254
  • 上传时间:2018-05-26
  • 文档格式:DOCX
  • 文档大小:451.65KB
  • / 11 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、实验报告书实验报告书实验名称:实验名称: 矩阵键盘驱动开发实验矩阵键盘驱动开发实验 专业班级:专业班级: 学学 号:号: 姓姓 名:名: 联系电话:联系电话: 指导老师:指导老师: 实验时间:实验时间: 2014 年年 11 月月 13 日日 计算机学院计算机学院 计算机科学与技术计算机科学与技术一、实验目的一、实验目的 1、掌握 44 键盘驱动的写法; 2、深入了解 linux 驱动架构。二、实验设备二、实验设备 1、装有 Linux 系统或装有Linux 虚拟机的PC 机一台; 2、凌阳 ARM9 嵌入式实验箱SP-32AM11A 一台; 3、S3C2410 CPU 核心板一块; 4、本实验用到实验箱的模块有:S3C2410 CPU 板模块、44 键盘模块。三、实验要求三、实验要求 1、实现功能:编写 44 键盘驱动,并将键值通过控制台打印出来; 2、实验现象:每个键值通过控制台打印出来。四、实验原理四、实验原理 1、硬件原理 本实验箱采用GPF07 连接44 键盘,其中GPF03 与K1K4 连接,GPF47 与KAKD连接,分别用于控制44 键盘的纵列和横列。硬件连接如图 6.

      2、2所示。44 键盘一般采用行列扫描方法获取键值,为了进一步提高驱动程序的效 率,这里结合外部中断获取键值。GPF 组IO 端口都有外部中断功能,设置 GPF03 为上升沿触发外部中断,设置GPF47输出高电平,这样当有任何一个按 键按下的时候,按键所在列对应的GPIO 端口就会触发外部中断,由外部中断服 务程序判断具体是哪个按键被按下。2、外部中断 S3C2410 处理器集成了外部中断功能,所谓外部中断是指处理器中具有触 发中断功能GPIO,当GPIO 出现电平变动时会触发中断。触发中断的方式有多种, 比如高电平触发低电平触发、上升沿触发,下降沿触发等。S3C2410 处理器中 具有外部中断功能的GPIO 每一位都可以单独设定中断触发方式,以满足不同的需要。在44 键盘驱动中,使用上升沿沿触发中断的方式,当按键按下时外部 中断被触发获得一次键值。 在linux 系统中对外部中断提供了比较好的支持,可以通过以下的函数设 置外部中断。 【函数原型】int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt

      3、_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: 外部中断号 【返 回 值】

      4、成功返回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、44 键盘驱动架构 44 键盘驱动通过全局数据缓冲队列实现在中断服务程序和读取函数之间 数据传递,键值数据转移流程如图 6.3所示。五、实验步骤五、实验步骤 1、实验指导书附带的源码中已经提供了键盘的驱动,驱动程序源码的路径 为:driversgpf44Keyboard,里面包含了键盘驱动程序和测试程序,可以 使用下面的命令编译该驱动程序。其中,-I 参数后面的斜体部分需要换成实际 的Linux 源码路径。 arm-linux-gcc c I/root/kernel/incl

      5、ude D_KERNEL_ s3c2410-gpf- keyboard.c o s3c2410-gpf-keyboard.o / 编译驱动 arm-linux-gcc test.c -o test / 编译应用程序 2、执行上面的命令后,将生成的 s3c2410-gpf-keyboard.o、test 复制到 目标板上,增加执行权限,然后使用下面的命令将驱动程序插入到目标Linux 系统的内核中,由于在驱动程序中已经使用devfs 为自己创建了设备文件节点, 所以这里无需再使用mknod 命令。最后运行测试程序test,按下不同的键观察 串口输出。 insmod s3c2410-gpf-keyboard.o chmod +x test ./test 注意: 按键使用的GPF0 与网络模块复用,应将网络模块跳线J8 断开六、实验内容六、实验内容 1.1.代码:代码: 驱动程序:驱动程序:/*=工程名称:ex25_4MUL4keyboard_gpf 组成文件:key44_driver.c功能描述: 实现带中断及定时器的 2*3 键盘,通过管道缓存键值,知识点的综合应 用硬件连接:GPF00

      6、 与键盘行相连,GPF24 与键盘列相连维护记录:2010-08-24 v1.1add by dxh=*/ #include /*module_init()*/ #include /* printk() */#include /* _init _exit */ #include /* file_operation */ #include /* copy_to_user, copy_from_user */ #include /*class ,class_create ,device_create 等*/#include /* Error number */ #include /* mdelay ,ndelay*/ #include /* udelay */ #include /*S3C2410_GPGCON*/ #include /*S3C24XX_VA_GPIO*/ #include /set_irq_type ,IRQ_TYPE_EDGE_FALLING #include /IRQ_EINT2 #include /request_irq , free_irq #include /#

      7、define DEBUG /open debug message #ifdef DEBUG #define PRINTK(fmt, arg.)printk(KERN_WARNING fmt, #arg) #else #define PRINTK(fmt, arg.)printk(KERN_DEBUG fmt, #arg) #endif #define DRIVER_NAME “key44_eint“ /#define KEY1_IRQ IRQ_EINT0 /#define KEY2_IRQ IRQ_EINT1 /#define KEY3_IRQ IRQ_EINT2 /#define KEY4_IRQ IRQ_EINT3 #define KEY1_IRQ IRQ_EINT16 #define KEY2_IRQ IRQ_EINT17 #define KEY3_IRQ IRQ_EINT18 #define KEY4_IRQ IRQ_EINT19 #define GPFCON (*(volatile unsigned long *)S3C2410_GPGCON)/ADC control #de

      8、fine GPFDAT (*(volatile unsigned long *)S3C2410_GPGDAT)/ADC touch screen control #define GPFUP (*(volatile unsigned long *)S3C2410_GPGUP)/ADC start or Interval Delay static int MAJOR_NR = 0;/* Driver Major Number */ static int MINOR_NR = 0;/次设备起始号struct class *my_class; static struct semaphore readable;/定义信号量 #define BUFFER_SIZE16/定义 fifo 的大小为 16 static struct kfifo kbuffer;/定义一个 fifo 变量#define INVALID_KEY0xFF typedef unsigned char KEYVALUE; static irqreturn_t key44_irqsrv(int irq, void *dev_id)

      9、; /*request irqs*/ static void register_irqs(void) int err = 0; err = request_irq(KEY1_IRQ, PRINTK(“nkeyDriver_open int0 %dn“,err); err = request_irq(KEY2_IRQ, PRINTK(“keyDriver_open int1 %dn“,err); err = request_irq(KEY3_IRQ, PRINTK(“keyDriver_open int2 %dn“,err); err = request_irq(KEY4_IRQ, PRINTK(“keyDriver_open int3 %dn“,err); static int release_irqs(void) free_irq(KEY1_IRQ, (void *)0); free_irq(KEY2_IRQ, (void *)1); free_irq(KEY3_IRQ, (void *)2); free_irq(KEY4_IRQ, (void *)3);return 0; /*open the irq_eint*/ static void open_irqs(void) enable_irq(KEY1_IRQ); enable_irq(KEY2_IRQ); enable_irq(KEY3_IRQ); enable_irq(KEY4_IR

      《矩阵键盘驱动开发实验报告》由会员笛音分享,可在线阅读,更多相关《矩阵键盘驱动开发实验报告》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
     
    收藏店铺
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.