有限状态机的嵌入式Linux按键驱动设计_第1页
有限状态机的嵌入式Linux按键驱动设计_第2页
有限状态机的嵌入式Linux按键驱动设计_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、    有限状态机的嵌入式Linux按键驱动设计0引言一般的按键驱动程序通常非常简单。在程序中一旦检测到按键输入口为低电平时,就采用软件延时10ms后再次检测按键输入口。如果仍然是低电平则表示有按键按下,便转入执行按键处理程序;否则,当按键输入口为高电平,就会放弃本次按键的检测,重新开始一次按键检测过程。这种方式不仅由于采用了软件延时而使得MCU的效率降低,同时也不容易同系统中其他功能模块协调工作,且系统的实时性也差。本文把单个按键作为一个简单的系统,0  引言一般的按键驱动程序通常非常简单。在程序中一旦检测到按键输入口为低电平时,就采用软件延

2、时10ms后再次检测按键输入口。如果仍然是低电平则表示有按键按下,便转入执行按键处理程序;否则,当按键输入口为高电平,就会放弃本次按键的检测,重新开始一次按键检测过程。这种方式不仅由于采用了软件延时而使得MCU的效率降低,同时也不容易同系统中其他功能模块协调工作,且系统的实时性也差。本文把单个按键作为一个简单的系统,根据状态机的原理对其动作的操作和确认的过程进行分析,并用状态图表示出来,然后根据状态图编写出按键接口程序。   1  基于状态机的简单按键驱动设计在一个嵌入式系统中,按键的操作是随机的。为了提高CPU的工作效率,在设计按键驱动的时候,利用S3

3、C2440的外部中断来实现对按键的处理。很明显,系统的输入信号与按键连接的IO口电平,“1”表示按键处于开放状态,“0”表示按键处于闭合状态。而系统的输出信号则表示检测和确认到一次按键的闭合操作,用“1”表示。图1给出了一个简单按键状态机的状态转换图。在图中,将1次按键完整的操作分解为3个状态。其中,状态0为按键的初始状态,当按键输入为“1”时,表示按键处于开放,输出“0”(I0),下一状态仍为状态0;当按键输入为“0”时,表示按键闭合,但输出还是“0”(没有经过消抖,不能确认按键真正按下),下一状态进入状态1。状态1为按键闭合确认状态,它表示在10 ms前按键为闭合的,因此当再次检测到按键输

4、入为“0”时,可以确认按键被按下了(经过10 ms的消抖);输出“1”则表示确认按键闭合(01),下一状态进入状态2。而当再次检测到按键的输入为“1”时,表示按键可能处在抖动干扰;输出为“0”(I0),下一状态返回到状态0。这样,利用状态1,实现了按键的消抖处理。状态2为等待按键释放状态,因为只有等按键释放后,一次完整的按键操作过程才算完成。对图1的分析可知,在一次按键操作的整个过程中,按键的状态是从状态0状态1状态2,最后返回到状态0的,并且在整个过程中,按键的输出信号仅在状态1时给出了唯一的一次确认按键闭合的信号“1”,其他状态均输出“0”。因此,图1状态机所表示的按键系统,不仅克服了按键

5、抖动的问题,同时也确保在一次按键的整个过程中,系统只输出一次按键闭合信号(“1”)。2  具有连发功能的按键驱动设计上面介绍的是最简单的情况,不管按键被按下的时间保持多长,在这个按键的整个过程中都只给出了一次确认的输出。但是有些场合为了方便使用者,根据使用者按按键的时间多少来确定是否按键“连发”。例如,在设置时钟时,按按键的时间较短时,设置加1;按按键时间较长时,设置加10,这时就需要根据按按键的时间长短来确定具体输出。图2是将按键驱动设计为具有连发功能状态机的状态转换图。当按键按下后1 s内释放了,系统输出为1;当按键按下后1 s没有释放,那么以后每隔0.5 s,输出为2,直到按键释放为止。如果系统输出1,应用程序将变量加1;如果系统输出2,应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论