李其珂,付红桥
(重庆大学光电工程学院,重庆 400030)
随着电子信息技术的高速发展,越来越多的工业控制设备和移动终端设备得到广泛的应用,这些设备通称为嵌入式系统。IEEE(国际电气和电子工程师协会)对嵌入式系统的定义为“用于控制、监视或者辅助操作机器和设备的装置”。在这些嵌入式系统中,键盘作为人机交互的重要手段,是应用最为广泛的输入设备之一。当按键较少时,采用独立式键盘,当按键较多时,采用矩阵式键盘。嵌入式Linux具有开源、免费、容易裁剪和良好的硬件支持等特性[1],在嵌入式计算领域得到了最为广泛的应用。
当前,对于嵌入式系统中的矩阵键盘功能实现,多数应用是基于中断方式来实现的[2-3]。按键事件在一个嵌入式系统中并不需要实时性很高,而采用中断的方式来判断按键是否按下的方案会把一个嵌入式系统中的按键事件的优先级提高,系统中其他更需要迫切处理的事件就延迟处理了,这就降低了整个系统的实时性能。本研究在基于嵌入式微处理器 AT91RM9200的基础上,采用轮询的机制实现了一个4×4矩阵键盘,并设计了矩阵键盘的驱动程序。
AT91RM9200是ATMEL应用最为广泛的一款基于RISC架构的工业级ARM9处理器,主频高达200 MHz,功耗低,片内外设非常丰富,支持嵌入式微处理器的各种常用接口,并且提供了4×32个可编程的GPIO端口[4]。本系统采用PB端口扩展了一个4×4矩阵键盘。其中键盘硬件连接示意图如图1所示。按键列阵列必须提供上拉信号,即通过4.7 K上拉电阻连接到+3.3 V电源电压VDD上,行和列阵列都加了20 Ω电阻,防止瞬间电流过大对嵌入式微处理器I/O口造成冲击。……