CH573F 作为Observer时候,GAPROLE_MAX_SCAN_RES 设为0
#define GAPROLE_MAX_SCAN_RES                    0x30E  //!< Maximum number of discover scan results to receive. Default is 0 = unlimited.
#define TGAP_FILTER_ADV_REPORTS                 21  //!< Filter duplicate advertising reports. Default TRUE.


CH573F  作为Observer时候,GAPROLE_MAX_SCAN_RES  设为0。

TGAP_FILTER_ADV_REPORTS保持默认值true。

这时候内部应该会记录接收过的广播包,进行去重。


1.如果附近有大量不同的蓝牙设备,ch573记录了一大堆广播,会不会导致内存溢出?

2.GAPROLE_MAX_SCAN_RES设置为false,关闭去重,是不是就避免了这种情况?



1、不会导致内存溢出,按照我们例程实现一次性扫描8个即可,如果需要扫描更多,可以尝试多次扫描,这样也可以扫描到所有的设备;

2、协议栈里面的功能,一次扫描不会出现重复的,使用默认即可。


如果想实现长时间运行,不断的记录周围设备,之后通过串口什么的发走。


这样,即使增大协议栈空间,早晚也会溢出。

我可以接受重复出现,但是不能让他内存溢出,应该怎么做?

GAPROLE_MAX_SCAN_RES关掉这个有效果吗?



我们默认一次扫描8个左右,扫描完之后又释放了这个内存,所以正常使用是不会出现内存溢出的现象,如果需要进行扫描多个设备,可以尝试多次扫描即可。想要实现长时间运行、不断记录周围设备可以分批次处理实现。


只有登录才能回复,可以选择微信账号登录