TCP client 連接電腦起的Server
Server主動下發(fā)4000多字節(jié)數(shù)據(jù),client收到后返還給server
然后關(guān)閉server,此時client打印disconnect
電腦再次打開server? client會一直提示timeout? 大概2分鐘后連接成功
請問這種情況需要如何處理?
TCP client 連接電腦起的Server
Server主動下發(fā)4000多字節(jié)數(shù)據(jù),client收到后返還給server
然后關(guān)閉server,此時client打印disconnect
電腦再次打開server? client會一直提示timeout? 大概2分鐘后連接成功
請問這種情況需要如何處理?
看下芯片這邊的打印狀態(tài),是不是卡在什么狀態(tài)異常里面了。
#include "ETH.h"
#include "FreeRTOS.h"
#include "task.h"?
#include "event_groups.h"
#include "CH57xNET.h"
#include "uart.h"
#define KEEPLIVE_ENABLE? ? ? ? ? ? ? ? ? ? ? 1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 開啟KEEPLIVE功能 */
/* 下面的緩沖區(qū)和全局變量必須要定義,庫中調(diào)用 */
__align(16)UINT8? ? CH57xMACRxDesBuf[(RX_QUEUE_ENTRIES )*16];? ? ? ? ? ? ? ? ? ?/* MAC接收描述符緩沖區(qū),16字節(jié)對齊 */
__align(4) UINT8? ? CH57xMACRxBuf[RX_QUEUE_ENTRIES*RX_BUF_SIZE];? ? ? ? ? ? ? ? /* MAC接收緩沖區(qū),4字節(jié)對齊 */
__align(4) SOCK_INF SocketInf[CH57xNET_MAX_SOCKET_NUM];? ? ? ? ? ? ? ? ? ? ? ? ?/* Socket信息表,4字節(jié)對齊 */
UINT16 MemNum[8] = {CH57xNET_NUM_IPRAW,
? ? ? ? ? ? ? ? ? ? CH57xNET_NUM_UDP,
? ? ? ? ? ? ? ? ? ? CH57xNET_NUM_TCP,
? ? ? ? ? ? ? ? ? ? CH57xNET_NUM_TCP_LISTEN,
? ? ? ? ? ? ? ? ? ? CH57xNET_NUM_TCP_SEG,
? ? ? ? ? ? ? ? ? ? CH57xNET_NUM_IP_REASSDATA,
? ? ? ? ? ? ? ? ? ? CH57xNET_NUM_PBUF,
? ? ? ? ? ? ? ? ? ? CH57xNET_NUM_POOL_BUF
? ? ? ? ? ? ? ? ? ? };
?UINT16 MemSize[8] = {CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_IPRAW_PCB),
? ? ? ? ? ? ? ? ? ? CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_UDP_PCB),
? ? ? ? ? ? ? ? ? ? CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_TCP_PCB),
? ? ? ? ? ? ? ? ? ? CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_TCP_PCB_LISTEN),
? ? ? ? ? ? ? ? ? ? CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_TCP_SEG),
? ? ? ? ? ? ? ? ? ? CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_IP_REASSDATA),
? ? ? ? ? ? ? ? ? ? CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_PBUF) + CH57xNET_MEM_ALIGN_SIZE(0),
? ? ? ? ? ? ? ? ? ? CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_PBUF) + CH57xNET_MEM_ALIGN_SIZE(CH57xNET_SIZE_POOL_BUF)
? ? ? ? ? ? ? ? ? ? };
__align(4)UINT8 Memp_Memory[CH57xNET_MEMP_SIZE];
__align(4)UINT8 Mem_Heap_Memory[CH57xNET_RAM_HEAP_SIZE];
__align(4)UINT8 Mem_ArpTable[CH57xNET_RAM_ARP_TABLE_SIZE];
/******************************************************************************/
/* 本演示程序的相關(guān)宏 */
#define RECE_BUF_LEN? ? ? ? ? ? ? ? ? ? ? ? ? 536? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 接收緩沖區(qū)的大小 */
/* CH57xNET庫TCP的MSS長度為536字節(jié),即一個TCP包里的數(shù)據(jù)部分最長為536字節(jié) */
/* TCP協(xié)議棧采用滑動窗口進行流控,窗口最大值為socket的接收緩沖區(qū)長度。在設(shè)定 */
/* RX_QUEUE_ENTRIES時要考慮MSS和窗口之間的關(guān)系,例如窗口值為4*MSS,則遠端一次會發(fā)送 */
/* 4個TCP包,如果RX_QUEUE_ENTRIES小于4,則必然會導(dǎo)致數(shù)據(jù)包丟失,從而導(dǎo)致通訊效率降低 */
/* 建議RX_QUEUE_ENTRIES要大于( 窗口/MSS ),如果多個socket同時進行大批量發(fā)送數(shù)據(jù),則 */?
/* 建議RX_QUEUE_ENTRIES要大于(( 窗口/MSS )*socket個數(shù)) 在多個socket同時進行大批數(shù)據(jù)收發(fā)時 */
/* 為了節(jié)約RAM,請將接收緩沖區(qū)的長度設(shè)置為MSS */
/* CH579相關(guān)定義 */
UINT8 MACAddr[6] = {0x84,0xc2,0xe4,0x02,0x03,0x04};? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* CH579MAC地址 */
UINT8 IPAddr[4] = {192,168,1,200};? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* CH579IP地址 */
UINT8 GWIPAddr[4] = {192,168,1,1};? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* CH579網(wǎng)關(guān) */
UINT8 IPMask[4] = {255,255,255,0};? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* CH579子網(wǎng)掩碼 */
//UINT8 ServerIP[4] = {183,11,220,164};
UINT8 ServerIP[4] = {192,168,10,3};
/* 網(wǎng)口燈定義 PB口低十六位有效 */
UINT16 CH57xNET_LEDCONN=0x0010;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 連接指示燈 PB4 */
UINT16 CH57xNET_LEDDATA=0x0080;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 通訊指示燈 PB7 */?
UINT8 SocketId;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 保存socket索引,可以不用定義 */
UINT8 SocketRecvBuf[RECE_BUF_LEN];? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* socket接收緩沖區(qū) */
UINT8 MyBuf[RECE_BUF_LEN];? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 定義一個臨時緩沖區(qū) */
BOOL TCP_Connect_Status = FALSE;
void ETH_Task(void *pdata);
static TimerHandle_t ETH_Timer = NULL;
void ETH_IRQHandler( void )? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 以太網(wǎng)中斷 */
{
CH57xNET_ETHIsr();? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 以太網(wǎng)中斷中斷服務(wù)函數(shù) */
}
void ETH_Timer_callback(void *pdata)
{
? (void)pdata;
? CH57xNET_TimeIsr(CH57xNETTIMEPERIOD);
}
/*******************************************************************************
* Function Name? : CH57xNET_CreatTcpSocket
* Description? ? : 創(chuàng)建TCP Client socket
* Input? ? ? ? ? : None
* Output? ? ? ? ?: None
* Return? ? ? ? ?: None
*******************************************************************************/
void CH57xNET_CreatTcpSocket(char* ip,int port)
{
? ?UINT8 ret;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ?SOCK_INF TmpSocketInf;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 創(chuàng)建臨時socket變量 */
? ?memset((void *)&TmpSocketInf,0,sizeof(SOCK_INF));? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 庫內(nèi)部會將此變量復(fù)制,所以最好將臨時變量先全部清零 */
? ?memcpy((void *)TmpSocketInf.IPAddr,ip,4);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 設(shè)置目的IP地址 */
? ?
? ?TmpSocketInf.DesPort = port;? ? ? ? ? ? ? ? ? ? ?
? ?TmpSocketInf.SourPort = 2000;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 設(shè)置源端口 */
? ?TmpSocketInf.ProtoType = PROTO_TYPE_TCP;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 設(shè)置socekt類型 */
? ?TmpSocketInf.RecvStartPoint = (UINT32)SocketRecvBuf;? ? ? ? ? ? ? ? ? ? ? ? ?/* 設(shè)置接收緩沖區(qū)的接收緩沖區(qū) */
? ?TmpSocketInf.RecvBufLen = RECE_BUF_LEN ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 設(shè)置接收緩沖區(qū)的接收長度 */
? ?ret = CH57xNET_SocketCreat(&SocketId,&TmpSocketInf);? ? ? ? ? ? ? ? ? ? ? ? ?/* 創(chuàng)建socket,將返回的socket索引保存在SocketId中 */
? ?APP_DEBUG("CH57xNET_SocketCreat:%s",(ret == CH57xNET_ERR_SUCCESS)?"OK":"ERROR");
#ifdef? KEEPLIVE_ENABLE
? ?//CH57xNET_SocketSetKeepLive( SocketId, 1 );? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 開啟socket的KEEPLIVE功能(V06版本支持) */
#endif
? ?ret = CH57xNET_SocketConnect(SocketId);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* TCP連接 */
? ?APP_DEBUG("CH57xNET_SocketConnect:%s",(ret == CH57xNET_ERR_SUCCESS)?"OK":"ERROR");? ? ? ? ? ??
? ?//ret = CH57xNET_SetSocketTTL( SocketId,128 );
? ?//APP_DEBUG("CH57xNET_SetSocketTTL:%s",(ret == CH57xNET_ERR_SUCCESS)?"OK":"ERROR");?
}
/*******************************************************************************
* Function Name? : CH57xNET_HandleSockInt
* Description? ? : Socket中斷處理函數(shù)
* Input? ? ? ? ? : sockeid? socket索引
*? ? ? ? ? ? ? ? :initstat 中斷狀態(tài)
* Output? ? ? ? ?: None
* Return? ? ? ? ?: None
*******************************************************************************/
void CH57xNET_HandleSockInt(UINT8 sockeid,UINT8 initstat)
{
? ? UINT32 len;
//? ? UINT32 totallen;
? ? UINT8 *p = MyBuf;
? ? if(initstat & SINT_STAT_RECV)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 接收中斷 */
? ? {
? ? ? ? len = CH57xNET_SocketRecvLen(sockeid,NULL);? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 查詢長度 */
? ? ? ? APP_DEBUG("Receive Len = %d",len);? ? ? ? ? ? ? ? ? ? ? ? ? ?
//? ? ? ? totallen = len;
? ? ? ? CH57xNET_SocketRecv(sockeid,MyBuf,&len);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 將接收緩沖區(qū)的數(shù)據(jù)讀到MyBuf中*/
? ? ? ? CH57xNET_SocketSend(sockeid,p,&len);?
//? ? ? ? while(1)
//? ? ? ? {
//? ? ? ? ? ?len = totallen;
//? ? ? ? ? ?CH57xNET_SocketSend(sockeid,p,&len);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 將MyBuf中的數(shù)據(jù)發(fā)送 */
//? ? ? ? ? ?totallen -= len;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 將總長度減去以及發(fā)送完畢的長度 */
//? ? ? ? ? ?p += len;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 將緩沖區(qū)指針偏移*/
//? ? ? ? ? ?if(totallen)continue;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 如果數(shù)據(jù)未發(fā)送完畢,則繼續(xù)發(fā)送*/
//? ? ? ? ? ?break;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 發(fā)送完畢,退出 */
//? ? ? ? }
? ? }
? ? if(initstat & SINT_STAT_CONNECT)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* TCP連接中斷 */
? ? {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 產(chǎn)生此中斷表示TCP已經(jīng)連接,可以進行收發(fā)數(shù)據(jù) */
? ? ? ? APP_DEBUG("TCP Connect Success");? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? }
? ? if(initstat & SINT_STAT_DISCONNECT)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* TCP斷開中斷 */
? ? {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 產(chǎn)生此中斷,CH579庫內(nèi)部會將此socket清除,置為關(guān)閉*/
? ? ? ? APP_DEBUG("TCP Disconnect:%d",SocketId);
? ? ? ? TCP_Connect_Status = TRUE;
? ? }
? ? if(initstat & SINT_STAT_TIM_OUT)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* TCP超時中斷 */
? ? {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 產(chǎn)生此中斷,CH579庫內(nèi)部會將此socket清除,置為關(guān)閉*/
? ? ? ? APP_DEBUG("TCP Connect Timout");??
? ? ? ? TCP_Connect_Status = TRUE;
? ? }
}
UINT8 CH57xNET_DHCPCallBack(UINT8 status,void *arg)
{
? ?UINT8 *p;
? ?
? ?if(!status){? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 成功*/
? ? ? ?p = arg;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 產(chǎn)生此中斷,CH57xNET庫內(nèi)部會將此socket清除,置為關(guān)閉*/
? ? ? ?APP_DEBUG("DHCP Success");
? ? ? ?memcpy(IPAddr,p,4);
? ? ? ?memcpy(GWIPAddr,&p[4],4);
? ? ? ?memcpy(IPMask,&p[8],4);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 產(chǎn)生此中斷,CH57xNET庫內(nèi)部會將此socket清除,置為關(guān)閉*/
? ? ? ?APP_DEBUG("IPAddr = %d.%d.%d.%d",(UINT16)IPAddr[0],(UINT16)IPAddr[1],
? ? ? ? ? ? ? (UINT16)IPAddr[2],(UINT16)IPAddr[3]);
? ? ? ?APP_DEBUG("GWIPAddr = %d.%d.%d.%d",(UINT16)GWIPAddr[0],(UINT16)GWIPAddr[1],
? ? ? ? ? ? ? (UINT16)GWIPAddr[2],(UINT16)GWIPAddr[3]);
? ? ? ?APP_DEBUG("IPAddr = %d.%d.%d.%d",(UINT16)IPMask[0],(UINT16)IPMask[1],
? ? ? ? ? ? ? (UINT16)IPMask[2],(UINT16)IPMask[3]);
? ? ? ?APP_DEBUG("DNS1: %d.%d.%d.%d",p[12],p[13],p[14],p[15]);
? ? ? ?APP_DEBUG("DNS2: %d.%d.%d.%d",p[16],p[17],p[18],p[19]);
? ? ? ?TCP_Connect_Status = TRUE;
? ?}
? ?else{?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 產(chǎn)生此中斷,CH57xNET庫內(nèi)部會將此socket清除,置為關(guān)閉*/
? ? ? APP_DEBUG("DHCP Fail %02x\n",status);
? ?}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ?return 0;
}
/*******************************************************************************
* Function Name? : CH57xNET_HandleGloableInt
* Description? ? : 全局中斷處理函數(shù)
* Input? ? ? ? ? : None
* Output? ? ? ? ?: None
* Return? ? ? ? ?: None
*******************************************************************************/
void CH57xNET_HandleGlobalInt(void)
{
? ? UINT8 initstat;
? ? UINT8 i;
? ? UINT8 socketinit;
? ? initstat = CH57xNET_GetGlobalInt();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 讀全局中斷狀態(tài)并清除 */
? ? if(initstat & GINT_STAT_UNREACH)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 不可達中斷 */
? ? {
? ? ? ? APP_DEBUG("UnreachCode :%d",CH57xInf.UnreachCode);? ? ? ? ? ? ? ? ? ? ? ?/* 查看不可達代碼 */
? ? ? ? APP_DEBUG("UnreachProto :%d",CH57xInf.UnreachProto);? ? ? ? ? ? ? ? ? ? ?/* 查看不可達協(xié)議類型 */
? ? ? ? APP_DEBUG("UnreachPort :%d",CH57xInf.UnreachPort);? ? ? ? ? ? ? ? ? ? ? ?/* 查詢不可達端口 */? ? ? ?
? ? }
? ?if(initstat & GINT_STAT_IP_CONFLI)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* IP沖突中斷 */
? ?{
? ?
? ?}
? ?if(initstat & GINT_STAT_PHY_CHANGE)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* PHY改變中斷 */
? ?{
? ? ? ?i = CH57xNET_GetPHYStatus();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 獲取PHY狀態(tài) */
? ? ? ?if(i > 1)
? ? ? ?{
? ? ? ? ? CH57xNET_DHCPStart(CH57xNET_DHCPCallBack);
? ? ? ?}
? ? ? ?else
? ? ? ?{
? ? ? ? ? CH57xNET_DHCPStop();
? ? ? ?}
? ? ? ?APP_DEBUG("GINT_STAT_PHY_CHANGE %02x",i);
? ?}
? ?if(initstat & GINT_STAT_SOCKET)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* Socket中斷 */
? ?{
? ? ? ?for(i = 0; i < CH57xNET_MAX_SOCKET_NUM; i ++)? ? ? ? ? ? ? ? ? ? ?
? ? ? ?{
? ? ? ? ? ?socketinit = CH57xNET_GetSocketInt(i);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 讀socket中斷并清零 */
? ? ? ? ? ?if(socketinit)
? ? ? ? ? ?{
? ? ? ? ? ? ?CH57xNET_HandleSockInt(i,socketinit);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 如果有中斷則清零 */
? ? ? ? ? ?}
? ? ? ?}? ??
? ?}
}
void net_initkeeplive(void)
{
? ? struct _KEEP_CFG? klcfg;
? ? klcfg.KLIdle = 10000;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 空閑 */
? ? klcfg.KLIntvl = 10000;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 間隔 */
? ? klcfg.KLCount = 2;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 次數(shù) */
? ? CH57xNET_ConfigKeepLive(&klcfg);
}
void Bsp_ETH_init(void)
{
? char ret = 0;
? struct _CH57x_CFG cfg;
? if(CH57xNET_GetVer() != CH57xNET_LIB_VER)return;? ? ? ? ? ? ? ? ? ? ? ?/* 獲取庫的版本號,檢查是否和頭文件一致 */
? CH57xNETConfig = LIB_CFG_VALUE;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 將配置信息傳遞給庫的配置變量 */
? cfg.RxBufSize = RX_BUF_SIZE;?
? cfg.TCPMss? ?= CH57xNET_TCP_MSS;
? cfg.HeapSize = CH57x_MEM_HEAP_SIZE;
? cfg.ARPTableNum = CH57xNET_NUM_ARP_TABLE;
? cfg.MiscConfig0 = CH57xNET_MISC_CONFIG0;
? CH57xNET_ConfigLIB(&cfg);
??
? ret = CH57xNET_Init(IPAddr,GWIPAddr,IPMask,MACAddr);
? net_initkeeplive();
? APP_DEBUG("CH57xNET_Init:%s",(ret == CH57xNET_ERR_SUCCESS)?"OK":"ERROR");??
? if(ret == CH57xNET_ERR_SUCCESS)
? {
? ? ETH_Timer = xTimerCreate("ETH_Timer",10,pdTRUE,(void*)0,ETH_Timer_callback);
? ? if(ETH_Timer != NULL)
? ? {
? ? ? xTimerStart(ETH_Timer,10);
? ? }
? ? xTaskCreate(ETH_Task, "ETH_Task", 1024, NULL, 1, NULL );
? }
? NVIC_EnableIRQ(ETH_IRQn);
}
void ETH_Task(void *pdata)
{
? (void)pdata;
? vTaskDelay(100);
? while(1)
? {
? ? CH57xNET_MainTask();
? ? if(CH57xNET_QueryGlobalInt())
? ? {
? ? ? CH57xNET_HandleGlobalInt();
? ? }
? ? if(TCP_Connect_Status == TRUE)
? ? {
? ? ? TCP_Connect_Status = FALSE;
? ? ? CH57xNET_CreatTcpSocket((char*)ServerIP,8080);?
? ? }
? ? vTaskDelay(1);
? }
}