国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

 找回密碼
 注冊
搜索

STM32使用非中斷DMA模式W5500作為tcp服務器源碼

[復制鏈接]
樓主
路漫漫 發表于 2020-5-20 23:58:09 | 只看該作者 |倒序瀏覽 |閱讀模式
這個應用代碼設置W5500為tcp服務器,PC作為tcp客戶端來連接W5500,并通過簡單的數據收發來驗證連接是否成功。

完整源碼: STM32_DMA-W5500.zip (417.27 KB, 售價: 2 E幣)
包含文件目錄
============
stm32f10x_conf.h     配置庫文件
stm32f10x_it.c       中斷頭文件
stm32f10x_it.h       stm32f10x_it.c的頭文件
main.c               主程序

硬件環境
========
這個例程用于野火STM32F103VET6開發板同以太網芯片W5500搭建的應用平臺,也可以很方便地
移植到其他平臺上。

注意:
首先通過串口線連接PC和W5500模塊;如果W5500模塊直接通過網線和PC相連接,需要修改PC的IP為靜態IP,且保證和W5500在同一個網段;
如果W5500模塊直接連接路由器,則不需要修改。

操作步驟
========
1. 成功編譯應用程序,然后通過串口燒錄工具或者Jlink把程序燒錄到開發板中
2. 打開串口工具,復位開發板可以看到W5500的相關配置信息
3. 打開網絡調試助手,設置為TCP Client,端口號和服務器IP可以通過串口打印得到;添加信息無誤后點擊連接建立網絡
4. 連接成功后,在網絡調試助手端發送數據,可以觀察到數據接收情況

部分代碼片段:
  1. /**
  2. ******************************************************************************
  3. * @file                            main.c
  4. * @author                          fire
  5. * @version                         V1.0
  6. * @brief                           用3.5.0版本庫建的工程模板
  7. ******************************************************************************
  8. **@attention          內網測試,請保證W5500的IP與測試PC機在同一網段內,且不沖突;
  9. * @attention          如果是用網線跟PC機直連,請設置PC機本地連接地址IP為靜態IP;
  10. * @attention          網絡調試助手打開時的IP地址若是你本地連接地址,請自行設定;
  11. *
  12. * 使用本程序,先將w5500_conf.C 文件中的PC_IP,設定為PC機的IP地址,端口號可任意,默認為5000
  13. *
  14. ******************************************************************************
  15. */
  16. #include <stdio.h>
  17. #include <string.h>

  18. #include "stm32f10x.h"
  19. #include "bsp_spi_flash.h"
  20. #include "bsp_usart1.h"
  21. #include "bsp_i2c_ee.h"
  22. #include "bsp_i2c_gpio.h"
  23. #include "bsp_led.h"
  24. #include "bsp_dht11.h"

  25. #include "w5500.h"
  26. #include "W5500_conf.h"
  27. #include "socket.h"
  28. #include "utility.h"
  29. /*app函數頭文件*/
  30. #include "tcp_demo.h"
  31. uint8 buffer[2048];
  32. int main(void)
  33. {         
  34.     uint16 size=0;
  35.         systick_init(72);/* 初始化Systick工作時鐘*/
  36.         NVIC_Configuration();
  37.                 USART1_Config(); /*初始化串口通信:115200@8-n-1*/
  38.         i2c_CfgGpio();/*初始化eeprom*/
  39.         LED_GPIO_Config();
  40.         
  41.         printf(" 初始化W5500…… \r\n");         
  42.         gpio_for_w5500_config();/* 初始化MCU相關引腳*/
  43. //        SPI_DMA_Config();
  44.         reset_w5500();/*復位W5500*/
  45.         printf(" W5500 Hardware initialized! \r\n");
  46.         
  47.         set_w5500_mac();/*配置W5500MAC地址*/

  48.         if(use_define==1||use_eeprom==1)/*不DHCP獲取IP地址,就配置默認IP地址*/
  49.         set_w5500_ip();/*配置W5500IP地址*/
  50.         printf(" 電腦作為TCP客戶端連接W5500TCP服務器 \r\n");
  51.         printf(" W5500服務器端口默認為: %d \r\n",W5500_tcp_server_port);
  52.         printf(" 連接成功后,PC機發送數據給W5500,W5500將返回對應數據 \r\n");
  53.         socket_buf_init(txsize, rxsize); /*初始化8個Socket的發送接收緩存大小*/
  54.         printf(" 應用程序執行中……\r\n");
  55.         while(1)//循環執行的函數
  56.         {
  57.                 do_tcp_server();/*TCP_Server 數據回環測試程序*/
  58.         }

  59. }
復制代碼


沙發
老袁同學 發表于 2024-3-19 10:58:36 | 只看該作者
沒啥用 根本不是中斷加dma,還是輪詢方式加個dma,也是一直等待DMA傳輸完成,沒有效率提升
板凳
 樓主| 路漫漫 發表于 2024-3-19 11:12:55 | 只看該作者
老袁同學 發表于 2024-3-19 10:58
沒啥用 ,根本不是中斷加dma,還是輪詢方式加個dma,也是一直等待DMA傳輸完成,沒有效率提升 ...
文中也沒說用中斷加dma方式呀,給出的示例代碼片段里也沒有說用中斷+DMA
但是還是要感謝您的反饋。

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則

手機版|小黑屋|ELEOK |網站地圖

GMT+8, 2026-5-26 00:10

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回復 返回頂部 返回列表