使用ch32v208芯片作为从机,主机也是同款芯片。
现在问题在从机上。
我按照博客园的相关博文编写的ble配对+绑定的代码。
配对、绑定、连接都正常。现在问题出现在删除从机存储的绑定信息上。
我配置了最大存储2条配对信息,最大作为2个从机角色。功能正常。
config.h配置如下:
#ifndef BLE_SNV #define BLE_SNV TRUE #endif #ifndef BLE_SNV_ADDR #define BLE_SNV_ADDR 0x08077C00 #endif #ifndef BLE_SNV_NUM #define BLE_SNV_NUM 2 //默认3 #endif #ifndef PERIPHERAL_MAX_CONNECTION #define PERIPHERAL_MAX_CONNECTION 2 #endif
清空配对信息时,我使用了如下方法:
// Erase bonding info GAPBondMgr_SetParameter(GAPBOND_ERASE_ALLBONDS, 0, NULL); GAPBondMgr_GetParameter(GAPBOND_BOND_COUNT, &bondingNum); // 获取绑定数量 printf("bondingNum = %x\n", bondingNum); for (i = 0; i < bondingNum; i++) { p = tmos_snv_read(mainRecordNvID(i), sizeof(gapBondRec_t), buf); // 获取一个绑定MAC Peripheral_print_bon_list(buf);//串口打印 }
得到的打印信息如下:
bondingNum = 1
Get white List MAC = ff ff ff ff ff ff
我的问题是:我清空了所有的配对信息,bondingNum不应该为0吗?在这种情况下再次进行配对则会出现问题,配对不上,配对上但是保存不了信息等。
通过重启单片机再次执行
GAPBondMgr_SetParameter(GAPBOND_ERASE_ALLBONDS, 0, NULL);
则会恢复正常,bondingNum = 0