华大HC32F460 TCP Server实验

这篇具有很好参考价值的文章主要介绍了华大HC32F460 TCP Server实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.实验目标

2.实验准备

3.主流程图

4.驱动代码

5.实验步骤

1.实验目标

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

2.实验准备

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

        软件搭建:MDK5.22

3.主流程图

华大HC32F460 TCP Server实验,HC32F460进阶篇实验列表,单片机,嵌入式硬件,物联网

 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);   // 打开socket

      break;    

   

    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);                                   // 关闭当前所使用socket

      break;

  }

}

     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下。

华大HC32F460 TCP Server实验,HC32F460进阶篇实验列表,单片机,嵌入式硬件,物联网

【第三步:初始化编程】

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开发板连接到同一个路由器,处于同一局域网下,连接好硬件,编译下载运行该程序,查看串口助手收到信息是否与自己配置的信息一致。

华大HC32F460 TCP Server实验,HC32F460进阶篇实验列表,单片机,嵌入式硬件,物联网

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

华大HC32F460 TCP Server实验,HC32F460进阶篇实验列表,单片机,嵌入式硬件,物联网

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

华大HC32F460 TCP Server实验,HC32F460进阶篇实验列表,单片机,嵌入式硬件,物联网

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

华大HC32F460 TCP Server实验,HC32F460进阶篇实验列表,单片机,嵌入式硬件,物联网

 文章来源地址https://www.toymoban.com/news/detail-551485.html

到了这里,关于华大HC32F460 TCP Server实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 雅特力 AT32F437 配置RT-Thread 以太网(UDP/TCP Server)

    好记性不如烂笔头,既然不够聪明,就乖乖的做笔记,温故而知新。 本文档用于本人对知识点的梳理和记录。 雅特力 AT32F437 配置RT-Thread 以太网(UDP/TCP Server) 目录         一、前言         二、ENV配置         三、结语   一、前言 ENV版本:v1.3.5 rt-thread版本:V5+

    2024年02月12日
    浏览(45)
  • STM32F1 + 蓝牙HC08 与 手机APP通信

    1.1  开发软硬环境 芯片型号:STM32F103RCT6 开发软件:Keil5  (v5.31+AC5,最常用) 代码用库:标准固件库 蓝牙模块:HC-08 (HC家的,小贵 ,配套图解、串口助手、APP、小程序,完美) USB转TTL模块: CH9340C  (Type-C接口,win10可免驱动,比CH340和CP2102爽) 1.2  代码下载链接 百度网

    2024年02月04日
    浏览(55)
  • 基于STM32F103C8T6的HC-06蓝牙通信

    如果朋友们 遇到了如下问题 ,可以仔细借鉴本文章和另一篇专门讲解 蓝牙通信问题 的文章,一定能够解决你在蓝牙通信时遇到的诸多困难 1.在调试蓝牙模块AT指令时无返回值 2.身边 无USB转TTL模块 可以直接调试蓝牙模块(本人就是由于无模块花了了整整一天才调试成功)

    2024年02月03日
    浏览(69)
  • 【嵌入式】HC32F定时器PWM捕获+APC芯片实现模拟AD采样

    目录 一 项目背景 二 原理说明 三 设计实现——定时器初始化 四 设计实现——PWM捕获 五 梳理总结         目前使用了TI的ADC采样芯片 ADS1018实现模拟量4-20mA/0-20mA的采样 ,原理是 将外部输入的模拟量信号4-20mA,经由并联的两个100Ω电阻,转换为0.2-1V的电压信号传递到模数转

    2023年04月24日
    浏览(50)
  • 【嵌入式】HC32F07X CAN通讯配置和使用&配置不同缓冲器以连续发送

            使用小华(华大)的MCU HC32F07X实现 CAN 通讯配置和使用 【1】 CAN原理说明 (参考文章《CAN通信详解》):         CAN是控制器局域网络(Controller Area Network, CAN)的简称,是一种能够实现分布式实时控制的串行通信网络。         (i) CAN通信形式 :CAN 使用称为 C

    2024年02月06日
    浏览(51)
  • 基于STM32F103C8T6(HAL库)的HC-SR501红外人体传感及HC-SR04超声波测距

    一、基于STM32F103C8T6最小系统板和STM32CubeMX实现LED灯循环闪烁 二、基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发 三、实战小例程 基于STM32F103C8T6最小系统板和STM32CubeMX驱动WS2812B光立方 四、基于STM32F103C8T6最小系统板HAL库CubeMX驱动HC-SR501红外人体传感模块 五、基于STM32F103C8

    2023年04月17日
    浏览(109)
  • 基于STM32F103ZET6的(单/三)路HC-SR04超声波测距+TFTLCD实时显示+距离报警

    一、成果图 说明:本程序的源码地址: https://github.com/Lfy-YF/Campus-Project            CSDN下载连接:https://download.csdn.net/download/weixin_58849239/87829470 源码包含四个版本,涉及单路测距、三路测距、增加外部中断(用来版本记录的~) 运行效果: 本程序实现脱机测距,共左中右

    2024年02月11日
    浏览(46)
  • 关于STM32F4和GD32F4以太网,LAN8720+lwip+freemodbus,实现modbus tcp

    关于STM32F4和GD32F4以太网,LAN8720+lwip+freemodbus 这里使用了大佬 小灰灰搞电子 的代码,文章看 STM32F407+LAN8720移植Lwip和freeModbus实现MODBUS TCP 代码看 STM32F407+LAN8720+LWIP移植freemodbus TCP.zip 他的代码是基于正点原子F407的板子开发的,如果是别的板子,需要修改引脚 小灰灰的代码里,没

    2024年02月14日
    浏览(39)
  • 基于STM32的超声波HC-SR04和红外测距模块测量距离的实验对比(HAL库)

            前言: 本文主要是为了 日常普通场合 下测距做的 对比实验 ,本实验主要包含 2种模块 : 超声波测距模块 (HC-SR04)和 红外测距模块 (SHARP GP2Y0A21YK0F)。两种模块不管是测距原理和编程实验方式都是不相同的,其测距效果也存在很大差异。感兴趣的读者朋友,

    2023年04月27日
    浏览(68)
  • 基于stm32F103的蜂鸣器周期发声实验

    蜂鸣器作为一种声音报警器件,应用广泛。本实验基于stm32F103单片机,通过控制蜂鸣器的IO口电平电压,使其周期性地进行电平翻转,从而驱动蜂鸣器发出周期性的鸣叫声。该实验主要运用了stm32的GPIO和定时器TIM的相关功能,不仅可以巩固这些外设的使用,也可以通过改变时间参数,控

    2024年02月21日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包