按键实现单击、双击、长按 方便移植版本

基于网友@暖暖的纠结的按键处理方法,进行了优化,提供了一个适用于STM32单片机移植的按键功能实现,包括单击、双击和长按三种模式。
摘要由CSDN通过智能技术生成

参考网友 @暖暖的纠结 的按键方法,做了些优化,做了一个方便移植的按键版本。

代码如下:

头文件

#ifndef KEY_DETECT_H
#define KEY_DETECT_H

typedef struct{
   
	
	       unsigned char pressdown_flag;      //按键按下标志,在中断中置1,key_detect函数中置0
	       unsigned char short_flag;          //短按标志,key_detect中置1,需要手动置0!
	       unsigned char long_flag;           //长按标志,key_detect中置1,需要手动置0!
	       unsigned char double_flag;         //双击标志, key_detect中置1,需要手动置0!
	       unsigned char (*read_input)(void); //检测按键输入函数,根椐实际情况封装
       }key_s;

void key_detect (key_s * k);

#endif  // KEY_DETECT_H

C文件

#include "key_detect.h"

void key_detect (key_s * k)
{
   
	static int  down_counter = 0;            //按键持续按下计数器
	static int  up
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值