STM32驱动W5500连接腾讯云
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连接腾讯云相关推荐
- 【STM32+ESP8266连接腾讯云物联网开发平台 2】STM32+ESP8266-01S连接腾讯云
文章目录 前言 一.硬件准备 1.ESP8266-01S 2. STM32F103C8T6核心板或者小开发板及其程序下载器 二.软件准备 1.STM32CubeMX 2. MDK (Keil v5) ...
- STM32节点移植lorawan协议连接腾讯云物联网开发平台(IoT Explorer)
STM32移植lorawan协议栈连接腾讯云物联网开发平台(IoT Explorer) 前言 开发环境的准备 正文 初始化 入网 发送与接收 前言 在移植协议之前,先给大家科普一下Lora 和 lor ...
- 【STM32+ESP-12S连接腾讯云物联网开发平台 1】云平台的创建和AT固件烧录
腾讯云物联网开发平台创建和ESP-12S的固件烧录 前言 一.腾讯云物联网开发平台的创建 1. 创建产品 2. 配置产品和创建设备 3. 设备三元组说明 二.ESP-12S固件烧录 1.固件获取 2. ...
- 使用ESP32连接腾讯云实现远程控制方法
大家好,上次给大家分享了如何使用ESP32实现蓝牙通信,今天跟大家聊聊如何使用ESP32连接腾讯云实现远程控制.本次实验用到MQTT协议,同样,我用miropython编写程序实现,最终可以通过腾讯 ...
- Mac连接腾讯云服务器
Mac连接腾讯云服务器 这下载什么XShell,多此一举. 第一步:打开你的终端 第二步:输入ssh -p 22 你的服务器角色一般是root@你的服务器公网 第三步:输入密码 第四步:点赞点赞点赞
- navicat远程连接腾讯云主机中MySQL
一.授权给用户远程访问的权利 use mysql update user set host='%' where user='root'; flush privileges; 二.对外开发端口 切换到r ...
- 【APPInventor\腾讯云】使用APPInventor开发连接腾讯云的安卓物联网遥控APP
[APPInventor\腾讯云]使用APPInventor开发连接腾讯云的安卓物联网遥控APP 背景 需求分析 功能分析 数据链路 操作逻辑 实现方式\工具 具体实现 结语 背景 课程作业需要,教师 ...
- 腾讯云 mysql远程访问_远程连接腾讯云的mysql
='%' where user='root' # 如果想任何的IP地址都可以使用root用户来远程登陆(注意如果上面的查询语句,查询出来有多条,就需要做一些处理,比如多加一个条件如 where use ...
- 远程连接腾讯云MySQL数据库
远程连接腾讯云MySQL数据库 默认情况下,Centos系统的Mysql数据库是不允许被远程访问的 所以我们需要开启 输入mysql -uroot -p,使用Mysql 使用mysql数据库,Mysq ...
最新文章
- msf 之 webshell 提权
- Revit二次开发--Hello World
- python下RSA加密解密以及跨平台问题
- express接受get数据
- 解决Eclipse报errors running builder ‘javascript validator’ on project
- iphone 流媒体
- Diango 框架起步
- 未在计算机上注册控件-已解决
- 电子基础大全:整理了电子设计所需的基础知识
- 解决Windows10专业版无法安装语言包!!!
- js书写原生ajax,JS 原生ajax写法
- Windows11快捷键大全 win11常用快捷键介绍
- 微信指纹支付设置java_微信指纹支付怎么设置?微信指纹支付设置方法介绍
- 【EXLIBRIS】随笔记 008
- 数据分析出的 2000年以来高分华语电影前50名
- STM32之RTC实时时钟
- 按图搜索淘宝、天猫、1688商品API。(拍立淘API)
- 解题:POI 2011 Strongbox
- HNOI2017影魔
- 讯飞录音笔SR702,全新功能提升工作效率