只是简单的连接,这里用的服务器是合宙的
网站如下:合宙 TCP/UDP web工具
好网站工具:开发者工具箱 - Coding.Tools
由于我大二的时候,没有好好学习计网,所以很多都忘记或者不会,公网和内网我都混淆了。
因为我没有路由器,只有一根网线,所以,我只连接上,然后发现只能连接本地的,
我本地是
192.168.10.200;
192.168.10.1;
255.255.255.0;
所以我就,在代码里,
//uint8_t ip[4] = {192, 168, 10,9};
//uint8_t ga[4] = {192, 168, 10,1};
//uint8_t sub[4] = {255, 255, 255, 0};
//uint8_t mac[6] = {110, 120, 13, 140, 150, 16};
这里可以连接我本地的,
但是我想连接公网的,就是那个网站的,所以我就当真的也改了改:
//uint8_t ip[4] = {112, 125, 89,10};
//uint8_t ga[4] = {112, 125, 89,1};
//uint8_t sub[4] = {255, 255, 255, 0};
//uint8_t mac[6] = {110, 120, 13, 140, 150, 16};
结果就是ping 不通,连不上,哈哈哈哈,
步骤1:启用网络共享
-
确保电脑已通过Wi-Fi或蜂窝网络连接到互联网。
-
右键点击 “开始菜单” → “网络连接”。
-
找到当前连接互联网的网络接口(如Wi-Fi),右键选择 “属性” → “共享”:
-
✅ 允许其他网络用户通过此计算机的Internet连接来连接。
-
家庭网络连接:选择与W5500连接的以太网接口(如“以太网 2”)。
-
点击 确定。
-
步骤2:配置电脑的以太网接口(连接W5500的网口)
-
右键点击与W5500连接的以太网接口 → “属性” → “Internet协议版本4 (TCP/IPv4)” → “属性”。
-
设置静态IP(供W5500作为网关):
-
IP地址:
192.168.137.1
(Windows共享网络的默认网关) -
子网掩码:
255.255.255.0
-
其他字段留空,点击 确定。
-
步骤3:关闭防火墙(临时测试)
-
打开 “控制面板” → “Windows Defender 防火墙” → “启用或关闭防火墙”。
-
暂时关闭防火墙(测试完成后再恢复)。
(2) W5500网络配置
修改代码中的网络参数,确保与电脑共享的子网一致:
// W5500的配置(需与电脑共享的子网匹配)
uint8_t ip[4] = {192, 168, 137, 2}; // 例如 192.168.137.2(未被占用的IP)
uint8_t ga[4] = {192, 168, 137, 1}; // 网关(电脑的以太网IP)
uint8_t sub[4] = {255, 255, 255, 0}; // 子网掩码
uint8_t mac[6] = {0x00, 0x08, 0xDC, 0x12, 0x34, 0x56}; // 唯一MAC地址
stm32+w5500,用的是spi通信,这里不过多阐述,还有w5500的官方驱动,网上有教程,下面的代码只是简单的连接
#include "Int_w5500.h"
//uint8_t ip[4] = {192, 168, 10,9};
//uint8_t ga[4] = {192, 168, 10,1};
//uint8_t sub[4] = {255, 255, 255, 0};
//uint8_t mac[6] = {110, 120, 13, 140, 150, 16};
// W5500的配置(需与电脑共享的子网匹配)
uint8_t ip[4] = {192, 168, 137, 2}; // 例如 192.168.137.2(未被占用的IP)
uint8_t ga[4] = {192, 168, 137, 1}; // 网关(电脑的以太网IP)
uint8_t sub[4] = {255, 255, 255, 0}; // 子网掩码
uint8_t mac[6] = {0x00, 0x08, 0xDC, 0x12, 0x34, 0x56}; // 唯一MAC地址
//uint8_t ip[4] = {112, 125, 89,10};
//uint8_t ga[4] = {112, 125, 89,1};
//uint8_t sub[4] = {255, 255, 255, 0};
//uint8_t mac[6] = {110, 120, 13, 140, 150, 16};
extern void user_wizchip_reg_func(void);
void Inf_W5500_Reset(void)
{
// 拉低重置引脚 => 超过500us
HAL_GPIO_WritePin(W5500_RST_GPIO_Port, W5500_RST_Pin, GPIO_PIN_RESET);
HAL_Delay(5);
HAL_GPIO_WritePin(W5500_RST_GPIO_Port, W5500_RST_Pin, GPIO_PIN_SET);
HAL_Delay(5);
}
void Int_W5500_Init(void)
{
int a=0;
// 1. 初始化驱动
// MX_SPI2_Init();
// 2. 软重启芯片
Inf_W5500_Reset();
// 3. 注册函数
user_wizchip_reg_func();
// 4. 设置W5500参数 => ip地址 mac地址 网关 子网掩码
// 封装完整的API => set寄存器名称=> 直接写入
// get寄存器名称 => 直接读取
// 4.1 设置网关
setGAR(ga);
// 4.2 设置子网掩码
setSUBR(sub);
// 4.3 设置mac地址
setSHAR(mac);
// 4.4 设置ip地址
setSIPR(ip);
debug_println("11111w5500初始化完成");
a=1;
}
// 选择使用的socket 0-7
#define SN 0
#define CLIENT_PORT 8080
//uint8_t SERVER_IP[4] = {192, 168, 10,200};
//#define SERVER_PORT 777
uint8_t SERVER_IP[4] = {112, 125, 89,8};
#define SERVER_PORT 42339
CommmonStatus Int_W5500_Start_TCP_Client(void)
{
// 0. 判断当前的状态
uint8_t sn_sr = getSn_SR(SN);
// 1. 创建客户端
if (sn_sr == SOCK_CLOSED)
{
// 资源被释放 能够用来创建客户端
int8_t r = socket(SN, Sn_MR_TCP, CLIENT_PORT, 0);
if (r == SN)
{
// 创建socket成功 初始化客户端成功
debug_printf("创建socket成功");
}
else
{
debug_printf("创建socket失败");
}
}
// 2. 连接服务端
else if (sn_sr == SOCK_INIT)
{
// 主动连接服务端
int8_t c_r = connect(SN, SERVER_IP, SERVER_PORT);
if (c_r == SOCK_OK)
{
debug_println("连接服务端成功");
}
else
{
debug_println("连接服务端失败");
}
}
// 3. 等待进入ES状态
else if (sn_sr == SOCK_ESTABLISHED)
{
// 创建客户端成功 连接服务端成功
return COMMON_OK;
}
// 4. 如果断开 => 关闭客户端
else if (sn_sr == SOCK_CLOSE_WAIT)
{
// 断开连接
close(SN);
}
return COMMON_ERROR;
}
void Int_W5500_Send_Data(uint8_t data[], uint16_t data_len)
{
// 健壮性判断
if (data_len == 0)
{
return;
}
// 创建客户端等待连接服务端成功 => 才能发送数据
while (Int_W5500_Start_TCP_Client() != COMMON_OK)
{
HAL_Delay(10);
}
// 只有当前SN的状态为ES的时候 才能发送数据
// 0. 判断当前的状态
uint8_t sn_sr = getSn_SR(SN);
if (sn_sr == SOCK_ESTABLISHED)
{
// 才能发送数据
send(SN, data, data_len);
}
}
啦啦啦,一定不会贪玩啦,