久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 8442|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

關(guān)于W5500的UDP通信方式代碼(基于stm32f103單片機(jī))

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
W5500這個(gè)芯片不用多說(shuō),大家都知道的,神一樣的存在,下面貼出W5500的UDP通信方式代碼例程,供大家參考,希望大家批評(píng)指正,謝謝


單片機(jī)源程序如下:
  1. #include "usart.h"
  2. #include "device.h"
  3. #include "spi2.h"
  4. #include "ult.h"
  5. #include "socket.h"
  6. #include "w5500.h"
  7. #include "24c16.h"
  8. #include "md5.h"
  9. #include <string.h>

  10. extern uint8 txsize[];                                                                                // 引用外部變量,聲明Socket發(fā)送緩存大小
  11. extern uint8 rxsize[];                                                                                // 引用外部變量,聲明Socket接收緩存大小

  12. uint8 buffer[2048];                                                                                                // 定義一個(gè)2KB的數(shù)組,用來(lái)存放Socket的通信數(shù)據(jù)

  13. int main()
  14. {
  15.   uint8 remote_ip[4]={192,168,1,151};                        // 配置遠(yuǎn)程IP地址
  16.         uint16 remote_port=6000;                                                                // 配置遠(yuǎn)程端口
  17.   uint16 local_port=5000;                                                                        // 初始化一個(gè)本地端口
  18.   uint16 len=0;

  19.   /***** MCU時(shí)鐘初始化 *****/                                                          
  20.         Systick_Init(72);       
  21.        
  22.         /***** GPIO、SPI初始化 *****/
  23.         GPIO_Configuration();                       
  24.         WIZ_SPI_Init();
  25.        
  26.         /***** 串口初始化 *****/
  27.         USART1_Init();                
  28.        
  29.         /***** 初始化eeprom *****/
  30.   at24c16_init();
  31.        
  32.         /***** 硬重啟W5500 *****/
  33.         Reset_W5500();
  34.        
  35.         /***** W5500的IP信息初始化 *****/
  36.         set_default();                                                                                                                 // 設(shè)置默認(rèn)MAC、IP、GW、SUB、DNS
  37.         set_network();                                                                                                                // 配置初始化IP信息并打印,初始化8個(gè)Socket

  38.   printf("UDP Local Port: %d \r\n",local_port);
  39.         printf("UDP Remote IP: %d.%d.%d.%d \r\n",remote_ip[0],remote_ip[1],remote_ip[2],remote_ip[3]);
  40.   printf("UDP Remote Port: %d \r\n",remote_port);
  41.         printf("W5500 Init Complete!\r\n");
  42.   printf("Start UDP Test!\r\n");        

  43.         /*Socket狀態(tài)機(jī),MCU通過(guò)讀Sn_SR(0)的值進(jìn)行判斷Socket應(yīng)該處于何種狀態(tài)
  44.                 Sn_SR狀態(tài)描述:
  45.                 0x00                SOCK_CLOSED
  46.                 0x13                SOCK_INIT
  47.                 0x14                SOCK_LISTEN
  48.                 0x17                SOCK_ESTABLISHED
  49.                 0x1C                SOCK_CLOSE_WAIT
  50.                 0x22                SOCK_UDP
  51.         */
  52.         while(1)                                                                                                                                                                                                                                // Socket狀態(tài)機(jī)
  53.         {
  54.                 switch(getSn_SR(0))                                                                                                                                                                                // 獲取socket0的狀態(tài)
  55.                 {
  56.                         case SOCK_UDP:                                                                                                                                                                                        // Socket處于初始化完成(打開(kāi))狀態(tài)
  57.                                         Delay_ms(100);
  58.                                         if(getSn_IR(0) & Sn_IR_RECV)
  59.                                         {
  60.                                                 setSn_IR(0, Sn_IR_RECV);                                                                                                                        // Sn_IR的RECV位置1
  61.                                         }
  62.                                         // 數(shù)據(jù)回環(huán)測(cè)試程序:數(shù)據(jù)從遠(yuǎn)程上位機(jī)發(fā)給W5500,W5500接收到數(shù)據(jù)后再回給遠(yuǎn)程上位機(jī)
  63.                                         if((len=getSn_RX_RSR(0))>0)
  64.                                         {
  65.                                                 memset(buffer,0,len+1);
  66.                                                 recvfrom(0,buffer, len, remote_ip,&remote_port);                        // W5500接收來(lái)自遠(yuǎn)程上位機(jī)的數(shù)據(jù),并通過(guò)SPI發(fā)送給MCU
  67.                                                 printf("%s\r\n",buffer);                                                                                                                        // 串口打印接收到的數(shù)據(jù)
  68.                                                 sendto(0,buffer,len, remote_ip, remote_port);                                  // 接收到數(shù)據(jù)后再回給遠(yuǎn)程上位機(jī),完成數(shù)據(jù)回環(huán)
  69.                                         }
  70.                         break;
  71.                         case SOCK_CLOSED:                                                                                                                                                                                // Socket處于關(guān)閉狀態(tài)
  72.                                         socket(0,Sn_MR_UDP,local_port,0);                                                                                                // 打開(kāi)Socket0,并配置為UDP模式,打開(kāi)一個(gè)本地端口
  73.                         break;
  74.                 }
  75.         }
  76. }
復(fù)制代碼

所有資料51hei提供下載:
4.UDP.rar (313.89 KB, 下載次數(shù): 151)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:446826 發(fā)表于 2018-12-15 16:16 | 只看該作者
很好 可以學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

板凳
ID:438877 發(fā)表于 2020-4-7 17:56 | 只看該作者
正好有需要,謝謝了
回復(fù)

使用道具 舉報(bào)

地板
ID:641221 發(fā)表于 2020-5-8 14:36 | 只看該作者
正好能用到   謝謝你
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久精品久久| 人人鲁人人莫人人爱精品 | 黄色免费在线观看网址 | 欧美日韩在线免费 | 狠狠爱一区二区三区 | 欧美日韩中文在线 | 91社区在线高清 | 日本不卡免费新一二三区 | 又黄又色 | 国产精品久久亚洲7777 | 在线免费看毛片 | 国产精品日韩欧美一区二区三区 | 日韩av一区二区在线观看 | 亚洲视屏| 国产福利在线 | 欧美高清视频 | 啪啪综合网| 天堂在线中文字幕 | 视频一区二区三区中文字幕 | 色综网 | 高清色视频| 超碰人人做 | 午夜精品久久久久久久久久久久 | 国产亚洲成av人在线观看导航 | 久久久久国产精品一区三寸 | 日韩中文一区二区 | 国产黄色大片在线观看 | 蜜桃免费一区二区三区 | 在线三级网址 | 国内精品免费久久久久软件老师 | 欧美成人免费 | 午夜精品一区二区三区在线观看 | 日韩一区二区黄色片 | 99精品在线观看 | 欧美日韩视频在线 | 99热播放 | 欧美日本在线观看 | 黄色在线免费观看视频网站 | 久久久久久成人 | 欧美日韩在线观看一区 | 一级毛片免费视频 |