TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2530按键由中断改为查询后按键无效

CC2530按键由中断改为查询后按键无效

中断模式下按键是可以生效的,改为查询模式后按键无反应,请问是不是还有配置哪里?

/* Initialize Key stuff */
#if defined (ISR_KEYINTERRUPT)//
HalKeyConfig(HAL_KEY_INTERRUPT_ENABLE , OnBoard_KeyCallback);
#else//
HalKeyConfig(HAL_KEY_INTERRUPT_DISABLE , OnBoard_KeyCallback);
#endif

YiKai Chen:

Z-Stack的原始例程按键預設都是用查询的,你用原始例程測試會有問題嗎?

user5367314:

回复 YiKai Chen:

你好,用查询的方案,读取按键是长按还是短按,按下去会进入下面的函数,松开的时候就不进入了,程序有什么问题吗?#define HAL_KEY_SW_6 0x10static void zclSampleDoorLock_HandleKeys( byte shift, byte keys )
{(void)shift;// Intentionally unreferenced parameterif ( keys & HAL_KEY_SW_6 )//P0.7{if (keys == 0x10)//press down{keyPressTime = osal_getClock();}else //press up{if (keyPressTime){keyPressTime = (osal_getClock() - keyPressTime);if (keyPressTime >= KEY_HOLD_LONG_INTERVAL )//长按{}else{}keyPressTime = 0;}}}
}

user5367314:

回复 YiKai Chen:

2530,读IO口的电平用哪个函数?

YiKai Chen:

回复 user5367314:

你要读哪個GPI口的电平

user5367314:

回复 YiKai Chen:

1.读P0.7的电平
2.按键采用查询模式,低电平有效,怎么才能实现对按键按下时长的计算
现在的情况,按下后马上进入HandleKeys(),但是松开的时候不进入HandleKeys(),
这就没法计算按下和松开的时间差了,能不能按下和松开都进入HandleKeys(),
这样就可以判断时间差了

YiKai Chen:

回复 user5367314:

1. 直接用P0_7就可以去读P0.7的电平
2. HalKeyPoll只會在按下或是松开进入HandleKeys(),要实现对按键按下时长的计算你要在第一次進入HandleKeys後再起動一個timer event去持續檢查按键有沒有松开並進行时长的计算

user5367314:

回复 YiKai Chen:

请问2630的定时器从哪里调用?

YiKai Chen:

回复 user5367314:

你要調用Util_constructClock/Util_startClock/Util_stopClock來做

user5367314:

回复 YiKai Chen:

有没有哪个例程用到过此定时器,
Util_constructClock初始化一次就可以吧?参数不明白是什么意思?
Clock_Handle Util_constructClock(Clock_Struct *pClock, Clock_FuncPtr clockCB,uint32_t clockDuration, uint32_t clockPeriod,uint8_t startFlag,UArg arg);
void Util_startClock(Clock_Struct *pClock);
void Util_stopClock(Clock_Struct *pClock);

YiKai Chen:

回复 user5367314:

這個你可以參考BLE Stack 2.2.2裡面 simple_peripheral例程SBP_PERIODIC_EVT的作法

赞(0)
未经允许不得转载:TI中文支持网 » CC2530按键由中断改为查询后按键无效
分享到: 更多 (0)