微控制器的按键检测-长按、单击、双击(内部无延时函数)

本文分享了一个适用于微控制器的高效按键检测函数,该函数可在周期任务中运行,且不依赖内部延时函数,支持长按、单击和双击等多种操作。
摘要由CSDN通过智能技术生成

自己在一个项目上,写了一个按键检测函数,感觉还不错,就分享给大家。该函数占用系统时间少,放在周期任务中。

/*******************************************************************************
* 函数名称	: uint8 KeyScan(uint16 uKeySts, uint16 uPressValue, uint8 uScan_ms)
* 函数功能	: 按键扫描,扫描时间间隔建议10ms
* 输入参数	: uKeySts-->输入GPIO寄存器值
			  uPressValue-->按键按下对应值
			  uScan_ms-->扫描时间须为(1~50),其余值默认在该范围内
* 输出参数	: None
* 返回参数	: 00-->无按键操作			  
			  01-->按键长按超过1s,释放按键
			  11-->按键长按超过1s,未释放按键	
			  02-->按键长按超过2s,释放按键
			  12-->按键长按超过2s,未释放按键
			  03-->按键长按超过3s,释放按键
			  13-->按键长按超过3s,未释放按键	
			  0A-->单击按键
			  0B-->双击按键
*******************************************************************************/
uint8 KeyScan(uint32 uKeySts, uint32 uPressValue, uint8 uScan_ms)
{
	static uint16 kpcnt = 0;		// 存储按下计数
	static uint16 krcnt = 0;		// 存储放计数
	stati
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值