在STM32F407板子上搭建TCP服务器及TFTP服务器

发布者:快乐旅人最新更新时间:2024-06-13 来源: elecfans关键字:STM32F407  TFTP服务器 手机看文章 扫描二维码
随时随地手机看文章

开发平台

STM32F407开发板(带以太网),板子上的PHY为LAN8720A,没有用到显示屏全为串口输出调试信息。实现功能

通过STM32CubeMX在原子STM32F407板子上搭建TCP Server 及 TFTP Server ,实现这些功能非常简单。步骤

功能介绍、工程搭建、工程代码、TFTP 服务器测试

1、TCP Server 实现显示连接上的客户端IP及对客户端发来的数据回传2、TFTP Server 实现IAP功能及读取MCU内部FLASH数据。这里用到的是文件传输协议,主要是参考官方文档UM1709,及官方STM324xG_EVAL的LWIP IAP例子。

工程搭建

外设配置

打开STM32CubeMX,点NEW PROJECT,在左侧的输入框中输入407ZG,在右侧会显示STM32F407ZGT6的MCU列表,选择此列表,双击。设置时钟源为外部时钟开启SWD调试接口,开启ETH外设,选择RMII接口(LAN8720A为RMII接口),中间件里时能LWIP。使用RMII接口的时候软件会自动配置对应的引脚,但是一定要仔细对比软件配置的引脚是否为板子上硬件所连接的。

原子F407板子上的LAN8720A的RMII接口引脚如下图,

  1. 配置时钟外部高速晶振选择为8M,PLL SORCE MUX 选择为HSE,在HCLK处输入168点回车,软件会自动配置好

  2. 中间件配置这里主要配置,ETH、LWIP、串口1、GPIO

  3. 生成工程代码

    点左上角的Project,选择Settings...(不建议直接点黄色的齿轮),点击OK。再点右上方的黄色齿轮即可生成工程代码。

工程代码

1、TCP Server 的实现

看起来代码很多,其实真的不复杂。

大致流程:先新建一个TCB_PCB、开始监听、挂载客户端连接请求回调函数、挂载接收数据回调函数、挂载发送完成回调函数、挂载出错回调函数、挂载心跳包回调函数、关闭连接等,最重要的是释放内存!每收到一个数据链,它已经被申请了内存,所有在处理完这个数据后一定要释放。

2、TCP服务器测试用网络调试助手连接TCP服务器(两者必须在一个网关里面,192.168.000.XXX),网络调试助手里选择TCP客户端,远程主机IP为 192.168.0.120 , 端口号为7

详细测试步骤请点击阅读原文下载。

通过测试,则表示TCP服务器已经完成。您也可以通过手机连接这个路由器的WIFI,通过 网络调试助手APP来连接这个开发板的服务器,电脑可以通过 TCP客户端与开发板的TCP服务器连接同时也可以用手机做TCP客户端连接开发板的TCP服务器。

3、TFTP Server 的实现还是在上面的代码上来实现此功能,即在TCP 服务器的代码上实现TFTP 服务器。打开刚才STM32CubeMX工程,在原来的基础上来配置LWIP。

因为是要通过TFTP 来实现 IAP 功能 ,所有一定有FLASH 的操作,这里我们COPY官方例子里面的flash_if.c和flash_if.h

至此,TFTP服务器搭建完成,下载到开发板,串口显示如下信息:Start 开始监听 挂载客户端连接回调函数 TFTP初始化成功 Static IP address: 192.168.0.120可以通过上面的TCP服务器测试步骤来测试TCP服务器功能,正常测试,工作正常,ping也能通


关键字:STM32F407  TFTP服务器 引用地址:在STM32F407板子上搭建TCP服务器及TFTP服务器

上一篇:LCD1602引脚介绍及STM32单片机驱动LCD1602程序
下一篇:如何使用FlashPro-ARM编程器实现STM32H563/573的生命周期管理?

推荐阅读最新更新时间:2026-03-21 18:01

