我在使用 EasyLink_transmitCcaAsync这个函数进行周期发送时,在发送几十到几百个包之间时,会发送程序卡死的情况,多次测试,发送包数量不同,但必定出现程序卡死。
平台: simplink的 rfNode工程,根据LBT工程改写发送.
测试方式: 1: 先对node和concentrator分别烧写程序,然后观察两个节点打印信息,发现如上问题 ,然后为了排除变量,修改为 仅仅对node上电,1s发送一个数据包 ,通过串口和LED闪烁观察是否程序卡死。然后通过屏蔽代码方式得到如下现象:
使用代码1进行发送,发送一千多个包,均为卡死
if (EasyLink_transmit(¤tRadioOperation.easyLinkTxPacket) != EasyLink_Status_Success) { Event_post(radioOperationEventHandle, RADIO_EVENT_SEND_FAIL); } else { Event_post(radioOperationEventHandle, RADIO_EVENT_DATA_ACK_RECEIVED); }
使用代码2进行发送,几十到几百个包后发送卡死现象
if( EasyLink_transmitCcaAsync(¤tRadioOperation.easyLinkTxPacket, lbtCallback) != EasyLink_Status_Success) { } void lbtCallback(EasyLink_Status status) { Event_post(radioOperationEventHandle, RADIO_EVENT_DATA_ACK_RECEIVED); }
感觉就说 代码1是阻塞发送,代码而是非阻塞发送。请问可能是哪方面的原因呢,使用EasyLink_transmitCcaAsync函数发送就会卡死掉。
非常感谢