- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
矩阵键盘学习资料(重新整理)
矩阵键盘
嵌入式移动设备的应用越来越广,以其体积小、重量轻、便于携带等特点而备受青睐。键盘
是一种最为普遍使用的输入工具,但嵌入式移动设备因其体积小的特点决定了它的键盘不大
可能采用普通PC 机上的标准键盘,因而大多数采用键数相对较少的矩阵键盘。
利用矩阵键盘用户可以很方便的实现对嵌入式移动设备进行相应的操作,是极方便的人机
交互设备。随着微软的嵌入式操作系统Windows CE 的普及,Windows CE 的矩阵键盘开发得
到了越来越多开发者的重视,本文与大家分享我在开发矩阵键盘的一些总结。
1.Windows CE 驱动分类
Windows CE 提供了许多用于开发设备驱动的模型,这些驱动程序模型使得Windows CE 能
适应大部分的内部和外围设备。因此,在深入探讨Windows CE 矩阵键盘驱动程序之前,先
了解在WinCE 平台上使用的两种设备:内建设备和可安装设备。因此,从驱动加载方式来看
WinCE 可分为本机设备驱动(Built-In Driver)、可加载驱动(Loadable Driver)。
本机设备驱动即Native Device Drivers,WinCE 设计成可直接使用内建设备,这些设备
由本机驱动过程控制。本机驱动程序是与WinCE 的核心组件紧密相连,这些驱动对应的设备
通常在系统启动时,在GWES 的进程空间内被加载,因此它们不是以独立的DLL 形式存在。
可加载设备是指可与平台连接和分离的第三方接口设备,可由用户随时安装和卸载这些驱
动,可以在系统启动时或者和启动后的任何时候由设备管理器动态加载。通常这类驱动是以
DLL 动态链接库的形式存在,系统加载后这些驱动程序是以用户态的角色运行,这种外围设
备的驱动也被称为流驱动。
两者的差别在于它们提供的编程接口不同:本地设备驱动可以根据具体设备的需求提供本
机的相应接口;而流接口驱动则是提供一组通用接口即流接口函数,应用程序可以通过流接
口提供的接口函数来访问外围设备。
2.嵌入式矩阵键盘驱动原理
嵌入式设备上的键盘受设备本身体积影响,键盘设计大多数采用矩阵形式。支持Windows
CE 系统的CPU 有很多种,不同CPU 之间矩阵键盘硬件设计也不尽相同。因此,键盘可以按
照自定义布局,并且可以按照自己的喜好映射按键,从而实现按键的不同功能,包括按键的
个数、布局及按键功能的配置。
(1)矩阵键盘驱动核心是中断处理
矩阵键盘一般是采用中断方式,因此矩阵键盘驱动首先要在OAL 层加入中断源。简单的说,
矩阵键盘驱动的主要作用就是实时监测外部按键中断,一旦发现外部有键按下就向内核发送
键盘消息实现键盘输入功能。这时键盘驱动会创建中断服务线程和键盘中断事件,每个按键
对应一个键盘中断事件。因此,矩阵键盘驱动的设计核心就是键盘中断处理的设计。
(2)中断服务例程(ISR)
矩阵键盘作为输入设备一般以默认的频率扫描键盘,当有按键被按下时,通过扫描键盘并
生成相应的扫描码,并通过处理器中的中断产生器产生一个中断信号,这时内核会进入异常
中断处理程序,由它屏蔽所有中断,再调用中断服务例程ISR 得到该中断的逻辑中断标识。
然后,中断服务例程把得到对应的中断标识符报告给系统任务调度进程,同时产生键盘中断
事件,键盘中断服务线程响应键盘中断事件,开始扫描矩阵键盘。然后,再通过这个中断信
号控制相应的程序获取与之相对应的虚拟码,最后此虚拟码由上层调用,实现按下此键的相
应功能。鉴于ISR 的任务比较单一,ISR 通常都要求越短、越快越好。
(3)中断服务线程(IST)
中断服务例程以键盘中断的逻辑中断标识符形式返回给系统任务调度进程,中断服务线程
则在矩阵键盘驱动中负责具体中断处理。因此,矩阵键盘驱动的中断事件HANDLE hKEYEvents
要分别对应矩阵键盘产生的中断。一般来说,中断服务例程较小,并且只做很少的处理工作,
中断服务线程就必须完成大多数中断处理工作,包括响应中断、扫描按键位置、发送键盘消
息等。
例如,在矩阵键盘驱动IST 中会先调用CreateEvent 函数创建事件对象,接着调用系统函
数InterruptInitialize 完成中断。完成这些初始化工作后,接着调用
WaitForMultipleObjects (hKEYEvents)函数进入键盘事件的等待队列中。最后,当有事件
被捕获后,根据不同的事件类型进入不同的键盘扫描处理程序。
3.矩阵键盘驱动程序的设计和实现
(1)矩阵键盘驱动程序模型
Win
文档评论(0)