作者:伤心的海2012_626 | 来源:互联网 | 2024-12-06 19:17
本文探讨了在使用NordicSDK时遇到NRF_ERROR_NO_MEM错误的解决方案,特别是当错误发生在`sd_ble_gatts_service_add()`或`sd_ble_gatts_characteristic_add()`函数中时。
在使用Nordic SDK进行开发时,如果遇到了NRF_ERROR_NO_MEM
错误,这通常意味着内存不足。首先,确认您当前使用的SDK版本是否为12.x.x系列。其次,确定哪个函数返回了此错误代码。如果是sd_ble_gatts_service_add()
或sd_ble_gatts_characteristic_add()
函数,则可能需要增加GATT表的大小。
解决方法是在初始化蓝牙栈时,通过设置ble_enable_params.gatts_enable_params.attr_tab_size
字段来增大GATT属性表的大小。例如,可以在ble_stack_init()
函数中添加如下代码:
ble_enable_params.gatts_enable_params.attr_tab_size = 0x1000;
如果不手动设置该值,默认情况下它将被设为SOFTDEVICE_GATTS_ATTR_TAB_SIZE
(等同于BLE_GATTS_ATTR_TAB_SIZE_DEFAULT
),其默认值为0x580字节(适用于S130 v2.x.x)。这可能不足以支持您的应用需求,因此建议根据实际需求调整此值。
调整GATT属性表大小的具体步骤如下图所示: