新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 有限状态机的嵌入式Linux按键驱动设计

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

作者:时间:2010-05-27来源:网络收藏





这里的定时函数使用了的内核定时器。使用内核定时器可以方便地实现每个的特定定时时间,并且安全释放CPU,提高CPU的效率。程序的基本思路是,首先被按下进入中断服务程序buttons_interrupt(),在中断服务程序里确定是否为初始态。如果是,则进行kbd_timer初始化且使按键转为消抖状态。当kbd_timer定时到以后,按键检测按键状态是否仍处于按下时转换状态为按键确定状态,如果不是则恢复初始态。当定时器1 s到达后,判断按键是否仍是按下。如是则转换为连发状态,否则恢复初始态。当0.5 s到达后,重新判断按键是否仍是按下。如是,则继续为连发状态,输出值加10;如果按键抬起,则恢复初始态。

4 实验结果

程序经过gcc-arm-liunx-3.4.4编译,并在Micro2440SDK开发板上运行(开发板上的系统版本为linux2.6.13),运行结果如图3所示。



从运行结果可以看出,如果按下按键并在1 s抬起,输出值每次只加1;如果按下按键超过1 s,系统的输出值每隔0.5s将加10。说明本运行正常,且具有了连发功能。

结 语

本文主要分析了按键状态机的工作过程,并利用Liunx内核定时器实现了状态机的状态转换时间间隔,最后给出了基于状态机的具有连发功能编写代码,实现了具有连发功能的按键驱动,为基于状态机的按键驱动提供了一种解决思路。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