您的位置:主页 > 新闻中心 > 企业新闻 >

有限状态机的嵌入式Linux按键驱动设计

企业新闻 / 2021-05-31 02:27

本文摘要:0章节 一般的按键驱动程序一般来说非常简单。在程序中一旦检测到按键输出口为低电平时,就使用软件延时10ms后再度检测按键输出口。如果依然是低电平则回应有按键按下,之后转至继续执行按键处理程序;否则,当按键输出口为高电平,就不会退出本次按键的检测,新的开始一次按键检测过程。 这种方式不仅由于使用了软件延时而使得MCU的效率减少,同时也不更容易同系统中其他功能模块协商工作,且系统的实时性也劣。

亚博网页版

0章节  一般的按键驱动程序一般来说非常简单。在程序中一旦检测到按键输出口为低电平时,就使用软件延时10ms后再度检测按键输出口。如果依然是低电平则回应有按键按下,之后转至继续执行按键处理程序;否则,当按键输出口为高电平,就不会退出本次按键的检测,新的开始一次按键检测过程。

这种方式不仅由于使用了软件延时而使得MCU的效率减少,同时也不更容易同系统中其他功能模块协商工作,且系统的实时性也劣。本文把单个按键作为一个非常简单的系统,根据状态机的原理对其动作的操作者和证实的过程展开分析,后用状态图回应出来,然后根据状态图续写按键模块程序。  1基于状态机的非常简单按键驱动设计  在一个嵌入式系统中,按键的操作者是随机的。

为了提升CPU的工作效率,在设计按键驱动的时候,利用S3C2440的外部中断来构建对按键的处置。很显著,系统的输出信号与按键相连的I/O口电平,1回应按键正处于对外开放状态,0回应按键正处于开口状态。而系统的输入信号则回应检测和证实到一次按键的开口操作者,用1回应。

    图1得出了一个非常简单按键状态机的状态切换图。  在图中,将1次按键原始的操作者分解成为3个状态。其中,状态0为按键的初始状态,当按键输出为1时,回应按键正处于对外开放,输入0(I/0),下一状态仍为状态0;当按键输出为0时,回应按键开口,但输入还是0(没经过消抖,无法证实按键确实按下),下一状态进入状态1。  状态1为按键开口证实状态,它回应在10ms前按键为开口的,因此当再度检测到按键输出为0时,可以证实按键被按下了(经过10ms的消抖);输入1则回应证实按键开口(0/1),下一状态进入状态2。

而当再度检测到按键的输出为1时,回应按键有可能处在晃动阻碍;输入为0(I/0),下一状态回到到状态0。这样,利用状态1,构建了按键的消抖处置。状态2为等候按键获释状态,因为只有等按键获释后,一次原始的按键操作过程才算已完成。  对图1的分析由此可知,在一次按键操作者的整个过程中,按键的状态就是指状态0状态1状态2,最后回到到状态0的,并且在整个过程中,按键的输入信号仅有在状态1时得出了唯一的一次证实按键开口的信号1,其他状态皆输入0。

因此,图1状态机所回应的按键系统,不仅解决了按键晃动的问题,同时也保证在一次按键的整个过程中,系统只输入一次按键开口信号(1)。


本文关键词:有限,状态机,的,嵌入式,Linux,按键,亚博网页版,驱动,设计

本文来源:亚博网页版登录界面-www.radinsite.com