完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
IDF版本5.1.2,GATTC注册代码根据gattc_gatts_coex例程生成:Code: Select all
esp_err_t register_gattc(void){ esp_err_t ret; ret = esp_ble_gattc_register_callback(esp_gattc_cb); if (ret) { ESP_LOGE(COEX_TAG, "%s gattc register failed, error code = %xn", __func__, ret); return ret; } ret = esp_ble_gattc_app_register(GATTC_PROFILE_C_APP_ID); if (ret) { ESP_LOGE(COEX_TAG, "%s gattc app register failed, error code = %xn", __func__, ret); return ret; } esp_err_t local_mtu_ret = esp_ble_gatt_set_local_mtu(500); if (local_mtu_ret) { ESP_LOGE(COEX_TAG, "set local MTU failed, error code = %x", local_mtu_ret); return local_mtu_ret; } return ESP_OK;} 正常运行,根据代码写的注销函数:Code: Select all static esp_err_t unregister_gattc(void){ esp_err_t ret; // 注销GATT客户端应用 ret = esp_ble_gattc_app_unregister(GATTC_PROFILE_C_APP_ID); if (ret) { ESP_LOGE(COEX_TAG, "%s gattc app unregister failed, error code = %xn", __func__, ret); return ret; } // 注销GATT客户端回调函数 ret = esp_ble_gattc_register_callback(NULL); if (ret) { ESP_LOGE(COEX_TAG, "%s gattc unregister failed, error code = %xn", __func__, ret); return ret; } return ESP_OK;} 每次运行都会报错:Code: Select all I (14276) GATTC_GATTS_COEX: GATTC unregisted.E (14276) BT_APPL: Deregister Failed unknown client cifE (14276) GATTC_GATTS_COEX: unregister_gattc gattc unregister failed, error code = ffffffffI (14286) GATTC_GATTS_COEX: BLE closed.W (14296) BT_APPL: bta_dm_disable BTA_DISABLE_DELAY set to 200 ms 请问是什么原因? |
|
相关推荐
2个回答
|
|
使用函数时,形参用错了,下面是注销代码的一个示例:
static esp_err_t unregister_gattc(void) { esp_err_t ret; // 注销GATT客户端应用 ret = esp_ble_gattc_app_unregister(gattc_profile_tab[GATTC_PROFILE_C_APP_ID].gattc_if); if (ret) { ESP_LOGE(COEX_TAG, "%s gattc app unregister failed, error code = %xn", __func__, ret); return ret; } // 注销GATT客户端回调函数 ret = esp_ble_gattc_register_callback(esp_gattc_cb); if (ret) { ESP_LOGE(COEX_TAG, "%s gattc unregister failed, error code = %xn", __func__, ret); return ret; } return ESP_OK; } |
|
|
|
BLE注销GATT客户端报错可能有以下几个原因:
1. 回调函数未正确实现:请确保`esp_gattc_cb`回调函数已正确实现,并且处理了所有可能的事件。如果回调函数实现有误,可能会导致注册失败。 2. 回调函数未正确注册:请检查`esp_ble_gattc_register_callback`函数调用是否正确,确保传入的回调函数指针是正确的。 3. 蓝牙堆栈未初始化:在调用`esp_ble_gattc_register_callback`之前,请确保蓝牙堆栈已正确初始化。可以使用`esp_bluedroid_init`和`esp_bluedroid_enable`函数进行初始化。 4. 蓝牙功能未启用:请确保在项目配置中启用了蓝牙功能。在`sdkconfig`文件中,确保`CONFIG_BT_ENABLED`和`CONFIG_BLE_SMP_ENABLE`选项已设置为`y`。 5. 错误处理:请检查`ESP_LOGE`宏中的格式化字符串是否正确。在您的代码中,格式化字符串中的`%xn`应该是`%x`。 6. 其他潜在问题:如果以上原因都排除了,可能存在其他潜在问题。建议检查ESP-IDF的文档和示例代码,以确保您的实现与推荐的实践一致。 为了解决这个问题,您可以尝试以下步骤: 1. 确保回调函数`esp_gattc_cb`已正确实现。 2. 检查`esp_ble_gattc_register_callback`函数调用是否正确。 3. 确保蓝牙堆栈已正确初始化。 4. 检查项目配置,确保蓝牙功能已启用。 5. 检查`ESP_LOGE`宏中的格式化字符串是否正确。 6. 查阅ESP-IDF文档和示例代码,确保实现与推荐的实践一致。 希望这些建议能帮助您解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
545浏览 6评论
457浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
437浏览 5评论
441浏览 4评论
411浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 16:46 , Processed in 0.701546 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号