找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2512|回复: 3
收起左侧

STM32107_LAN8720网口程序lwip

[复制链接]
ID:256792 发表于 2021-4-23 10:50 | 显示全部楼层 |阅读模式
网上的关于这个组合的程序非常少,特地拿出来分享下面是部分代码
  1. /*********************************************************************************
  2. **********************************************************************************
  3. * 文件名称: TCP_SERVER.c                                                         *
  4. * 文件简述:TCP服务器运用                                                        *
  5. * 创建日期: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数据接收和发送
  14. * 入口参数:
  15. * 返回参数:
  16. * 说    明:这是一个回调函数,当一个TCP段到达这个连接时会被调用      
  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);    //获取数据长度 tot_len:tcp数据块的长度
  25.                 while(p_temp != NULL)        
  26.                 {                                
  27.                         tcp_write(pcb,p_temp->payload,p_temp->len,TCP_WRITE_FLAG_COPY);         // payload为TCP数据块的起始位置      
  28.                         tcp_output(pcb);
  29.                         p_temp = p_temp->next;
  30.                 }               
  31.         }
  32.         else
  33.         {
  34.                 tcp_close(pcb);         // 作为TCP服务器不应主动关闭这个连接
  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. * 功    能:回调函数
  43. * 入口参数:
  44. * 返回参数:
  45. * 说    明:这是一个回调函数,当一个连接已经接受时会被调用
  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);                 /* 设置回调函数优先级,当存在几个连接时特别重要,此函数必须调用*/
  50.         tcp_recv(pcb,tcp_server_recv);                                 /* 设置TCP段到时的回调函数 */
  51.         err = ERR_OK;
  52.         return err;
  53. }

  54. /****************************************************************************
  55. * 名    称: TCP_server_init(void)
  56. * 功    能:完成TCP服务器的初始化,主要是使得TCP通讯快进入监听状态
  57. * 入口参数:
  58. * 返回参数:
  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服务器)  
  66.         pcb = tcp_listen(pcb);                                                                   // 进入监听状态  
  67.         tcp_accept(pcb,tcp_server_accept);                               // 设置有连接请求时的回调函数  
  68. }
复制代码

全部代码51hei下载地址:
STM32F107-LWIP.7z (7.2 MB, 下载次数: 68)

评分

参与人数 2黑币 +55 收起 理由
清魂默 + 5 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:328014 发表于 2021-4-29 23:27 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:691028 发表于 2022-4-19 09:02 | 显示全部楼层
其中没有找到LAN8720的驱动,不知道是不是我看漏了
回复

使用道具 举报

ID:640695 发表于 2022-12-6 16:13 | 显示全部楼层
能求一个这部分原理图吗 我都弄一礼拜了 一直Ping不通 (lan8720外接20MHZ   RMII)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表