930电子网

 找回密码
 立即注册
艾克姆科技推出最新产品STC32G12K128开发板
查看: 18634|回复: 0

蓝牙开发常见问题12:烧写的新的BLE例子,显示的还是原来的服务

[复制链接]

52

主题

354

帖子

6545

积分

版主

Rank: 7Rank: 7Rank: 7

积分
6545
发表于 2019-5-22 10:00:21 | 显示全部楼层 |阅读模式
问题:开发板烧写了蓝牙点灯的例子“ble_app_blinky”,nRF Connect连接后显示的服务不是蓝牙点灯的服务,而是心率的服务,如下图所示。



原因:这是因为开发板之前烧录心率的例子时和手机绑定了,现在虽然烧写了蓝牙点灯的例子,但是MAC地址还是一样,所以nRF Connect根据MAC地址仍将它作为心率例子来处理了。
解决办法1:
1:打开手机设置蓝牙,找到配对的设备(这里是蓝牙点灯“Nordic_Blinky”),取消配对,然后全片擦除芯片,重新烧录蓝牙点灯的例子。如果这种方式解决不了,请看第二种方法。


解决办法2: 修改MAC地址,在main.c文件的main()函数的advertising_start();前加入如下所示的设置MAC地址的代码,将MAC地址改为和原来的不一样即可。
  1. //定义地址结构体变量my_addr
  2.           static ble_gap_addr_t  my_addr;


  3. /*---------------------------设置设备地址:随机静态地址-----------------------*/
  4.                 //初始化地址和地址类型
  5.                 my_addr.addr[0] = 0x11;
  6.                 my_addr.addr[1] = 0x22;
  7.                 my_addr.addr[2] = 0x33;
  8.                 my_addr.addr[3] = 0x44;
  9.                 my_addr.addr[4] = 0x55;
  10.                 my_addr.addr[5] = 0xcc;//注意地址最高两个位必须为1,其它所有的位不能同时为0,也不能同时为1
  11.                 my_addr.addr_type = BLE_GAP_ADDR_TYPE_RANDOM_STATIC;//地址类型设置为随机静态地址
  12.                 //写入地址
  13.                 err_code = sd_ble_gap_addr_set(&my_addr);//
  14.                 if(err_code != NRF_SUCCESS)
  15.                 {
  16.                         //打印设置地址失败
  17.                         printf("Set Address Failed!");
  18.                 }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|官方淘宝店|930电子网 ( 皖ICP备16000695号-2 )

GMT+8, 2024-11-21 23:57 , Processed in 0.112473 second(s), 22 queries .

快速回复 返回顶部 返回列表