1、模块简介

按键检测模块用于嵌入式系统上实现按键的扫描,实现按键的触发检测,并对短按、长按等状态进行识别检测。

2、需求分析

按键检测需要可以识别多个按键的多种事件触发,并且需要对事件做出响应处理。

  • 功能性需求

    • 可以实现多个按键检测
    • 实现按键扫描事件检测和事件回调触发
  • 非功能性需求

    • 方便移植
    • 方便添加按键
    • 代码实现简洁易读

本文实现的按键模块主要有以下事件:

  • 按下事件
  • 释放事件
  • 短按事件
  • 双击事件
  • 长按X秒事件
  • 长按保持事件(比如调整音量,连续按音量加减可以持续加减)

组合按键的事件可以在应用层由单一按键事件扩展而来

3、运行流程

A picture is worth a thousand words

按键模块的状态机如下所示
按键模块.jpg

4、编码实现

为了解耦方便移植,使用面向对象的编码风格


等等,我需要把代码精简一下再放上来

文章目录