Page 1 of 1

[已解决]idf-V4.3,如何在wifi_prov之后重新初始化BLE(bluedroid)

Posted: Fri Nov 12, 2021 2:05 am
by jiangteng
在wifi_prov_mgr例程(bluedroid ble方式)添加如下代码,配网完成后BLE初始化失败,系统重启。注释掉wifi_prov,则可以正常运行,请问如何在wifi_prov流程完成后正常使用BLE。

Code: Select all

	//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());

Re: idf-V4.3,如何在wifi_prov之后重新初始化BLE(bluedroid)

Posted: Thu Nov 18, 2021 12:08 pm
by ESP_XuLZ
1. 在 example config 中把 WIFI_PROV_SCHEME_BLE_EVENT_HANDLE_FREE_BTDM 改为 WIFI_PROV_SCHEME_BLE_EVENT_HANDLE_FREE_BT,表示在配置网络完成后仅释放 controller 中 BT 的 memory
2. 要在 连接网络之后( xEventGroupWaitBits(wifi_event_group, WIFI_CONNECTED_EVENT, false, true, portMAX_DELAY);)
等待 8~9 秒钟左右,等待配置网络的 BLE 的相关的 deinit 过程,不然下面进行初始化时状态不对,会报错
3.之后再使用以上初始化代码