硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4353|回复: 0
收起左侧

[例程下载] 基于F407的LwIP裸机TCP通信案例

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2020-6-30 17:59:07 | 显示全部楼层 |阅读模式

F4-015b_TCP客户端例程(DM9161+LwIP上传数据).rar (4.83 MB, 下载次数: 281)

操作步骤:

  1. /*
  2. *********************************************************************************************************
  3. *
  4. *        模块名称 : 主程序模块。
  5. *        文件名称 : main.c
  6. *        版    本 : V1.0
  7. *        说    明 : 本实验主要是实现实现TCP客户端的功能。
  8. *              实验目的:
  9. *                1. 本期例子主要实现TCP客户端的功能。
  10. *              实验内容:
  11. *                1. 初始化以太网驱动和LWIP, TCP发送数据包大小是1400字节,并在
  12. *                   主函数轮询lwip_pro程序。
  13. *                2. 在TCP轮询的回调函数tcp_poll里面执行LED1闪烁,方便观察现象。
  14. *                2. 按键K1按下,V5板子向TCP服务器发送256字节数据。
  15. *                3. 按键K2按下,V5板子向TCP服务器发送628字节数据。
  16. *                4. 按键K3按下,V5板子向TCP服务器发送1400字节数据
  17. *                5. 摇杆向上按下,V5板子向TCP服务器发送20MB字节数据
  18. *              实验步骤:
  19. *                1. 设置PC机的IP地址为192.168.1.10,掩码和网关可不用设置。以保证
  20. *                   开发板和PC机在同一个网段。
  21. *                2. 找一根网线连接开发板和PC机,并在网址http://www.armbbs.cn/forum.php?mod=viewthread&tid=1568
  22. *                   下载TCP UDP调试工具。
  23. *                3. 先讲开发板上电,下载本程序到板子上面,然后打开调试软件设置为服务器模式,软件
  24. *                   会自动的识别刚才设置的IP为TCP服务器IP。
  25. *                4. 然后复位开发板,串口1会打印相应的信息:
  26. *                   PHY_BSR = 786D, Phy Link Ok
  27. *                   Phy Address = 1, Read ID = 0181, DM9161 Detected Ok!
  28. *                   > Ethernet Init  Success 表示初始化成功
  29. *                5. 然后通过按键向TCP发送数据即可,通过TCP软件可以看数据上传的大小,比较下是否
  30. *                   是指定的大小,按键按下后串口1会打印这次需要发送数据包的次数和一次小于1400字
  31. *                   节的数据包。
  32. *                    按键K1按下 s_ulTraNum = 0, s_usTraRemainder = 256     发送256字节
  33. *                    按键K1按下 s_ulTraNum = 0, s_usTraRemainder = 628     发送628字节
  34. *                    按键K1按下 s_ulTraNum = 1, s_usTraRemainder = 0       发送1400字节
  35. *                    按键K1按下 s_ulTraNum = 14979, s_usTraRemainder = 920 发送20MB字节
  36. *                6. 将开发板的网线拔掉后会打印信息:Network Cable is unplugged,  重新插上后可以继续工作。
  37. *
  38. *        修改记录 :
  39. *                版本号  日期        作者    说明
  40. *                v1.0    2013-12-24 armfly   首发
  41. *
  42. *        Copyright (C), 2013-2014, 安富莱电子 www.armfly.com
  43. *
  44. *************************************
复制代码




更加需要修改目标端的IP地址和本地的IP地址,网关等,全部都在文件main_lwip.h


  1. /*
  2. *********************************************************************************************************
  3. *
  4. *        模块名称 : LWIP头文件
  5. *        文件名称 : main_lwip.h
  6. *        版    本 : V1.0
  7. *        说    明 : 用设置本地IP,网关,掩码等
  8. *
  9. *        Copyright (C), 2013-2014, 安富莱电子 www.armfly.com
  10. *
  11. *********************************************************************************************************
  12. */
  13. #ifndef __MAIN_LWIP_H
  14. #define __MAIN_LWIP_H

  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif

  18. /* 头文件 ------------------------------------------------------------------*/
  19. #include "stm32f4xx.h"
  20. #include "bsp_eth.h"
  21. #include "stm32f4x7_eth.h"
  22.          
  23. #include <stdio.h>
  24. #include "stdlib.h"
  25. #include "string.h"

  26. #include "lwip/mem.h"
  27. #include "lwip/memp.h"
  28. #include "lwip/tcp.h"
  29. #include "lwip/udp.h"
  30. #include "lwip/dns.h"
  31. #include "lwip/api.h"
  32. #include "lwip/dns.h"
  33. #include "lwip/dhcp.h"
  34. #include "lwip/debug.h"
  35. #include "lwip/stats.h"

  36. #include "netif/etharp.h"
  37. #include "ethernetif.h"
  38. #include "netconf.h"

  39. //#define USE_DHCP       /* 使能 DHCP */
  40. #define SERIAL_DEBUG   /* 用于使能串口调试 */

  41. /* TCP客户端要访问的目标IP */
  42. #define DEST_IP_ADDR0   192
  43. #define DEST_IP_ADDR1   168
  44. #define DEST_IP_ADDR2   1
  45. #define DEST_IP_ADDR3   10

  46. /* 目标端口号 */
  47. #define DEST_PORT       1001

  48. /* MAC 地址: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */
  49. #define MAC_ADDR0   2
  50. #define MAC_ADDR1   0
  51. #define MAC_ADDR2   0
  52. #define MAC_ADDR3   0
  53. #define MAC_ADDR4   0
  54. #define MAC_ADDR5   0

  55. /*静态IP地址: IP_ADDR0.IP_ADDR1.IP_ADDR2.IP_ADDR3 */
  56. #define IP_ADDR0   192
  57. #define IP_ADDR1   168
  58. #define IP_ADDR2   1
  59. #define IP_ADDR3   240
  60.    
  61. /* 子网掩码 */
  62. #define NETMASK_ADDR0   255
  63. #define NETMASK_ADDR1   255
  64. #define NETMASK_ADDR2   255
  65. #define NETMASK_ADDR3   0

  66. /* 默认网关 */
  67. #define GW_ADDR0   192
  68. #define GW_ADDR1   168
  69. #define GW_ADDR2   1
  70. #define GW_ADDR3   1  

  71. /* 在main.c文件有定义 */
  72. extern uint8_t g_ucTCPCMD;
  73. extern uint32_t g_ulTCPTraTolSize;

  74. /* TCP发送数据缓存 在文件tcp_echoclient.h */
  75. extern uint8_t data[1400];

  76. #ifdef __cplusplus
  77. }
  78. #endif

  79. #endif /* __MAIN_LWIP_H */

  80. /***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/
复制代码






回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 09:13 , Processed in 0.265461 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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