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

键盘程序控制技术:

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

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

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

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

程序流程:

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);

    }

  }

}

转载于:https://www.cnblogs.com/summer-xwq/p/4153894.html

嵌入式实时系统程序开发一:按键程序编写相关推荐

  1. 小程序开发特辑—小程序申请及开发环境搭建

      互联网巨头们都热衷于搭建平台,希望能够打造自己的生态,依靠生态公司开发各种各样的应用来满足用户的需求.这其中涉及到两个比较大的问题:一方面巨头的腿需要足够粗,这样生态公司才愿意花时间和精力在这些平 ...

  2. 小程序开发.微信小程序.组件.视图容器

    小程序开发.微信小程序中的组件.视图容器组件 note:当前本文编辑中- 20220731 jcLee95 的个人博客 邮箱 :291148484@163.com CSDN 主页:https://bl ...

  3. 微信小程序开发(十)小程序支付-查询退款

    应用场景 提交退款申请后,通过调用该接口查询退款状态.退款有一定延时,用零钱支付的退款20分钟内到账,银行卡支付的退款3个工作日后重新查询退款状态. 接口说明 这里退款还是根据商户订单号-out_tr ...

  4. linux下的程序开发实验,Linux程序实验.docx

    Linux程序实验 <Linux程序设计>教学大纲Linux Program Design课程类别:学科专业教育课程 课程名称:Linux程序设计开课单位:软件学院课程编号:总 学 时:3 ...

  5. (Spring程序开发)简介程序开发步骤配置文件相关API

    1Spring简介 1.1 Spring是什么 Spring是分层的Java SE/EE应用full-stack 轻量级开源框架, 以IoC(Inverse Of Control:反转控制) 和**A ...

  6. 微信小程序开发制作 | 小程序开发者工具功能介绍

    小程序开发者工具是微信官方提供的用于开发和调试小程序的工具.它支持 Windows 和 Mac 两种操作系统,并提供了许多实用的功能,使得小程序开发者能够快速地开发和调试小程序. 下面是小程序开发者工 ...

  7. 微信小程序开发-校园网小程序开发步骤

    动手撸一个校园网微信小程序: 高考完毕,想必广大学子和家长们都在忙着查询各所高校的信息,刚好上手微信小程序,当练手也当为自己的学校做点宣传,便当即撸了一个校园网微信小程序. 效果预览 源码地址: Gi ...

  8. 微信小程序开发 | 微信小程序入门

    微信小程序入门 1.1 初识微信小程序 1.1.1 什么是微信小程序 1.1.2 微信小程序的账号 1.1.3 微信小程序的特点 1.1.4 微信小程序的发展前景 1.2 开发环境搭建 1.2.1 注 ...

  9. linux独立应用程序开发,Linux应用程序开发(一)

    Linux应用程序开发(一)---移植thttpd+Sqlite3+PHP5到arm linux(4) 移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容) 1,主机环境:VMare下Cen ...

  10. 小程序_小程序开发,小程序定制开发,小程序搭建,小程序系统开发

    说了那么久的小程序的应用场景,今天就跟大家聊些技术上的话题,聊聊小程序定制开发成本以及开发周期问题,希望能给一些对小程序感兴趣的商家们一些参考.一般的小程序7天左右就可以搞定,具体开发成本请接着往下看 ...

最新文章

  1. 越来越多BCH全节点客户端对BCH意味着什么?
  2. 强化学习2——有模型强化学习MDP(搬砖马尔科夫,贝尔曼等式)
  3. ConcurrentLinkedQueue的实现原理和源码分析
  4. SAP UI5 ConnectionManager
  5. 安卓 sqlite数据存入mysql_在Android上简单导出和导入SQLite数据库
  6. java虚拟内存扩展_Java 8虚拟扩展方法
  7. 处理大并发之二 对epoll的理解,epoll客户端服务端代码
  8. 用友无法打开计算机的ufnet服务,服务器安装完毕登陆正常,但是客户端安装完毕,重启以后,用友通无法正常启动,手工在服务里面启动,提示‘服务无法启动或依存的标记被删除’...
  9. Flutter Curves 动画曲线合辑
  10. [Java] 蓝桥杯ALGO-118 算法训练 连续正整数的和
  11. deeplab v3+---Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
  12. 卸载华为系统wifi服务器,如何安装随行WiFi驱动及如何卸载驱动
  13. 坐标系ICRS与ITRS相互转换,时间系统及转换
  14. 儿子:特训营归来,许三多算个屁!(转)
  15. SolidWorks 部分插件不显示
  16. Integration of image quality and motion cues for face anti-spoofing A neural network approach
  17. fluter set get
  18. SQLServer学习笔记 --- (20008, 'DB-Lib error message 20008, severity 9:\nUnable to open socket\nNet-Li
  19. 当前版本与卡刷包android_手机端提取Android 8.x及以上版本卡刷包中的system文件
  20. 炒股心得:不贪不怕 (zt)

热门文章

  1. 京东数科上市首轮问询「答卷」:与蚂蚁集团有本质区别、信用风险损失有限
  2. Java Bag模型模拟
  3. Struts 2常见应用
  4. linux adb工具_这是一个可以显示Linux命令的工具
  5. Jquery中AJAX参数详细介绍
  6. Spark与Mysql(JdbcRDD)整合开发
  7. 十大经典数据挖掘算法:SVM
  8. TensorFlow Java+eclipse下环境搭建
  9. 使用docker镜像搭建svn+Apache环境
  10. WinRT开发语言的功能和效率