华大HC32F460 TCP Server实验

目录

1.实验目标

2.实验准备

3.主流程图

4.驱动代码

5.实验步骤

1.实验目标

        本实验使用W5500服务器功能,通过串口实现与本地客户端透传数据。

2.实验准备

        硬件搭建:ZW-HC32F460-BZ标准版开发板1套

        软件搭建:MDK5.22

3.主流程图

 4.驱动代码

【W5500 tcp server函数】

该函数需要W5500在TCP模式下,才能当服务器使用。

void do_tcp_server(void){ uint16 len=0; switch(getSn_SR(SOCK_TCPS))                             // 获取socket的状态{case SOCK_CLOSED:                                     // socket处于关闭状态socket(SOCK_TCPS ,Sn_MR_TCP,local_port,Sn_MR_ND);   // 打开socketbreak;    case SOCK_INIT:                                       // socket已初始化状态listen(SOCK_TCPS);                                  // socket建立监听break;case SOCK_ESTABLISHED:                                // socket处于连接建立状态if(getSn_IR(SOCK_TCPS) & Sn_IR_CON){setSn_IR(SOCK_TCPS, Sn_IR_CON);                   // 清除接收中断标志位}len=getSn_RX_RSR(SOCK_TCPS);                        // 定义len为已接收数据的长度if(len>0){recv(SOCK_TCPS,tcp_server_buff,len);              // 接收来自Client的数据tcp_server_buff[len]=0x00;                        // 添加字符串结束符printf("%s\r\n",tcp_server_buff);send(SOCK_TCPS,tcp_server_buff,len);              // 向Client发送数据}break;case SOCK_CLOSE_WAIT:                                 // socket处于等待关闭状态disconnect(SOCK_TCPS);                              // 断开当前TCP连接close(SOCK_TCPS);                                   // 关闭当前所使用socketbreak;}}

     W5500作为服务器时,本机IP地址和端口号就是服务器的IP地址和端口号,如下所示:

/*定义默认IP信息*/uint8 local_ip[4]={192,168,1,25};                                      /*定义W5500默认IP地址*/uint8 subnet[4]={255,255,255,0};                                     /*定义W5500默认子网掩码*/uint8 gateway[4]={192,168,1,1};                                      /*定义W5500默认网关*/uint8 dns_server[4]={114,114,114,114};                           /*定义W5500默认DNS*/

5.实验步骤

【第一步:新建/配置工程】

       将DCHCP实验工程复制到实验目录下,将工程名改为W5500_Server,FWLibCfg.h文件中的配置与DCHCP实验一样。

【第二步:添加W5500模块应用驱动】

       将W5500_APP头文件和源复制到\实验41 TCP Server实验\Hardware\Peripheral路径下,同时将文件添加到工程中Hardware/Peripheral下。

【第三步:初始化编程】

1)添加相关头文件

     在main.c文件中添加。

#include "hc32_ddl.h"#include "w5500_conf.h"#include "w5500.h"#include "W5500_APP.h"

2)配置W5500的SPI引脚

     配置与实验39:DHCP实验一致。

3)相关函数初始化

     在main函数中初始化W5500相关函数

       HardwareInt();gpio_for_w5500_config();     //W5500 SPI接口reset 及中断引脚reset_w5500();                                          // w5500硬件复位PHY_check();              // 网线检测程序set_w5500_mac();          // 设置w5500MAC地址set_w5500_ip();                                         //配置W5500的IP地址socket_buf_init(txsize, rxsize);    // 初始化4个Socket的发送接收缓存大小printf("\r\n W5500为TCP Server,建立侦听。等待PC作为TCP Client建立连接。\r\n");printf(" TCP Server IP:%d.%d.%d.%d。\r\n",local_ip[0],local_ip[1],local_ip[2],local_ip[3]);printf(" TCP Server Port:%d。\r\n",local_port);printf(" 正常现象:连接成功,TCP Client发送数据给W5500,W5500将返回对应数据。\r\n");

【第四步:W5500做TCP服务器等待连接】

       使用do_tcp_server()函数在主循环中等待客户端连接。

       while(1){do_tcp_server();Ddl_Delay1ms(10);}

【第五步:下载验证】

       将电脑和HC32F460开发板连接到同一个路由器,处于同一局域网下,连接好硬件,编译下载运行该程序,查看串口助手收到信息是否与自己配置的信息一致。

       打开卓物物联网工具集合软件,选择网络工具类-TCP客户端,输入W5500服务器IP地址和端口号,连接即可。

       在客户端发送区输入字符串“test”,发送成功后,接收区也会收到字符串“test”。

       此时串口助手接受到字符串“test”。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/18402.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CopyOnWriteArrayList使用以及原理分析

