标题: W5500-TCP client成功 stm32 IAR工程源码 [打印本页]

作者: shenhongxia    时间: 2018-9-19 21:05
标题: W5500-TCP client成功 stm32 IAR工程源码
W5500的客户端配置


stm32单片机源程序如下:
  1. #include "mcu_init.h"
  2. #include "config.h"
  3. #include "device.h"
  4. #include "spi2.h"
  5. #include "socket.h"
  6. #include "w5500.h"
  7. #include "at24c16.h"
  8. #include "util.h"

  9. #include <stdio.h>

  10. extern uint8 txsize[];
  11. extern uint8 rxsize[];

  12. uint8 buffer[2048];/*定义一个2KB的缓存*/

  13. void main()
  14. {
  15.   uint8 pc_ip[4]={192,168,1,101};/*配置服务器的IP地址*/
  16.   uint16 anyport=3000;/*定义一个任意端口并初始化*/
  17.   uint16 len=0;
  18.    
  19.   uint8 mac[6]={0x00,0x08,0xdc,0x11,0x11,0x11};/*定义Mac变量*/
  20.   uint8 lip[4]={192,168,1,114};/*定义lp变量*/
  21.   uint8 sub[4]={255,255,255,0};/*定义subnet变量*/
  22.   uint8 gw[4]={192,168,1,1};/*定义gateway变量*/
  23.   uint8 ip[4];
  24.   
  25.   RCC_Configuration(); /* 配置单片机系统时钟*/
  26.   GPIO_Configuration();/* 配置GPIO*/
  27.   NVIC_Configuration();/* 配置嵌套中断向量*/
  28.   
  29.   Systick_Init(72);/* 初始化Systick工作时钟*/
  30.   USART1_Init(); /*初始化串口通信:115200@8-n-1*/
  31.   at24c16_init();/*初始化eeprom*/
  32.   printf("W5500 EVB initialization over.\r\n");
  33.   
  34.   Reset_W5500();/*硬重启W5500*/
  35.   WIZ_SPI_Init();/*初始化SPI接口*/
  36.   printf("W5500 initialized!\r\n");  

  37.   setSHAR(mac);/*配置Mac地址*/
  38.   setSUBR(sub);/*配置子网掩码*/
  39.   setGAR(gw);/*配置默认网关*/
  40.   setSIPR(lip);/*配置Ip地址*/
  41.   
  42.     //Init. TX & RX Memory size of w5500
  43.   sysinit(txsize, rxsize); /*初始化8个socket*/
  44.   
  45.   setRTR(2000);/*设置溢出时间值*/
  46.   setRCR(3);/*设置最大重新发送次数*/
  47.   

  48.   getSIPR (ip);
  49.   printf("IP : %d.%d.%d.%d\r\n", ip[0],ip[1],ip[2],ip[3]);
  50.   getSUBR(ip);
  51.   printf("SN : %d.%d.%d.%d\r\n", ip[0],ip[1],ip[2],ip[3]);
  52.   getGAR(ip);
  53.   printf("GW : %d.%d.%d.%d\r\n", ip[0],ip[1],ip[2],ip[3]);
  54.   printf("Network is ready.\r\n");
  55.   
  56.   while(1)
  57.   {
  58.     switch(getSn_SR(0))/*获取socket0的状态*/
  59.     {
  60.        case SOCK_INIT:/*socket初始化完成*/
  61.          connect(0, pc_ip ,6001);/*在TCP模式下向服务器发送连接请求*/
  62.          break;
  63.        case SOCK_ESTABLISHED:/*socket连接建立*/
  64.          if(getSn_IR(0) & Sn_IR_CON)
  65.          {
  66.             setSn_IR(0, Sn_IR_CON);/*Sn_IR的第0位置1*/
  67.           }
  68.         
  69.          len=getSn_RX_RSR(0);/*len为已接收数据的大小*/
  70.          if(len>0)
  71.          {
  72.             recv(0,buffer,len);/*W5500接收来自Sever的数据*/
  73.             send(0,buffer,len);/*W5500向Server发送数据*/
  74.           }
  75.          break;
  76.        case SOCK_CLOSE_WAIT:/*socket等待关闭状态*/
  77.          break;
  78.        case SOCK_CLOSED:/*socket关闭*/
  79.          socket(0,Sn_MR_TCP,anyport++,Sn_MR_ND);/*打开socket0的一个端口*/
  80.          break;
  81.      }
  82.   }
  83. }
复制代码

所有资料51hei提供下载:
W5500_TCPC.rar (814.79 KB, 下载次数: 58)



作者: 1512001334@qq.c    时间: 2020-5-7 09:58
帮组很大,谢谢作者




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1