基于TCP/IP协议的嵌入式网络打印服务器的实现
摘要:运用嵌入式Internet技术,设计了一个基于TCP/IP协议的嵌入式网络打印服务器,给出了系统中TCP/IP协议的剪裁方案,分析了系统软硬件的设计思路,最后通过测试程序验证了其可行性。 关键词:嵌入式 以太网 TCP/IP协议 网络打印 随着信息技术的发展和网络时代的到来,基于TCP/IP协议的嵌入式Internet技术越来越受到人们的关注。目前,大多数嵌入式设备仍处于孤立应用阶段 ,为了实现多个MCU之间的信息共享和交流,通常利用CAN、RS232和RS485等总线组网。但是这些网络的有效半径较短,并且孤立于Internet网络以外,如果能把嵌入式设备直接接入Internet,就可以用方便、低廉的方式实现信息的共享
[嵌入式]
STM32F407 ------ 使用定时器实现精确延时
测试环境:主频168M #include delay.h void delay_init() { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); TIM_TimeBaseStructure.TIM_Period = 83; TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.
[单片机]
SPI 串行Flash闪存W25Q128FV 的使用(STM32F407)_硬件篇
1 性能概述  W25Q128BV的主要性能如下 通讯方式:为标准104MHz串行SPI方式,还可以双倍速204MHz和4倍速416MHz访问。 容 量:128Mbit,65536Page。 因为8 bit =1 byte , 256 byte=1Page 、16Page=1Secotr、16Secotr=1Block 所以W25Q128BV有:256 Block 4096 Secotr 65536 Page 16777216 byte W25Q128写入前必须先
[单片机]
SPI 串行Flash闪存W25Q128FV 的使用(<font color='red'>STM32F407</font>)_硬件篇
stm32F407(TJA1050)CAN通信成功--Apple的学习笔记
一,前言 最近我在公司玩单片机玩的不亦乐乎,好多开发板供我玩,总算MCU底层现在算告一段落。现在我又开始玩自己的开发板咯,之前stm32先移植了一个can,目的是测试买的TJA1050模块,以及自己买的canable设备。结果can不通,不过我用了公司开发板,验证了canable是正常的。TJA1050之前玩linux的时候也验证过是正常的。那么剩下的问题就是stm32我移植的can有问题。 二,瞬间解决问题 移植的can怎么会有问题呢?先猜测下复用引脚错误或者波特率选择的clock源不同导致波特率错误。果然看了code果然是这个原因。连示波器都不需要看了。 由于F429的主频为180M,而F407的主频为168M导致的原因。
[单片机]
学习STM32F407入门后的感受
我之前在了解OpenCL的时候,看过一本书里面介绍了通用处理器和专用处理器的区别,以及为什么CPU会发展到多核心。这些知识在我学习STM32开发的时候呼应上了。那本书上写道,CPU分为专用和通用的。我的理解是比如路由器中的CPU只需要数据交换,就属于专用的CPU。而我们平时家用的英特尔和AMD的CPU属于通用处理器。使用通用CPU来处理数据交换,当然是可以使用的。只不过有些电路一定使用不到。这些电路白白花钱,浪费增加成本了。因为路由器只是交换数据不用做其他用途。所以,专门的用途要使用专门的的处理器。那么,不知道读者你,还有没有这样的疑问?为什么CPU要分出许多核心,难道不能做出一个很强的单核心CPU吗?那本书中也给出了回答。一个处
[单片机]
UCOSII在STM32F407上的移植
1、ucosii移植准备工作 1.1准备基础工程: 移植的时候需要一个基础工程,为了方便起见我们就选取跑马灯实验,作为ucossii移植的基础工程。 1.2Ucossii源码: 1)Micrium官网下载 2)开发板光盘自带 2、Ucossii移植步骤 1)step1 在基础工程文件夹中先建立UCOSII文件夹,然后在基础工程中UCOSII下建立相应的文件夹:CONFIG、CORE和PORT。 2)step2 向core文件夹中添加文件, 3)step3 向CONFIG文件夹中添加文件, 4)step4 向PORT文件件中添加文件, 5)step5 将Ucosii源码添加到工程中,打开工程,选择 新建三个分组:
[单片机]
UCOSII在<font color='red'>STM32F407</font>上的移植
STM32F407 基本定时器配置输出PWM方波
介绍STM32F407定时器PWM波形输出配置方式。 通过逻辑分析采集波形数据进行可视化显示对比。 【1】定时器PWM功能介绍 STM32F4 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达4路的PWM输出! 【2】PWM波形输出通道介绍 ** 定时器3的硬件PWM通道:PA6 PA7 PB0 PB1** 下面截图是介绍定时器3通道的复用IO口模式配置方式 【3】配置PWM波形输出代码示例 在工程中增加pwm.c文件,写入以下代码 #include pwm.h
[单片机]
<font color='red'>STM32F407</font> 基本定时器配置输出PWM方波
STM32F407 GPIO口输入配置配置步骤
介绍 STM32 F407新建 寄存器 工程流程,介绍输入模式的配置方式,以按键为例完成按键输入 检测 。 【1】F407建工程所需依赖文件 【2】新建工程 【3】分析KEY按键 硬件 原理图 【4】编写KEY按键驱动代码 查看数据手册: key.c文件代码如下: #include key.h /* 函数功能:按键初始化配置 硬件连接: KEY0 --- PE4 按下为低电平 KEY1 --- PE3 按下为低电平 KEY2 --- PE2 按下为低电平 KEY_UP-- PA0 按下为高电平 */ void KEY_Init(void)
[单片机]
<font color='red'>STM32F407</font> GPIO口输入配置配置步骤
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved