乐鑫技术交流
直播中

陈丽

7年用户 1547经验值
私信 关注
[问答]

ESP32-WROVER-E如何实现蓝牙先禁用后再启用?

IDF : V3.3.2
硬件:ESP32-WROVER-E

如何实现蓝牙先禁用后再启用。

我先使用      Code: Select all
  esp_bluedroid_disable();
进行蓝牙禁用
然后然后再Code: Select all
esp_bluedroid_enable();        esp_bt_dev_set_device_name("ESP_SINK_STREAM_DEMO");        esp_bt_gap_set_scan_mode(ESP_BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE);
重新设置蓝牙名字和扫描方式。蓝牙能搜索的到。连接的时候也能出现配对。但配对后就掉线了。
这个问题应该怎么解决!

回帖(2)

韩婧

2024-6-20 10:48:03
使用 esp_bluedroid_enable() 前要先调用  esp_bluedroid_init()
举报

哈哈哈

2024-6-20 17:36:26

1. 首先,确保您已经安装了ESP-IDF V3.3.2,并正确配置了开发环境。

2. 在您的项目中,确保已经包含了必要的头文件:
```c
#include "esp_bt.h"
#include "esp_gap_ble_api.h"
#include "esp_bt_defs.h"
#include "esp_bt_device.h"
```

3. 在您的代码中,首先禁用蓝牙:
```c
esp_err_t disable_ble() {
    esp_bluedroid_disable();
    return ESP_OK;
}
```

4. 然后,重新启用蓝牙,并设置设备名称和扫描模式:
```c
esp_err_t enable_ble() {
    esp_bluedroid_enable();
    esp_bt_dev_set_device_name("ESP_SINK_STREAM_DEMO");
    esp_bt_gap_set_scan_mode(ESP_BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE);
    return ESP_OK;
}
```

5. 在您的主函数中,调用上述函数以实现蓝牙的禁用和启用:
```c
void app_main() {
    disable_ble();
    vTaskDelay(1000 / portTICK_PERIOD_MS); // 等待1秒,确保蓝牙完全禁用

    enable_ble();
}
```

6. 在连接过程中,确保您已经实现了必要的BLE回调函数,例如连接、配对等。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分