从零开始Cubemx配置STM32搭载freeRTOS以及lwip实现tcp网络通信(二)

本文介绍如何使用CubeMX配置STM32F407,结合FreeRTOS和LWIP实现TCP回环功能。首先配置ETH为RMII模式,然后设置LWIP,通过创建TCPECHO接收和接受函数,实现TCP连接的回环。在FreeRTOS环境下,可以使用熟悉的socket编程,简化网络开发。

引言

看见名字自己就笑了,标题的长度已经快赶上日本轻小说了,正好最近在追无职转生。
说回正题,上篇文章介绍了如何从零开始使用CubeMX生成一个带有freeRTOS操作系统的程序,嵌入式进阶指南以及必备知识学习路线,朋友们可以去看一下,这篇文章我将开始重头戏,如何在STM32F407上移植lwip实现TCP通信,最终实现一个httpd服务器。

自己写的另外两篇文章
从零开始Cubemx配置STM32搭载freeRTOS实现多路ADC(一)
从零开始使用CubeMX配置STM32使用lwip实现httpd服务器(三)
CubeMX配置STM32实现httpd服务器CGI功能并使用网页控制STM32单片机(四)

CubeMX配置以太网以及LWIP实现一个回环功能(裸机)

实现这个功能需要配置2部分,一部分的EHT也就是以太网的配置,另一部分是lwip协议栈的配置

ETH配置

ETH的配置主要有三个器件,单片机,物理网卡(在本文中我们使用的是LAN8720A芯片)以及网口。在这里面最重要的是物理网卡,单片机ETH的配置主要以物理网卡为主,与其电路连接有关系。LAN8720A的知识主要看这一篇文章 https://blog.csdn.net/sinat_20265495/article/details/79628283?spm=1001.2014.3001.5506
在这里插入图片描述
现在开始使用Cubemx配置ETH,在Connectivity选择中选择ETH
在这里插入图片描述
MII(Medium Independent Interface)是IEEE802.3u规定的一种介质无关接口,主要作用是连接介质访问控制层(MAC)子层与物理层(PH-Y)之间的标准以太网接口,负责MAC和PHY之间的通信。由于MII需要多达16根信号线,由此产生的I/O口需求及功耗较大,有必要对MII引脚数进行简化,因此提出了RMII(Reduced Medium Independent Interface,精简的介质无关接口),即简化了的MII。更详细的看这篇文章 https://blog.csdn.net/fun_tion/article/details/70270632
采用MII接口,PYH的时钟频率要求25M,不需要与MAC层时钟一致。
采用RMII接口,PYH的时钟频率要求50M,需与MAC层时钟一致,通常从MAC层获取该时钟源。
现在一般都用RMII模式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

LWIP配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来生成代码就可以了
在主函数中,添加这两个函数
在这里插入图片描述
实现回环代码,新建一个tcpecho.c文件,代码

#include "tcpecho.h"
#include "lwip/netif.h"
#include "lwip/ip.h"
#include "lwip/tcp.h"
#include "lwip/init.h"
#include "netif/etharp.h"
#include "lwip/udp.h"
#include "lwip/pbuf.h"
#include <stdio.h>	
#include <string.h>


static err_t tcpecho_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
{
   
   
  
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值