問題描述
使用stm32的以太網(wǎng)嵌入lwip網(wǎng)絡(luò)協(xié)議和pc電腦通訊,主要傳輸升級數(shù)據(jù),涉及到的是fpga數(shù)據(jù),所以量有點(diǎn)大。
發(fā)現(xiàn)一個問題,每次傳輸只能傳輸12包,到12包之后就沒有收到數(shù)據(jù)包了,這個現(xiàn)象是固定的,也就是根本進(jìn)不了回調(diào)函數(shù)如下函數(shù)
/******* 這是一個回調(diào)函數(shù),當(dāng)有UDP數(shù)據(jù)收到時會被調(diào)用********/
// addr:筆記本的IP地址(存放向開發(fā)板發(fā)送數(shù)據(jù)的PC的IP地址)
// port:筆記本的端口號(遠(yuǎn)端端口號)
void Udp_Test_Receive(void *arg,struct udp_pcb *pcb,struct pbuf *p,struct ip_addr *addr,u16_t port)
{}
很是疼痛,網(wǎng)絡(luò)菜鳥,不斷找代碼的Bug,解決問題可就是解決不了。
經(jīng)過比較發(fā)現(xiàn),在回調(diào)函數(shù)里忘記釋放指針了。
比較標(biāo)準(zhǔn)的回調(diào)函數(shù)如下
void Udp_Test_Receive(void *arg,struct udp_pcb *pcb,struct pbuf *p,struct ip_addr *addr,u16_t port)
{
//struct ip_addr destAddr = *addr;
//unsigned char g_tData[256];
struct pbuf *p1;
unsigned char *nptr; //指向UDP接收緩存區(qū)的指針
short len; //接收到的UDP數(shù)據(jù)包長度
unsigned short LenUpdata = 0; //升級數(shù)據(jù)包的有效數(shù)據(jù)長度
if(p != NULL)
{
len = p->len;
len = len;
nptr = (unsigned char*)p->payload;
/*************************add your code here***************/
/*******************************************************/
/**************************************************************************/
pbuf_free(p);
}
}
【必讀】版權(quán)免責(zé)聲明
1、本主題所有言論和內(nèi)容純屬會員個人意見,與本論壇立場無關(guān)。2、本站對所發(fā)內(nèi)容真實(shí)性、客觀性、可用性不做任何保證也不負(fù)任何責(zé)任,網(wǎng)友之間僅出于學(xué)習(xí)目的進(jìn)行交流。3、對提供的數(shù)字內(nèi)容不擁有任何權(quán)利,其版權(quán)歸原著者擁有。請勿將該數(shù)字內(nèi)容進(jìn)行商業(yè)交易、轉(zhuǎn)載等行為,該內(nèi)容只為學(xué)習(xí)所提供,使用后發(fā)生的一切問題與本站無關(guān)。 4、本網(wǎng)站不保證本站提供的下載資源的準(zhǔn)確性、安全性和完整性;同時本網(wǎng)站也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網(wǎng)站所有軟件和資料均為網(wǎng)友推薦收集整理而來,僅供學(xué)習(xí)用途使用,請務(wù)必下載后兩小時內(nèi)刪除,禁止商用。6、如有侵犯你版權(quán)的,請及時聯(lián)系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|