STM32驱动W5500连接腾讯云

1.W5500简介

   W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案。 W5500 集成了 TCP/IP 协议栈, 10/100M 以太网数据链路层(MAC)及物理层(PHY) ,使得用户使用单芯片就能够在他们的应用中拓展网络连接。
   久经市场考验的 WIZnet 全硬件 TCP/IP 协议栈支TCP,UDP,IPv4,ICMP,ARP,IGMP 以及 PPPoE 协议。 W5500 内嵌 32K 字节片上缓存以供以太网包处理。如果你使用 W5500,你只需要一些简单的 Socket 编程就能实现以太网应用。这将会比其他嵌入式以太网方案更加快捷、简便。用户可以同时使用 8 个硬件 Socket 独立通讯。
   W5500 提供了 SPI(外设串行接口)从而能够更加容易与外设 MCU 整合。而且,W5500 的使用了新的高效 SPI 协议支持 80MHz 速率,从而能够更好的实现高速网络通讯。为了减少系统能耗, W5500 提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。

2.W5500底层驱动编写与移植

W5500底层底层驱动移植参考示例:https://blog.csdn.net/weixin_44453694/article/details/123066305
STM32连接腾讯云参考示例:https://blog.csdn.net/weixin_44453694/article/details/116802776

#include "stm32f10x.h"
#include "usart.h"
#include "timer.h"
#include "aliyun_mqtt.h"/*w5500相关头文件*/
#include "w5500api.h"
#include "dhcp.h"
#include "dns.h"
#define SERVER_IP "LA57WTHWL6.iotcloud.tencentdevices.com"//服务器IP
#define SERVER_PORT 1883 //端口号
//客户端ID:{产品ID}{设备名}
#define ClientID "LA57WTHWL6Smart_home"
//用户名和密码可使用密码生成工具完成
#define Username "LA57WTHWL2Smart_home;120310126;HK8V9;1635948714"
#define Password "2a915cae4489b591ce556e71f4e9f1ka21c354a37d12fee7c46f56abee1f048a;hmacsha256"//密文 //订阅题:$thing/down/property/{ProductID}/{DeviceName} ---{ProductID}产品ID,{DeviceName}设备名
#define SET_TOPIC  "$thing/down/property/Lb57WTHWL3/Smart_home"//订阅
//发布主题:$thing/up/property/{ProductID}/{DeviceName}
#define POST_TOPIC "$thing/up/property/Lb57WTHWL3/Smart_home"//发布char mqtt_message[200];//上报数据缓存区
u8 rx_buff[200];
void init_Net(void)
{u8 try_times=0;init_W5500();/*W5500初始化*/init_dhcp_client();//动态分配IPwhile(check_DHCP_state(SOCK_DHCP)!=DHCP_RET_UPDATE){try_times++;if(try_times==255)//超时 重启芯片{                          Reset_W5500();init_dhcp_client();try_times=0;}delay_ms(10);}while(!set_Network());/*判断数据是否写入成功*/u8 ipaddr[4];//ip地址u8 subnet[4];//子网掩码u8 gateway[4];//网关getSIPR (ipaddr);          printf(" W5500 IP地址   : %d.%d.%d.%d\r\n", ipaddr[0],ipaddr[1],ipaddr[2],ipaddr[3]);getSUBR(subnet);printf(" W5500 子网掩码 : %d.%d.%d.%d\r\n", subnet[0],subnet[1],subnet[2],subnet[3]);getGAR(gateway);printf(" W5500 网关     : %d.%d.%d.%d\r\n", gateway[0],gateway[1],gateway[2],gateway[3]);
}
/*连接服务器*/
uint8 TCP_Connect(SOCKET Socket,uint8 *sip,uint16 sport,uint16 lport)
{static uint8 CONNECT_FLAG = 0;switch(getSn_SR(Socket)){case SOCK_INIT:CONNECT_FLAG=connect(Socket,sip,sport);/*连接服务器*/break;case SOCK_CLOSE_WAIT:disconnect(Socket);close(Socket);break;case SOCK_CLOSED:CONNECT_FLAG=0;socket(Socket,Sn_MR_TCP,lport,Sn_MR_ND);break;}return CONNECT_FLAG;
}
int main()
{u16 i=0;u8 stat=0;u16 time=0,cnt=0;float temp=10;u16 rlen;USART1_Init(115200);printf("W5500 SPI模拟时序寄存器版,连接腾讯云VER1.0 \r\n");init_Net();/*W5500硬件初始化,动态分配IP*/printf("W5500 硬件初始化成功\r\n");while(!do_dns((u8 *)SERVER_IP)){}/*域名解析*/while(1){stat=TCP_Connect(MQTT_SOCK,NET_CONFIG.rip,1883,5500);/*连接服务器*/printf("stat=%d\r\n",stat);if(stat)break;delay_ms(1000);} printf("腾讯物联网平台连接中....\n");while(1){if(getSn_SR(MQTT_SOCK)==SOCK_ESTABLISHED){if(getSn_IR(MQTT_SOCK)&Sn_IR_CON){setSn_IR(MQTT_SOCK,Sn_IR_CON);}MQTT_Init();if(MQTT_Connect(ClientID,Username,Password)==0){printf("腾讯云平台连接成功\r\n");break;}}}stat=MQTT_SubscribeTopic(SET_TOPIC,0,1);if(stat)printf("订阅失败\r\n"); while(1){/*接收数据*/rlen=getSn_RX_RSR(MQTT_SOCK);if(rlen>0){rlen=recv(MQTT_SOCK,rx_buff,rlen);printf("len=%d\r\n",rlen);for(i=0;i<rlen;i++){printf("%c",rx_buff[i]);}}delay_ms(1);time++;cnt++;if(time>=5000){time=0;MQTT_SentHeart();//发送心跳包}if(cnt>=2000){temp+=1.5;if(temp>=85)temp=-15;cnt=0;sprintf(mqtt_message,"{\"method\":\"report\",\"clientToken\":\"123\",\"params\":{\"LED1\":1,\"temp\":%.2f,\"L\":356}}",temp);//温度MQTT_PublishData(POST_TOPIC,mqtt_message,0);}    }
}

3.运行效果



参考示例:https://download.csdn.net/download/weixin_44453694/81893703

STM32驱动W5500连接腾讯云相关推荐

  1. 【STM32+ESP8266连接腾讯云物联网开发平台 2】STM32+ESP8266-01S连接腾讯云

    文章目录 前言 一.硬件准备 1.ESP8266-01S 2. STM32F103C8T6核心板或者小开发板及其程序下载器 二.软件准备 1.STM32CubeMX 2. MDK (Keil v5) ...

  2. STM32节点移植lorawan协议连接腾讯云物联网开发平台(IoT Explorer)

    STM32移植lorawan协议栈连接腾讯云物联网开发平台(IoT Explorer) 前言 开发环境的准备 正文 初始化 入网 发送与接收 前言 在移植协议之前,先给大家科普一下Lora 和 lor ...

  3. 【STM32+ESP-12S连接腾讯云物联网开发平台 1】云平台的创建和AT固件烧录

    腾讯云物联网开发平台创建和ESP-12S的固件烧录 前言 一.腾讯云物联网开发平台的创建 1. 创建产品 2. 配置产品和创建设备 3. 设备三元组说明 二.ESP-12S固件烧录 1.固件获取 2. ...

  4. 使用ESP32连接腾讯云实现远程控制方法

    ​大家好,上次给大家分享了如何使用ESP32实现蓝牙通信,今天跟大家聊聊如何使用ESP32连接腾讯云实现远程控制.本次实验用到MQTT协议,同样,我用miropython编写程序实现,最终可以通过腾讯 ...

  5. Mac连接腾讯云服务器

    Mac连接腾讯云服务器 这下载什么XShell,多此一举. 第一步:打开你的终端 第二步:输入ssh -p 22 你的服务器角色一般是root@你的服务器公网 第三步:输入密码 第四步:点赞点赞点赞

  6. navicat远程连接腾讯云主机中MySQL

    一.授权给用户远程访问的权利 use mysql update user set host='%' where user='root'; flush privileges; 二.对外开发端口 切换到r ...

  7. 【APPInventor\腾讯云】使用APPInventor开发连接腾讯云的安卓物联网遥控APP

    [APPInventor\腾讯云]使用APPInventor开发连接腾讯云的安卓物联网遥控APP 背景 需求分析 功能分析 数据链路 操作逻辑 实现方式\工具 具体实现 结语 背景 课程作业需要,教师 ...

  8. 腾讯云 mysql远程访问_远程连接腾讯云的mysql

    ='%' where user='root' # 如果想任何的IP地址都可以使用root用户来远程登陆(注意如果上面的查询语句,查询出来有多条,就需要做一些处理,比如多加一个条件如 where use ...

  9. 远程连接腾讯云MySQL数据库

    远程连接腾讯云MySQL数据库 默认情况下,Centos系统的Mysql数据库是不允许被远程访问的 所以我们需要开启 输入mysql -uroot -p,使用Mysql 使用mysql数据库,Mysq ...

最新文章

  1. msf 之 webshell 提权
  2. Revit二次开发--Hello World
  3. python下RSA加密解密以及跨平台问题
  4. express接受get数据
  5. 解决Eclipse报errors running builder ‘javascript validator’ on project
  6. iphone 流媒体
  7. Diango 框架起步
  8. 未在计算机上注册控件-已解决
  9. 电子基础大全:整理了电子设计所需的基础知识
  10. 解决Windows10专业版无法安装语言包!!!
  11. js书写原生ajax,JS 原生ajax写法
  12. Windows11快捷键大全 win11常用快捷键介绍
  13. 微信指纹支付设置java_微信指纹支付怎么设置?微信指纹支付设置方法介绍
  14. 【EXLIBRIS】随笔记 008
  15. 数据分析出的 2000年以来高分华语电影前50名
  16. STM32之RTC实时时钟
  17. 按图搜索淘宝、天猫、1688商品API。(拍立淘API)
  18. 解题:POI 2011 Strongbox
  19. HNOI2017影魔
  20. 讯飞录音笔SR702,全新功能提升工作效率

热门文章

  1. 2020-10-16 js实现模拟双色球摇号
  2. wr720n刷成网络打印_TP-Link WR720N刷入OpenWrt之一般流程
  3. 利用免编程应用平台快速制作App
  4. 微电子电路——例题期末总结
  5. C语言——Hello World
  6. vs2008编译QT开源项目--太阳神三国杀源码分析(一) 项目编译及整体分析
  7. Canal adapter1.1.5安装部署配置(3)
  8. iMindMap中的灵感触发工具该怎么运用
  9. Mac 安装CodeBlocks
  10. 程序员崩溃了!年终奖怎么说黄就黄?