typedef void (*PFV1)(UINT8 *pBuf);
typedef struct
{
UINT16 LongTime; /* 长按键生效时间,0表示非长按键 */
UINT8 ReentryTime; /* 长按键重复生效时间,0表示键值不重复生效 */
UINT8 FiltTime; /* 去抖滤波时间 */
PFV1 keyFuncDown; /* 按键按下,所调用函数的指针 */
PFV1 keyFuncUp; /* 按键弹起,所调用函数的指针 */
PFV1 keyFuncLong; /* 按键长按,所调用函数的指针 */
}KeyElem_TypeDef;
// 按键元素表
KeyElem_TypeDef const sKeyElemTbl[KEY_QTY] = {
{ 600, 0, 4, KEY_0_FUNC_DOWN, KEY_0_FUNC_UP, KEY_0_FUNC_LONG }, // KEY_0
{ 150, 20, 4, KEY_1_FUNC_DOWN, KEY_1_FUNC_UP, KEY_1_FUNC_LONG }, // KEY_1
{ 0, 0, 4, KEY_2_FUNC_DOWN, KEY_2_FUNC_UP, KEY_2_FUNC_LONG }, // KEY_2
{ 150, 20, 4, KEY_3_FUNC_DOWN, KEY_3_FUNC_UP, KEY_3_FUNC_LONG }, // KEY_3
{ 0, 0, 4, KEY_4_FUNC_DOWN, KEY_4_FUNC_UP, KEY_4_FUNC_LONG }, // KEY_4
{ 0, 0, 4, KEY_5_FUNC_DOWN, KEY_5_FUNC_UP, KEY_5_FUNC_LONG }, // KEY_5
{ 150, 20, 4, KEY_6_FUNC_DOWN, KEY_6_FUNC_UP, KEY_6_FUNC_LONG }, // KEY_6, KEY_0和KEY_1组合
{ 150, 20, 4, KEY_7_FUNC_DOWN, KEY_7_FUNC_UP, KEY_7_FUNC_LONG } // KEY_7, KEY_0和KEY_3组合
};
if( pKeyElem->LongTime > 0 )
就这么一条指令,要开销33个系统指令周期,让人崩溃。 |
|