参考火哥的lwip教程,还有 https://www.hexcode.cn/article/show/stm32-ethernet8

啊啊

增加了对lwip的初始化, LwIP_Init函数用于初始化 LwIP协议栈,一般在 main 函数中调用。首先是内存相关初 始化,mem_init函数是动态内存堆初始化,memp_init函数是存储池初始化,LwIP是实现 内存的高效利用,内部需要不同形式的内存管理模式。 还有就是对静态ip地址,mac地址,掩码,网关的设置。如下:

然后就是添加了ETH_CheckFrameReceived,检测接收到数据包的函数。然后对数据包进行相应的处理。

LwIP_Pkt_Handle 函数用于从以太网存储器读取一个以太网帧并将其发送给 LwIP,它 在接收到以太网帧时被调用,它是直接调用 ethernetif_input 函数实现的,该函数定义在 ethernetif.c文件中。

接着是一个被无限循环调用的函数:LwIP_Periodic_Handle

LwIP_Periodic_Handle 函数是一个必须被无限循环调用的 LwIP支持函数,一般在 main函数的无限循环中调用,主要功能是为 LwIP各个模块提供时间并查询链路状态,该 函数有一个形参,用于指示当前时间,单位为 ms。 对于 TCP功能,每 250ms执行一次 tcp_tmr函数;对于 ARP(地址解析协议),每 5s 执 行一次 etharp_tmr函数;对于链路状态检测,每 1s 执行一次 ETH_CheckLinkStatus 函数; 对于 DHCP功能,每 500ms执行一次 dhcp_fine_tmr函数,如果 DHCP处于DHCP_START 或 DHCP_WAIT_ADDRESS 状态就执行 LwIP_DHCP_Process_Handle 函数,对于 DHCP功 能,还有每 60s 执行一次 dhcp_coarse_tmr函数。

然后用wireshark抓包的时候,比较奇怪。如下:

奇怪的地方就是,我初始化的时候只发送了上面的第二个数据包,也就是192.168.2.240的(使用DP83848Send(mydata, 60); 发送的),第一个数据包是192.168.1.122发的,这个我并没有发送,按逻辑推算,这应该是 在 LwIP_Init(); 初始化ip,mac的时候发送的。而且两个数据包都是请求包,也就是opcode=1。找了一下没找到程序是在什么时候发送出去的。。

最后串口助手输出如下:

也就是收到数据包了,可是并不知道收到了啥。

显然,我这个程序设计得不合理,本来以为ping一下会触发LwIP_Periodic_Handle 里的字符串打印函数的,结果想太多了。 没错,接着再设计一个程序,要把收到的数据包打印出来。

在局域网中ping 单片机ip的报文:

注意,这里ping是一个icmp报文,data里面基本就是26个字母。

然后

lwip接收文件 stm32_接收数据相关推荐

  1. win7 解决飞秋无法接收文件(准备接收)问题

    http://zhaolongchn.blog.163.com/blog/static/190658504201242011849320/ 很长一段时间我的飞秋能发送文件但无法接收文件,总是提示准备接 ...

  2. Android 蓝牙开发(五)OPP接收文件

    原址 1 创建rfcomm层sever 要想通过蓝牙接收文件,首先要打开蓝牙.所以先从打开蓝牙进行分析.  BluetoothOppReceiver在AndroidManifest.xml文件中进行了 ...

  3. Django模板、配置文件、静态文件及案例实现(创建模板、设置模板查找路径、模板接收视图传入的数据、模板处理数据、BASE_DIR、DEBUG、本地语言与时区、App应用配置)

    1.Django模板 网站如何向客户端返回一个漂亮的页面呢? 漂亮的页面需要html.css.js. 可以把这一堆字段串全都写到视图中, 作为HttpResponse()的参数,响应给客户端. 存在的 ...

  4. java接收流文件并返回数据

    java接收流文件并返回数据 @RequestMapping(value="/updateStatus") public Object updateStatus(HttpServl ...

  5. Spring MVC--自定义HttpMessageConverter接收JSON格式的数据

    替换默认的Jackson,使用fastjson来处理json格式的数据. index.jsp <%@ page language="java" contentType=&qu ...

  6. Android官方开发文档Training系列课程中文版:通过NFC共享文件之从其它设备接收文件

    原文地址:http://android.xsoftlab.net/training/beam-files/receive-files.html Android Beam文件传输系统会将文件拷贝到接收设 ...

  7. form表单、控制器中接收表单提交数据的4种方式

    Form表单 这篇文章主要讲的是form表单的提交 之前我们接触过的form表单元素是在Bootstrap框架里面,这次也将用到Bootstrap框架去布局(见图表1)通过Bootstrap框架布局呈 ...

  8. php接收不到post数据_PHP解决Vue发起POST请求,接收不到数据

    刚开始使用vue对接后端接口时,PHP后端一直接受不到前端传的参数.找了很久,发现vue请求接口传参的形式是流的方式,因此后端要在接受数据的方面做一些改变.这里我用的是PHP原生方法file_get_ ...

  9. 如何让CDC类USB设备批量接收64字节以上数据

    很多STM32开发者在实现CDC类虚拟串口与PC主机通信过程中,有时会遇到点麻烦而不得其解.那就是当主机端单次发送的数据不超过64字节时,接收正常.一旦发送数据量大于64字节时就接收失败,总是出现丢包 ...

最新文章

  1. 菜鸟学Java(十九)——WEB项目测试好帮手,Maven+Jetty
  2. Python:glob模块
  3. SQL server 2012 如何取上个月的最后一天
  4. OllyDbg的一些快捷键
  5. spring roo_使用Spring Roo进行快速云开发–第1部分:Google App Engine(GAE)
  6. java 实现excel样式设置(居中、字体、大小、换行、合并行,列宽、指定特定字符串样式等)
  7. C++11 并发指南七(C++11 内存模型一:介绍)
  8. Python知识点之Python面向对象
  9. 内核aio_linux内核aio功能
  10. javascript如何用户的判断操作系统
  11. 【简单思考】noip模拟赛 NTR酋长
  12. 3个开源TTS(一)—安装使用
  13. node.js(五)项目创建管理
  14. 持久化存储与HTTP缓存
  15. 萌新小白,求大神解答
  16. PHP更换网页背景,更换网页的背景图
  17. 戴尔服务器r620引导盘,戴尔R620服务器WINDOWS的操作系统无引导盘安装方法.ppt
  18. Mr. Kitayuta vs. Bamboos[二分+贪心][图像分析]
  19. PMI-ACP练习题(7)
  20. 引擎入门 | Unity UI简介–第1部分(1)

热门文章

  1. 深入java抽象类和接口
  2. 3.1.4 操作系统之内存的分配与回收
  3. python素数判断代码_Python 判断101-200之间有多少个素数,并输出所有素数
  4. 51单片机之串口通讯应用实例(逻辑分析仪调试)
  5. 制作一个状态栏中跑马灯效果_snapseed制作“照片中的照片”画中画效果的方法...
  6. 请在请求中携带deviceid参数_日常工作中最容易犯的几个并发错误,你中了几个?...
  7. python配置日志的几种方式
  8. Flask开发微电影网站(二)
  9. Android之BroadcastReceiver的使用
  10. Js中for循环的阻塞机制