请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2541 Thread 中讨论的其他部件:CC2540、 BLE-STACK
工具/软件:TI C/C++编译器
你(们)好
我需要你的建议。 有关 CC2540遥控钥匙按钮(p0.0引脚)操作的更多信息。
我正在使用 cc2541mini DK (有 cc2541密钥卡、数据包监听器和 ccDebugger)
我使用的是具有省电功能的 SimpleBLEPeripheral 项目(Ble stack 1.4.0)。
我正在尝试实现这一点。
1.加电:遥控器正常工作(广告、定期事件等),具有省电功能
2.按钮为长按(超过3秒):遥控钥匙进入睡眠模式
3.按钮再次被长按:遥控钥匙唤醒并正常工作,具有省电功能
1和2没有问题、3有问题、间歇性工作。
请告知问题是什么。
我在项目中更改了 HandleKey 函数和密钥事件、如下所示
静态空 keyfobapp_HandleKeys (uint8 shift、uint8 key)
{
if (keys & HAL_key_sw_1)
{
OSAL_START_timerEx (simpleBLEPeripheral_TaskID、KEYHOLD_EVT,0);
}
bool sys_wake = true;//全局变量,睡眠/唤醒状态
if (Events & KEYHOLD_EVT) { 如果(P0_0=0)//按钮被按下 { SW1_HOLD_cnt++; OSAL_START_timerEx (simpleBLEPeripheral_TaskID、KEYHOLD_EVT、1000); } else //按钮被释放 { if (sw1_hold_cnt >=3) { if (sys_wake == true) { uint8 turnOnAdv = false; GAPRole_SetParameter( GAPROLE_advertise_enabled,sizeof ( uint8 ),&TurnOnAdv ); OSAL_STOP_timerEx (simpleBLEPeripheral_TaskID、period_EVT); SYS_WAKE = false; //hal_sleep (0); } 其他 { uint8 turnOnAdv = true; GAPRole_SetParameter( GAPROLE_advertise_enabled,sizeof ( uint8 ),&TurnOnAdv ); OSAL_START_timerEx (simpleBLEPeripheral_TaskID、period_EVT、0); SYS_WAKE = true; } } SW1_HOLD_cnt = 0; } 返回(事件^ KEYHOLD_EVT); }