CC3200 在udp_socket工程,设置BsdUdpServer为非阻塞模式,在while(1)一直调用 sl_RecvFrom函数(一直返回-11,这是正常的),当多次快速调sl_RecvFrom,就会出现,大概16ms的延时时间。在调用 sl_RecvFrom后加入大于900us 可解决未知延时问题(但浪费了这个时间,不满足实际使用要求)。
请问,根源是什么,为什么会产生这个延时或未知时间?
//测试代码
while (1)
{
iStatus = sl_RecvFrom(iSockID, g_cBsdBuf, sTestBufLen, 0,
( SlSockAddr_t *)&sAddr, (SlSocklen_t*)&iAddrSize );
if( iStatus < 0 && iStatus != -11)
{
// error
sl_Close(iSockID);
ASSERT_ON_ERROR(RECV_ERROR);
}
lLoopCount++;
//UART_PRINT("iStatus = %d\r\n",iStatus);
UART_PRINT("0");
delay_us(900); //加入大于900us 可解决未知延时问题(但浪费了这个时间,不满足实际使用要求)
if(iStatus>0)
{
UART_PRINT("11111111111111111111111111111111111111111111111111iStatus = %d\r\n",iStatus);
}
}