zoukankan      html  css  js  c++  java
  • 嵌入式实时系统程序开发一:按键程序编写

     为了回顾以前的东西,以及把操作系统的思想能用在处理器的多任务操作上,会持续连载一些文章,这些思想主要借鉴周慈航《基于嵌入式实时系统程序设计技术》一书

    键盘程序控制技术:

    键盘作为输入输出口,是我们常用的一个模块,下面把自己总结的键盘程序大体描绘一下。

    键盘中有两个问题我们需要解决:一个是防抖,一个是要避免连击。

    对于防抖:通常我们加延时函数,等待按键稳定后再执行后面的步骤,但是具体要延时多长时间只能凭借经验或尝试的办法,不可靠,更好的办法是我们可以设置两个状态变量,分别保存按键上一时刻和这一时刻的状态,当两个状态一样时,说明按键状态稳定。

    避免连击:连击通常也会造成不可预知的操作,避免连击就是让按键一次只响应一次,为此我们需要检测按下和释放两种状态,然后再执行相应的操作。一般有两种方法,一是按键按下,执行相应操作,然后检测释放;二是,检测按键按下并释放后,然后执行相应操作。我一般用第二种。

    程序流程:

    int   TaskKey(void* pdata)

    {

      INT8U key,key0;

      while(1)

      {

        OSTimeDly(1);

        key=keyin();       

        if(key=未按下|key!=key0)        //如果按键没有按下或者按键前后状态不一,继续检查按键状态

        {

          key0=key;

          continue;

        }

        which(key)

        {

          执行相应按键解析函数,并更新显示消息。   

        }

        while(1)

        {

          key=keyin();

          if(key释放) break;                     //如果按键释放,跳出循环,一次按键相应操作完成

          OSTimeDly(1);

        }

      }

    }

  • 相关阅读:
    JUnit单元测试--IntelliJ IDEA
    sublime Error executing: /usr/bin/security dump-trust-settings -d
    git 撤销commit
    mockito 初识
    Lucene 初识
    从list中随机选出几个数,并按照原来的顺序排列
    JVM原理
    JVM crash at ForUtil.readBlock
    Scrum之初体验
    Mac安装Gradle eclipse安装buildship插件
  • 原文地址:https://www.cnblogs.com/summer-xwq/p/4153894.html
Copyright © 2011-2022 走看看