完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在wifi_prov_mgr例程(bluedroid ble方式)添加如下代码,配网完成后BLE初始化失败,系统重启。注释掉wifi_prov,则可以正常运行,请问如何在wifi_prov流程完成后正常使用BLE。
//ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT)); esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK(esp_bt_controller_init(&bt_cfg)); ESP_ERROR_CHECK(esp_bt_controller_enable(ESP_BT_MODE_BLE)); ESP_ERROR_CHECK(esp_bluedroid_init()); ESP_ERROR_CHECK(esp_bluedroid_enable()); |
|
相关推荐
1个回答
|
|
在ESP-IDF V4.3中,要在WiFi Provisioning(wifi_prov)之后重新初始化BLE,您可以按照以下步骤操作:
1. 首先,确保您已经完成了WiFi Provisioning。在完成配网后,调用`esp_wifi_prov_finalize()`函数,这将停止配网服务并释放相关资源。 ```c esp_err_t ret = esp_wifi_prov_finalize(); if (ret != ESP_OK) { ESP_LOGE(TAG, "esp_wifi_prov_finalize failed"); return; } ``` 2. 接下来,释放经典蓝牙(Classic Bluetooth)占用的内存。在调用`esp_bt_controller_mem_release()`函数之前,确保已经将蓝牙模式设置为`ESP_BT_MODE_BLE`。 ```c esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT(); bt_cfg.mode = ESP_BT_MODE_BLE; ESP_ERROR_CHECK(esp_bt_controller_init(&bt_cfg)); ESP_ERROR_CHECK(esp_bt_controller_enable(&bt_cfg)); ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT)); ``` 3. 然后,初始化BLE控制器和堆栈。 ```c ESP_ERROR_CHECK(esp_bluedroid_init()); ESP_ERROR_CHECK(esp_bluedroid_enable()); ``` 4. 最后,设置BLE设备名称和配置GATT服务。 ```c // 设置BLE设备名称 esp_ble_gap_set_device_name("Your_Device_Name"); // 配置GATT服务 // ... ``` 5. 启动BLE广告,以便其他设备可以发现您的设备。 ```c esp_ble_gap_start_advertising(&adv_params); ``` 通过以上步骤,您应该可以在WiFi Provisioning流程完成后正常使用BLE。如果仍然遇到问题,请检查您的代码逻辑和ESP-IDF版本是否兼容。 |
|
|
|
只有小组成员才能发言,加入小组>>
540浏览 6评论
451浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
433浏览 5评论
435浏览 4评论
406浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-15 07:21 , Processed in 0.795384 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号