在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的生命周期管理?

推荐阅读最新更新时间:2024-11-12 10:21

stm32f407之EXTI(操作寄存器)
六、EXTI 外部中断/事件控制器包括用于生成高达23个事件/中断的请求。每条中断线可独立配置选择类型(响应或挂起)和相应的触发事件(上升或下降或两者)。每一中断线可以独立屏蔽。有一个挂起寄存器维持中断线的状态请求。 EXTI线0~15连接到PX0~15(可编程配置) EXTI线16连接到PVD的输出事件 EXTI线17连接到RTC报警事件 EXTI线18连接的USB OTG FS唤醒事件 EXTI线19连接到以太网唤醒事件 EXTI线20连接的USB OTG HS(在FS配置)唤醒事件 EXTI线21连接到RTC的篡改和TimeStamp事件 EXTI线22连接到RTC唤醒事件 设置步骤: 1.
[单片机]
基于STM32F407最小系统板三种矩阵键盘实现方法
这里采用的八个端口为PA0-PA7。 此处先给出矩阵键盘的原理图: 一、八个端口采用开漏输出,配置上拉电阻,实现同51一样的双向IO口功能。 //按键初始化函数 void KEY_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIOA GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.GPIO_P
[单片机]
基于<font color='red'>STM32F407</font>最小系统板三种矩阵键盘实现方法
STM32F407 ADC DMA 采样实验
最近公司又做了一款407的样板,正好需要用到407的ADC功能,需要用PC.2来检测RFID芯片的射频电源功率,首先看了下407的数据手册 iframe id="iframe_0.45073829567991197" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22https://home.eeworld.com.cn/data/attachment/album/201410/08/181130bnnyxoy20j8qyame.jpg?_=5758081%22%20style=%22border:none;max-width:1440px%22%
[单片机]
<font color='red'>STM32F407</font> ADC DMA 采样实验
STM32F407.FLASH 读写经验
现象: 如下代码: //从指定地址开始写入指定长度的数据 //该函数对OTP区域也有效!可以用来写OTP区! //OTP区域地址范围:0X1FFF7800~0X1FFF7A0F //WriteAddr:起始地址(此地址必须为4的倍数!!) //pBuffer:数据指针 //NumToWrite:字(32位)数(就是要写入的32位数据的个数.) void STMFLASH_Write(u32 WriteAddr,u32 *pBuffer,u32 NumToWrite) { u8 status=0; u32 addrx=0; u32 endaddr=0; if(WriteAddr
[单片机]
STM32F407.FLASH 读写经验
STM32F407玩控制—继电反馈法PID参数自动整定
继电反馈法PID参数自动整定原理如图1所示和图2所示(参见Astrom 《Adaptive Control》),也有文献称为极限环法PID参数自动整定,图1中当系统整定开关切在T位置时,由于继电特性作用,系统强制发生振荡,测出振荡周期Tu和系统增益Ku,就可确定PID参数,具体Ku=4*d/(π*a),式中a为系统输出一次谐波分量的幅值,d为继电特性环节输出幅值,此时,PID参数可设定为:Kc=0.6*Ku,Ti=0.5*Tu,Td=0.125*Tu,当系统有干扰时,采用有回滞特性的继电环节更好些,可以克服干扰的影响,相关计算公式不变,继电反馈法PID参数自动整定效果如图3所示,当系统处于自动整定状态时,如果当pv =sp+h,继
[单片机]
用<font color='red'>STM32F407</font>玩控制—继电反馈法PID参数自动整定
基于Stm32F407的多路(6路)步进电机速度控制函数
应学弟们的要求特意将步进电机的速度控制函数完善。 重点:这里只是速度控制函数, 没有加减速曲线! 没有记录步数! 只是简单的把步进电机当成直流电机用! 很初级的一个程序! 程序的下载链接在这里 开发平台Keil5 单片机 Stm32F407 接下来 我就程序的实现过程给大家进行分享 第一部分是实现的机制介绍 详细链接 在这里!主要就是通过修改 PSC和ARR寄存器的值,我们可以修改 定时器的溢出频率!而我们的定时器模式设置成 PWM输出模式, CCR寄存器 我们设置一个较小的值*(我们要控制脉冲的频率 ,所以单个脉冲的宽度是我们不关心的!) 修改了 PSC 和ARR值之后 我们就可以实现对步进电机的速度进行控制
[单片机]
基于<font color='red'>Stm32F407</font>的多路(6路)步进电机速度控制函数
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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