国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標題:
STM32使用非中斷DMA模式W5500作為tcp服務器源碼
[打印本頁]
作者:
路漫漫
時間:
2020-5-20 23:58
標題:
STM32使用非中斷DMA模式W5500作為tcp服務器源碼
這個應用代碼設置W5500為tcp服務器,PC作為tcp客戶端來連接W5500,并通過簡單的數據收發來驗證連接是否成功。
完整源碼:
STM32_DMA-W5500.zip
(417.27 KB, 售價: 2 E幣)
2023-5-16 11:07 上傳
點擊文件名下載附件
售價: 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. 連接成功后,在網絡調試助手端發送數據,可以觀察到數據接收情況
部分代碼片段:
/**
******************************************************************************
* @file main.c
* @author fire
* @version V1.0
* @brief 用3.5.0版本庫建的工程模板
******************************************************************************
**@attention 內網測試,請保證W5500的IP與測試PC機在同一網段內,且不沖突;
* @attention 如果是用網線跟PC機直連,請設置PC機本地連接地址IP為靜態IP;
* @attention 網絡調試助手打開時的IP地址若是你本地連接地址,請自行設定;
*
* 使用本程序,先將w5500_conf.C 文件中的PC_IP,設定為PC機的IP地址,端口號可任意,默認為5000
*
******************************************************************************
*/
#include <stdio.h>
#include <string.h>
#include "stm32f10x.h"
#include "bsp_spi_flash.h"
#include "bsp_usart1.h"
#include "bsp_i2c_ee.h"
#include "bsp_i2c_gpio.h"
#include "bsp_led.h"
#include "bsp_dht11.h"
#include "w5500.h"
#include "W5500_conf.h"
#include "socket.h"
#include "utility.h"
/*app函數頭文件*/
#include "tcp_demo.h"
uint8 buffer[2048];
int main(void)
{
uint16 size=0;
systick_init(72);/* 初始化Systick工作時鐘*/
NVIC_Configuration();
USART1_Config(); /*初始化串口通信:115200@8-n-1*/
i2c_CfgGpio();/*初始化eeprom*/
LED_GPIO_Config();
printf(" 初始化W5500…… \r\n");
gpio_for_w5500_config();/* 初始化MCU相關引腳*/
// SPI_DMA_Config();
reset_w5500();/*復位W5500*/
printf(" W5500 Hardware initialized! \r\n");
set_w5500_mac();/*配置W5500MAC地址*/
if(use_define==1||use_eeprom==1)/*不DHCP獲取IP地址,就配置默認IP地址*/
set_w5500_ip();/*配置W5500IP地址*/
printf(" 電腦作為TCP客戶端連接W5500TCP服務器 \r\n");
printf(" W5500服務器端口默認為: %d \r\n",W5500_tcp_server_port);
printf(" 連接成功后,PC機發送數據給W5500,W5500將返回對應數據 \r\n");
socket_buf_init(txsize, rxsize); /*初始化8個Socket的發送接收緩存大小*/
printf(" 應用程序執行中……\r\n");
while(1)//循環執行的函數
{
do_tcp_server();/*TCP_Server 數據回環測試程序*/
}
}
復制代碼
作者:
老袁同學
時間:
2024-3-19 10:58
沒啥用 根本不是中斷加dma,還是輪詢方式加個dma,也是一直等待DMA傳輸完成,沒有效率提升
作者:
路漫漫
時間:
2024-3-19 11:12
老袁同學 發表于 2024-3-19 10:58
沒啥用 ,根本不是中斷加dma,還是輪詢方式加個dma,也是一直等待DMA傳輸完成,沒有效率提升 ...
文中也沒說用中斷加dma方式呀,給出的示例代碼片段里也沒有說用中斷+DMA
但是還是要感謝您的反饋。
歡迎光臨 ELEOK (http://www.afoofa.cn/)
Powered by Discuz! X5.0