# 单片机按键模块 **Repository Path**: danieljx/FML_KEY ## Basic Information - **Project Name**: 单片机按键模块 - **Description**: No description available - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 24 - **Created**: 2021-09-13 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MCU 按键模块 **FML_KEY 是一种轻量级的按键模块代码驱动** 该模块适用于裸机开发,通过按键扫描,检测到按键是否按下,松开等状态,并将该状态通过其他形式反馈给其他模块进行处理,模块化,移植简单 ------------ ## 功能支持 ### 六种按键操作状态 | 按键状态 | 描述 | | :--------: | :----- | | 没有按下 | 按键没有操作 | | 首次按下 | 按键按下,每次按下都会触发 | | 短按持续按下 | 长按期间一直触发(若使能长按模式,达到长按时间则不触发) | | 短按松开 | 按键弹起,每次松开都触发(若使能长按模式,达到长按时间则不触发) | | 长按持续按下 | 长按模式使能有效,达到长按时间长按期间一直触发 | | 长按松开 | 长按模式使能有效,达到长按时间后按键弹起触发 | ### 支持按键独立配置 | 按键配置 | 描述 | | :--------: | :----- | | 按键模式 | 短按模式、长按模式(区分短按和长按两种状态) | | 按键短按有效时间 | 包含防抖时间 | | 按键长按有效时间 | 长按模式使能有效 | | 按键使能 | 按键是否扫描 | ### 兼容多种按键 只要最终满足开关量形式的按键均可以兼容支持。 | 按键类型 | 描述 | | :--------: | :----- | | 独立式按键开关 | 每个按键单独占用一根I/O口线 | | 矩阵式按键开关 | 它由行和列线组成,按钮位于行和列线的交点处 | | 三态按键开关 | 两个按键占用一根I/O口线,高电平为按键1按下,低电平为按键2按下 | | 模拟量开关 | 模拟量仿开关量开关,即在一定范围为按键1按下、按键2或按键3按下... | | 数字组合开关 | 如 0x01 代表 key1 按下,0x02 代表 key2 按下,0x04 代表key3 按下(如解析红外线遥控器的接收端 I/O 数据) | ------------ ## 文件介绍 #### keyDrive 硬件驱动相关和核心代码,移植需要修改硬件驱动相关代码 ```c FML_KEY_DriveInit()//按键驱动的初始化,如相关的 GPIO 初始化 FML_KEY_ConfigInit()//按键配置信息的初始化,如按键的计时器等运行过程中使用的变量初始化 ``` #### keyManage 按键管理 ```c FML_KEY_ManageInit()//初始化,完成按键功能模块的初始化 FML_KEY_ScanTask()//调用按键的输入信号处理和按键配置信息的处理,完成按键功能模块的按键动作状态识别 FML_KEY_Register()//按键操作回调函数注册 FML_KEY_UnRegister()//按键操作回调函数注销 ``` ------------ ## 操作状态图 #### 短按模式 ![](https://img-blog.csdnimg.cn/20190901170838802.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0MTMwMjI3,size_16,color_FFFFFF,t_70) #### 长按模式 ![](https://img-blog.csdnimg.cn/20190901171106235.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0MTMwMjI3,size_16,color_FFFFFF,t_70)