找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3385|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

STM32107_LAN8720網(wǎng)口程序lwip

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:256792 發(fā)表于 2021-4-23 10:50 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
網(wǎng)上的關(guān)于這個(gè)組合的程序非常少,特地拿出來分享下面是部分代碼
  1. /*********************************************************************************
  2. **********************************************************************************
  3. * 文件名稱: TCP_SERVER.c                                                         *
  4. * 文件簡述:TCP服務(wù)器運(yùn)用                                                        *
  5. * 創(chuàng)建日期:2018.3                                                           *
  6. * 版    本:V1.0                                                                 *
  7. * 作    者:Clever                                                               *
  8. * 說    明:                                                                     *
  9. **********************************************************************************
  10. *********************************************************************************/


  11. /****************************************************************************
  12. * 名    稱: tcp_server_recv(void *arg, struct tcp_pcb *pcb,struct pbuf *p,err_t err)
  13. * 功    能:TCP數(shù)據(jù)接收和發(fā)送
  14. * 入口參數(shù):
  15. * 返回參數(shù):
  16. * 說    明:這是一個(gè)回調(diào)函數(shù),當(dāng)一個(gè)TCP段到達(dá)這個(gè)連接時(shí)會被調(diào)用      
  17. ****************************************************************************/        
  18. static err_t tcp_server_recv(void *arg, struct tcp_pcb *pcb,struct pbuf *p,err_t err)
  19. {
  20.         struct pbuf *p_temp = p;
  21.         
  22.         if(p_temp != NULL)
  23.         {        
  24.                 tcp_recved(pcb, p_temp->tot_len);    //獲取數(shù)據(jù)長度 tot_len:tcp數(shù)據(jù)塊的長度
  25.                 while(p_temp != NULL)        
  26.                 {                                
  27.                         tcp_write(pcb,p_temp->payload,p_temp->len,TCP_WRITE_FLAG_COPY);         // payload為TCP數(shù)據(jù)塊的起始位置      
  28.                         tcp_output(pcb);
  29.                         p_temp = p_temp->next;
  30.                 }               
  31.         }
  32.         else
  33.         {
  34.                 tcp_close(pcb);         // 作為TCP服務(wù)器不應(yīng)主動關(guān)閉這個(gè)連接
  35.         }
  36.         pbuf_free(p);                  // 釋放該TCP段  
  37.         err = ERR_OK;
  38.         return err;
  39. }

  40. /****************************************************************************
  41. * 名    稱: tcp_server_accept(void *arg, struct tcp_pcb *pcb,struct pbuf *p,err_t err)
  42. * 功    能:回調(diào)函數(shù)
  43. * 入口參數(shù):
  44. * 返回參數(shù):
  45. * 說    明:這是一個(gè)回調(diào)函數(shù),當(dāng)一個(gè)連接已經(jīng)接受時(shí)會被調(diào)用
  46. ****************************************************************************/        
  47. static err_t tcp_server_accept(void *arg,struct tcp_pcb *pcb,err_t err)
  48. {
  49.         tcp_setprio(pcb, TCP_PRIO_MIN);                 /* 設(shè)置回調(diào)函數(shù)優(yōu)先級,當(dāng)存在幾個(gè)連接時(shí)特別重要,此函數(shù)必須調(diào)用*/
  50.         tcp_recv(pcb,tcp_server_recv);                                 /* 設(shè)置TCP段到時(shí)的回調(diào)函數(shù) */
  51.         err = ERR_OK;
  52.         return err;
  53. }

  54. /****************************************************************************
  55. * 名    稱: TCP_server_init(void)
  56. * 功    能:完成TCP服務(wù)器的初始化,主要是使得TCP通訊快進(jìn)入監(jiān)聽狀態(tài)
  57. * 入口參數(shù):
  58. * 返回參數(shù):
  59. * 說    明:
  60. ****************************************************************************/        
  61. void TCP_server_init(void)
  62. {
  63.         struct tcp_pcb *pcb;

  64.         pcb = tcp_new();                                                                               // 建立通信的TCP控制塊(pcb)
  65.         tcp_bind(pcb,IP_ADDR_ANY,TCP_Server_PORT);           // 綁定本地IP地址和端口號(作為tcp服務(wù)器)  
  66.         pcb = tcp_listen(pcb);                                                                   // 進(jìn)入監(jiān)聽狀態(tài)  
  67.         tcp_accept(pcb,tcp_server_accept);                               // 設(shè)置有連接請求時(shí)的回調(diào)函數(shù)  
  68. }
復(fù)制代碼

全部代碼51hei下載地址:
STM32F107-LWIP.7z (7.2 MB, 下載次數(shù): 71)

評分

參與人數(shù) 2黑幣 +55 收起 理由
清魂默 + 5 贊一個(gè)!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:328014 發(fā)表于 2021-4-29 23:27 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:691028 發(fā)表于 2022-4-19 09:02 | 只看該作者
其中沒有找到LAN8720的驅(qū)動,不知道是不是我看漏了
回復(fù)

使用道具 舉報(bào)

地板
ID:640695 發(fā)表于 2022-12-6 16:13 | 只看該作者
能求一個(gè)這部分原理圖嗎 我都弄一禮拜了 一直Ping不通 (lan8720外接20MHZ   RMII)
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表