使用NUCLEO开发板,通过STM32CubeMX 生成的简单 BLE 应用程序可实现通过手机APP连接,如果需要不借助手机APP,在系统蓝牙列表中发现并连接蓝牙设备,需要在广播数据中填入必要的信息,以让手机系统蓝牙可以发现该设备。
1、在app_ble.c
Adv_Request函数添加:
在广播中增加AD类型
// 修改广播数据中的设备名称和服务
uint8_t adv_data[] = {
0x02, 0x01, 0x06, // Flags
0x09, 0x09, 'M','y','_','D','r','i','v','e' ,// 设备名称(必须与GAP配置一致) My_Drive
0x03, 0x03, 0x12, 0x18 // 服务UUID字段(4字节)HID服务 兼容IOS 设备发现
};
uint8_t scan_rsp_data[] = {
//0x03, 0x19, 0xC1, 0x03 // Appearance: Generic Tag 设备外观 兼容安卓
0x03, 0x19, 0x0F, 0x01 // Appearance: Access Control Device
};
在aci_gap_set_discoverable函数后添加aci_gap_update_adv_data:
ret = aci_gap_update_adv_data(sizeof(adv_data), (uint8_t*) adv_data);
if (ret != BLE_STATUS_SUCCESS)
{
APP_DBG_MSG("==>> update_adv_data Failed , result: %d \n\r", ret);
}
else
{
APP_DBG_MSG("==>> Success: update_adv_data \n\r");
}
ret = aci_gap_update_adv_data(sizeof(scan_rsp_data), (uint8_t*) scan_rsp_data);
if (ret != BLE_STATUS_SUCCESS)
{
APP_DBG_MSG("==>> update scan_rsp_data Failed , result: %d \n\r", ret);
}
else
{
APP_DBG_MSG("==>> Success: update scan_rsp_data \n\r");
}
同时检查app_confi.h
/**
* Device name configuration for Generic Access Service
*/
#define CFG_GAP_DEVICE_NAME "My_Drive"
#define CFG_GAP_DEVICE_NAME_LENGTH (8)