自己在一个项目上,写了一个按键检测函数,感觉还不错,就分享给大家。该函数占用系统时间少,放在周期任务中。
/*******************************************************************************
* 函数名称 : 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