DA14580,基本开发套件,SDK 5.0.3
帮助!!!我一直在尝试取得了成功的成功,让App_ble_Perizalal示例进入扩展的睡眠模式,使用蓝牙操作暂停挂起外部唤醒。我已成功编译并运行来自SDK 3的邻近记者,它确实类似于我想要的:在3分钟不活动后深入睡眠。我试图向SDK 5 App_ble_Peripheral示例应用相同的步骤,它不会暂停BLE操作.....或者至少牢固地牢固地稳定地,直到外部事件像邻近记者一样。
在App_ble_Peripheral示例的副本中,我设置了App_easy_timer以在60秒后启动以下步骤:
停止广告:app_easy_gap_advertise_stop();
停止广告定时器:app_easy_timer_cancel(app_add_data_update_timer_used);
设置延长睡眠:ARCH_SET_EXTEDDED_SLEEP();
暂停蓝牙操作:ARCH_BLE_EXT_WAKEUP_ON();
设置唤醒功能:wkupct_register_callback(app_button_press_cb);
wkupct_enable_irq(0x0200,0x0200,1,0);// p1_1,p1_1,1个事件,debouncing time = 0ms的高电平
我在调试器中测试了在调试器中验证定时器触发,并让我进入上面的睡眠顺序。然后我有undef cfg_development_debug,编译,编程了EEPROM,重置和引导。它似乎尚未延长睡眠模式。蓝牙操作仍然处于活动状态,我仍然可以扫描并从平板电脑连接。我仍然吸引了重要的力量.....没有像10ua一样的近距离记者进入睡眠模式。
我真的想通过这种方式获得App_ble_Peripheral功能作为建立进一步开发的基础。我读过这么多的论坛帖子和文件相关的那些,我的眼睛是令人沮丧的,我仍然没有得到任何地方,所以将非常有用的建议非常感谢。
嗨max44,
让我们从睡眠模式开始,为了让设备在SDK5中,落在睡眠模式下,您必须将App_default_sleep_mode设置为Arch_ext_sleep_on,因为在所有这些示例中,睡眠设置为Arch_sleep_off(如果您调用Arch_set_exted_sleep(),则启用动态睡眠模式)。只需通过这样做,您将在广告间隔之间睡眠(您无法使用调试器,虽然在休眠模式下进行测试,您无法通过Keil调试)。你上面提到的程序的程序。通过停止广告,您停止BLE活动并取消计时器,我想您的错误是您在Timer_Handler中透明的所有上述命令都已续订。这样做的正确方法是等待计时器以前和处理程序只是停止广告并取消定时器(发出app_easy_gap_advertise_stop()),当广告停止时,将触发user_app_add_undirect_complete()的处理程序处理程序您只能从外部中断设置为唤醒ARCH_BLE_EXT_WAKEUP_ON()注册唤醒回调并启用中断,您不必调用ARCH_SET_EXTEDDED_SLEEP(),因为您已在睡眠模式下(当设备没有BLE活动时,低功率状态下降)。希望有所帮助。
谢谢mt_dialog.
谢谢mt!您在User_App_Adv_Undirect_Complete()中使用外部唤醒调用睡眠的建议完美。我怀疑阅读UM-B-006,我需要某种方式与BLE事件同步,我只是不知道如何在SDK 5示例中的上下文中。
在断开Boot EEPROM后,我甚至看到一个卓越的2UA。
将此标记为完成并回答。再次感谢您通常的专家良好的建议。
最大限度