文章目录 一、CopyOnWriteArrayList的简介二、CopyOnWriteArrayList类的继承关系1、Iterable接口:2、Collection接口:3、List接口:4、Cloneable接口:5、Serializable接口:6、RandomAccess接口: 三、CopyOnW…

Java 匿名对象

一、简介 1.1.含义 没有名字的对象 。以常规的创建对象的方法: AtomicInteger atomicInteger new AtomicInteger(100000);格式: 类名 变量名 new 类名(); 这样就完成了对象的创建。注意:()内可以无参数&#xff0c…

前端|项目实操流程|学成在线项目实操

参考视频:黑马程序员前端CSS3基础教程,前端必备基础 目录 📚案例准备工作 📚CSS属性书写顺序 🐇布局定位属性 🐇自身属性 📚页面布局整体思路 📚学成在线项目制作 &#x1f4…

DevOps(一)

DevOps 1. DevOps起源1.1 瀑布开发模型1.2 敏捷开发模型 2. DevOps到底是什么?3. DevOps与虚拟化、容器、微服务4. CI/CD是什么 ?4.1 CI 持续集成(Continuous Integration)4.2 CD 持续交付(Continuous Delivery&#x…

【Matlab】智能优化算法_亨利气体溶解度优化算法HGSO

【Matlab】智能优化算法_亨利气体溶解度优化算法HGSO 1.背景介绍2.数学模型2.1 亨利定律2.2 HGSO 3.文件结构4.伪代码5.详细代码及注释5.1 Create_Groups.m5.2 Evaluate.m5.3 fun_checkpoisions.m5.4 fun_getDefaultOptions.m5.5 HGSO.m5.6 main.m5.7 sumsqu.m5.8 update_posit…

微信小程序input的placeholder脱离文档流

今天进行真机调试时input的提示词 placeholder脱离了文档流&#xff0c;但是奇怪的是input框没有脱离文档流 如下图所示&#xff1a; 微信开发工具正常&#xff1a; 真机&#xff1a;不正常 脱离文档流 解决方法&#xff1a; <view clas…

【NeRF】相机的内外参是什么?单目相机是如何成像的?

文章目录 【NeRF】相机的内外参是什么&#xff1f;单目相机是如何成像的&#xff1f;1.相机外参2.相机内参 【NeRF】相机的内外参是什么&#xff1f;单目相机是如何成像的&#xff1f; 在做Nerf时对其中的一些原理感到困惑&#xff0c;因而把这些基础理论知识总结下来&#xff…

【工业机器人】用于轨迹规划和执行器分析的机械手和移动机器人模型(MatlabSimulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

1、vscode+cmake c++环境配置

文章目录 1、安装2、开发环境 关于vscode c环境的配置&#xff0c;应该有两种一种是vscodec/c插件&#xff0c;另一种是vscodecmake插件&#xff0c;第一种没太多用过&#xff0c;感觉就像python那样&#xff0c;要写相关配置文件&#xff0c;有自己的一套规则&#xff1b;另一…

【数据结构导论】第 6 章:查找

目录 一、基本概念 二、静态查找表 &#xff08;1&#xff09;顺序表上的查找 —— 顺序查找 ① 过程 ② 算法 ③ 算法分析 &#xff08;2&#xff09;有序表上的查找 —— 二分查找 ① 二分查找思想 ② 二分查找过程 ③ 二分查找算法 ④ 示例 ⑤ 算法分析 &#…

选读SQL经典实例笔记05_日期运算(下)

1. 两个日期之间相差的月份和年份 1.1. DB2 1.2. MySQL 1.3. sql select mnth, mnth/12from ( select (year(max_hd) - year(min_hd))*12 (month(max_hd) - month(min_hd)) as mnthfrom (select min(hiredate) as min_hd, max(hiredate) as max_hdfrom emp) x) y 1.4. Or…

ModaHub魔搭社区:向量数据库Zilliz Cloud的AUTOINDEX教程

目录 创建索引和向量搜索 总结 为满足用户不同需求,Zilliz Cloud 提供 3 种类型的集群 CU——性能型、容量型和经济型。但是,为不同类型 CU 集群中的 Collection 创建索引时,通常需要根据所选择的 CU 类型调整索引参数。为了方便您创建索引,免去调节参数的麻烦,Zilliz C…