TI中文支持网
TI专业的中文技术问题搜集分享网站

GATT_Notification() 连续发送一段时间后程序停止运行

各位好!

我使用一个100ms的定时器,在每次溢出事件中利用下面这个函数发送一个248字节的数组,发现程序在显示几个 Send Notification Success之后就崩溃了,其间并没有 Send Notification Failure。

不知道应该如何分析与解决呢?

已经设置 PHY(2M),连接间隔(100),MAX_PDU_SIZE(255)。

感激不尽!


附:

static bStatus_t ServApp_SendNotiInd( uint8_t *nvalue,uint16_t nlen) {attHandleValueNoti_t noti;uint16_t slen;bStatus_t status;slen = nlen;if ( connHandleMap[lastConnIndex].connHandle != INVALID_CONNHANDLE ){noti.pValue = (uint8 *)GATT_bm_alloc( connHandleMap[lastConnIndex].connHandle, ATT_HANDLE_VALUE_NOTI,slen,&slen);if ( noti.pValue != NULL ){noti.handle = 0x2C;noti.len = slen;memcpy(noti.pValue, nvalue, slen);status = GATT_Notification( connHandleMap[lastConnIndex].connHandle, &noti, FALSE );if ( status != SUCCESS ){display("\r\nSend Notification Failure");switch(status){case INVALIDPARAMETER:display("\r\nINVALIDPARAMETER");break;case MSG_BUFFER_NOT_AVAIL:display("\r\nMSG_BUFFER_NOT_AVAIL");break;case bleNotConnected:display("\r\nbleNotConnected");break;case bleMemAllocError:display("\r\nbleMemAllocError");break;case bleInvalidMtuSize:display("\r\nbleInvalidMtuSize");break;case bleTimeout:display("\r\nbleTimeout");break;}GATT_bm_free( (gattMsg_t *)&noti, ATT_HANDLE_VALUE_NOTI );}else{display("\r\nSend Notification Success");GATT_bm_free( (gattMsg_t *)&noti, ATT_HANDLE_VALUE_NOTI );}}else{display("\r\nbleNoResources");GATT_bm_free( (gattMsg_t *)&noti, ATT_HANDLE_VALUE_NOTI );status = bleNoResources;}return ( status );} }

Viki Shi:

增大GATT_Notification()的发送间隔试试

user5353527:

抱歉,各位!格式没调整好。如何重新编辑或者删除帖子知道的话也烦请告知。

user5353527:

回复 Viki Shi:

你好!

我将发送间隔调至200ms,然后运行时发送的次数增加了,但是一段时间后程序仍然会崩溃。不知道应该如何修改?

谢谢!

Viki Shi:

回复 user5353527:

怀疑是发送频次太高导致的死机,你可以多改几个值实验看看

赞(0)
未经允许不得转载:TI中文支持网 » GATT_Notification() 连续发送一段时间后程序停止运行
分享到: 更多 (0)