当我尝试进入其中一种无线电测试模式时、我的应用似乎正在脱离电源轨。 我使用 的 HCI_EXT_ModemTestTxCmd ()调用与我们的 R2F 应用中完全相同、这没有任何问题、并以请求的频率开始传输。 如果用户请求测试模式,我会检查 BLE 连接是否处于活动状态,并在必要时将其关闭,然后禁用广播,最后会调用 HCI_EXT_ModemTestTxCmd ():
如果(已连接) { Rval = GAP_TerminateLinkReq (CONNNANDLE_ALL、0); log (log_console_level、"测试模式的连接关闭:%d\n"、rval); //connected = 0; } rval = GapAdv_disable (advHandleLegacy); log (log_console_level、"GapAdv_disable:广播被禁用:%d\n"、rval); HCI_ret = HCI_EXT_SetTxPowerCmd (HCI_EXT_TX_POWER_0_DBM); log (log_console_level、"Tx 功率设置为0dBm、0x%x\n"、HCI_ret); IF (testModeCmd >= eTEST_MODE_CW_2402MHz_0dBm && testModeCmd <= eTEST_MODE_CW_2480MHz_0dBm) { HCI_EXT_ModemTestTxCmd (HCI_EXT_TX_UNMODEG_CARRIER、 testChannelIdxLookup [testModeCmd - eTEST_MODE_CW_2402MHz_0dBm]); } 否则、如果(testModeCmd >= eTEST_MODE_2402MHz_0dBm && testModeCmd <= eTEST_MOD_2480MHz_0dBm) { HCI_EXT_ModemTestTxCmd (HCI_EXT_TX_TANDEG_CARRIER、 testChannelIdxLookup [testModeCmd - eTEST_MODE_2402MHz_0dBm]); } 否则、如果(testModeCmd == eTEST_MODE_TX_Hop) { HCI_EXT_ModemHopTestTxCmd (); }
看门狗跳闸、我的应用程序复位。 在发生违规的 HCI_EXT_ModemTestTxCmd ()调用后、我禁用了看门狗并停止了处理器、它位于 ROM_init.c 中的 ROM_Spinlock ()处
是否有关于如何进一步调试的建议? 上述代码与我们的 R2F 应用之间的唯一区别是使用 GAPRole API 来关闭连接和禁用广播。