STM32CubeMX+STM32F407+FreeRTos+LAN8720 以太网通信实现数据收发功能
目录
前言
一、STM32CubeMX配置
二、修改代码
三、硬件测试
总结
前言
该工程应用的以太网芯片是LAN8720,代码是基于STM32CUbeMx6.2.1配置生成的,在CubeMx中配置了ETH和LWIP,还有串口1和FREERTOS,最后通过创建任务函数实现udp的以太网数据收发功能。在测试中,可以在电脑的DOS窗口ping通在LWIP设置的单片机开发板的ip地址,通过网络调试助手可以实现数据的收发功能。
一、STM32CubeMX配置
1、选择STM32F407VET6芯片创建工程,首先配置RCC和SYS,再配置时钟,配置界面如下
2、配置ETH,配置界面如下
3、配FREERTOS和LWIP,配置界面如下
4、分配中断优先级,配置界面如下(如果需配置串口,先配置一下串口)
5、到这里,CubeMX就算配置完成了,就可以生成代码了
二、修改代码
1、打开生成的工程文件,找到HAL_ETH_MspInit函数,在最下面添加芯片复位的三行代码(作用是在芯片初始化时,对芯片复位一下,该芯片复位引脚对应我单片机开发板上的PA3)
2、在main.c中添加修改函数,首先是包含的文件,然后是创建任务函数,
#include "main.h"
#include "cmsis_os.h"
#include "lwip.h"
#include "usart.h"
#include "gpio.h"/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */#include "stdio.h"
#include "udp_echoserver.h"
/* USER CODE END Includes */
/* USER CODE BEGIN 0 */
void controlTask(void * param)
{MX_LWIP_Init();vTaskDelete( NULL );}
void commandTask(void * param)
{udp_echoserver_init();while(1){vTaskDelay(2);}}TaskHandle_t StartTaskHandle;
void StartTask(void * arg)
{taskENTER_CRITICAL(); xTaskCreate(controlTask, "controlTask", 200,NULL,4,NULL);xTaskCreate(commandTask, "commandTask", 200,NULL,4,NULL);vTaskDelete(StartTaskHandle); taskEXIT_CRITICAL();
}
/* USER CODE END 0 *//*** @brief The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */printf("³õʼ»¯Íê±Ï");xTaskCreate(StartTask,"commanderTask",200,NULL,2,&StartTaskHandle);vTaskStartScheduler();/* USER CODE END 2 *//* Call init function for freertos objects (in freertos.c) */MX_FREERTOS_Init();/* Start scheduler */osKernelStart();/* We should never get here as control is now taken by the scheduler *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}
2、此时在电脑上是能够PING通在CubeMx中配置的ip地址的,如果需要实现udp数据收发功能,还需要创建功能文件,代码如下
void udp_echoserver_init(void)
{struct udp_pcb *upcb;err_t err;/* Create a new UDP control block */upcb = udp_new();if (upcb){/* Bind the upcb to the UDP_PORT port *//* Using IP_ADDR_ANY allow the upcb to be used by any local interface */err = udp_bind(upcb, IP_ADDR_ANY, UDP_SERVER_PORT);if(err == ERR_OK){/* Set a receive callback for the upcb */udp_recv(upcb, udp_echoserver_receive_callback, NULL);}else{udp_remove(upcb);// printf("can not bind pcb");}}else{// printf("can not create pcb");}
}
uint8_t receivebuf[30] = {0};
//uint8_t send_buf[2] = {0x01,0x02};
uint8_t send_buf[] = "ÒѾÊÕµ½Êý¾Ý";
int receivelen = 0;
void udp_echoserver_receive_callback(void *arg, struct udp_pcb *upcb, struct pbuf *p,const struct ip4_addr *addr, u16_t port)
{struct pbuf *pq; //´´½¨Ò»¸ö½á¹¹Ìå±äÁ¿receivelen = p->len;memcpy(receivebuf,p->payload,p->len);//p->payloadÖ¸½ÓÊÕµ½µÄʵ¼ÊÊý¾Ý£pp->lenÊÇÖ¸½ÓÊÕµ½µÄÊý¾Ý³¤¶È£»£»½«p±äÁ¿½ÓÊÕµ½µÄÊý¾Ý¸´ÖƵ½receivebufÀïÃæpbuf_free(p);//ÊÍ·Åpudp_connect(upcb, addr, UDP_CLIENT_PORT); //½¨Á¢udpÁ¬½Ópq = pbuf_alloc(PBUF_TRANSPORT,14,PBUF_POOL);//allocate memory 14Ï൱ÓÚ·ÖÅä14¸ö×Ö½Úpbuf_take(pq,(char*)receivebuf,14);//copy data to bufudp_send(upcb,pq);//send udp datamemset(receivebuf,0x00,30); //Çå³ý»º´æudp_disconnect(upcb);pbuf_free(pq); // /* Connect to the remote client */
// udp_connect(upcb, addr, UDP_CLIENT_PORT);
//
// /* Tell the client that we have accepted it */
// udp_send(upcb, p);// /* free the UDP connection, so we can accept new clients */
// udp_disconnect(upcb);
//
// /* Free the p buffer */
// pbuf_free(p);
}
三、硬件测试
1、用网线将开发板和电脑网口连接上,配置电脑的ip地址,然后可以在电脑的DOS串口ping通开发板的IP地址,测试界面如下
2、用网线将开发板和电脑网口连接上,打开网络调试助手,测试数据收发功能
总结
以上是我对LAN8720以太网芯片的应用,希望对大家有帮助
整个工程代码下载:https://download.csdn.net/download/weixin_64705314/87672487?spm=1001.2014.3001.5503
STM32CubeMX+STM32F407+FreeRTos+LAN8720 以太网通信实现数据收发功能相关推荐
- 关于stm32f407接LAN8720以太网通信调试
终于有个时间总结一下关于lan8720的调试过程. 调试之前也是翻阅了各大微博,各大论坛,详细的认真的看了每一位大神发表的文章.取其精华去其糟粕,最终调通了lan8720的驱动.话不多说,切入正题. ...
- STM32F407+FreeRTOS+LAN8720+LWIP+STM32CubeMX+DHCP
记录一下通过STM32CubeMX配置STM32F407使用lan8720A使用lwip实现dhcp功能,使用硬件正点原子战舰开发板,STM32CubeMX版本6.4:FreeRTOS版本10.2.1 ...
- STM32F407多路串口通信进行数据收发
一直被说是就不能把几个串口放在一起,写个标准例程直接用,非要每次用哪个串口才现场改程序,被迫把usart1,usart2,usart3进行了资源整合,挂在这以备不时之需. 功能简述: 串口1,串口2, ...
- 485通信实现自动收发功能
在平时使用485通信时,好多人往往首选的就是MAX485芯片,如下图所示: 常规的方法就是使用RE和DE引脚通过程序来切换接收数据和发送数据,但是这样写起程序来比较麻烦,调试起来也比较费劲.为了方便的 ...
- STM32cubeMX将STM32F767+LAN8720+LwIP+FreeRTOS的以太网实现
通过STM32cubeMX将STM32F767+LAN8720+LwIP+FreeRTOS的以太网实现 本文使用了正点原子的阿波罗开发板,接下来我将粗略的对STM32F767通过STM32cubeMX ...
- 来吧展示!以太网配合FreeRTOS实现socket通信!实战STM32F4以太网DP83848配合LWIP
目的:实现STM32F407+FreeRTOS+Ethernet(DP83848)+Lwip实现socket通信,在实现之前我们先来了解下几点储备知识 一. 以太网行业标准MII/RMII 1 以太网 ...
- DE2-115 以太网通信之一88E1111网卡接收PC数据
想利用手头上的DE2-115 写一个关于以太网通信的驱动,经过了这么多天的实验调试终于有了一些认识. 1.我在观察网卡发送数据与接收数据的过程中发现,我从fpga上的一个网卡发送数据,然后另一个网卡接 ...
- 以太网通信(1)UDP —— 数据发送
目录 一.以太网通信简介 1.OSI七层模型 2.以太网数据包解析 3.IP首部校验和计算与检验 二.以太网通信实例 1.整体实验框图 2.发送部分时序图 3.实验代码及仿真结果 总结 一.以太网通信 ...
- 项目:基于以太网通信,单片机作为客户端,接收CAN-Ethernet的十六进制数据
一.物理连接 二,流程分析 电脑连接CAN分析仪,电脑通过软件USB-CAN把can十六进制数据发到CAN分析仪.CAN分析仪连接CAN转以太网设备,数据通过CAN转以太网设备后,通过网线传送到单片机 ...
最新文章
- react复习总结(1)--react组件开发基础
- 通过NVIDIA PilotNet,人人都能变成人工智能的老师
- android tesseract-ocr实例教程(包含中文识别)(附源码)
- 简单的session共享的封装
- Java 洛谷 P1002 过河卒讲解
- DTO(领域数据传输对象)是做什么的
- 手把手引进门之 ASP.NET Core Entity Framework Core(官方教程翻译版 版本3.2.5)
- html中的分页条怎么写,如何写分页(含HTML)
- Java™ 教程(控制流语句)
- VB实训项目:学生成绩管理系统V1.0
- 最新25个高质量PSD素材免费下载
- Java_脚本引擎_01_用法入门
- 路由器的级联(LAN-WAN)
- 【知识点】信道路径衰落分类、计算公式、换算
- 我去,神操作!虚拟机Ubuntu18.04居然可以安装NVIDIA + 附带安装源码与命令
- java图片裁剪类似qq头像_Android实现类似换QQ头像功能(图片裁剪)
- 集美大学计算机专业2020,2020年集美大学计算机应用技术考研调剂
- USB接口无法识别设备
- linux中常用nginx命令
- java评论、回复功能设计和实现
热门文章
- 【论文笔记】一些关于区块链的激励系统的论文笔记
- Lecture 16 Dependency Grammar
- Htb socket wp
- Java GridLayout(网格布局)布局管理器
- 对增益、相位裕度的个人理解
- 计算机音乐版,计算机音乐多开版
- 工业物联网必然成为第四次工业革命的领潮者
- 拒绝从网络访问这台计算机没有用户,拒绝从网络服务器访问此 (Windows 10) - Windows security | Microsoft Docs...
- 读书笔记-OpenCL编程指南 简介
- debian 安装 opencl