转:STM32 长按、短按、双击、三击算法

原文链接:https://blog.csdn.net/qq_48691686/article/details/115222288
key.h文件如下
key.c文件如下
本算法需要注意的问题
1.算法中只有在长按按键的状态下,才会在松手时,对按键状态和结果进行清除。别的情况,如双击和三击,可以在调用按键的程序中进行按键结果清除。
2.在按键结构体中,区分了按键的状态和结果,这是因为按键的状态切换后,需要等待如双击和三击的时间间隔才能确定下来,也就是按键结果。
3.按键状态中,把双击分为KEY_1_DUBDOW和KEY_1_DOUBLE。目的是为了进行第二次按键松手检测。
4.算法只针对一路按键信号的检测,多路按键检测同一路。