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的作法