• 【一、stm32cube使用LWIP测试注意事项及配置备忘(FreeRTOS)】LAN8720A


    前言

    必须先知道,cube配置lwip是个极其简单的事情,想复杂往往就真复杂了。
    这里我的环境是(看着多,其实就是几个勾)

    • cubeV6.3
    • LWIPv2.1.2`
      • 默认开启DHCP,只插网线就好,本地ip和子网掩码这些不需要配置
    • stm32f407ZGTx
    • FreeRTOSv10.3.1
    • CMSIS-RTOSv1.0.2

    ETH外设配置

    • PHY配置[必须正确]
    • PHY地址配置[必须正确]
    • MAC配置[可选]
    • GPIO配置[必须正确,检查RMII接口引脚是否和自己的一样,不一样要改过来]

    在这里插入图片描述
    直接选8742A这个,真方便啊。。。
    在这里插入图片描述
    RMII接口引脚会自动生成,但未必和我们实际使用的电路图引脚相同,不对的要改过来。另外一个复位引脚根据自己的IO配置成普通输出就好
    在这里插入图片描述
    在这里插入图片描述

    *PHY复位代码添加

    位置:main()->MX_FREERTOS_Init()->osThreadDef():创建的缺省任务StartDefaultTask()->MX_LWIP_Init()->netif_add()的形参函数: ethernetif_init(),这里也可以配置HOSTNAME->low_level_init()这里可以看到上面的MAC配置->HAL_ETH_Init()->HAL_ETH_MspInit()重于找到了,不想一层层往下找直接搜索HAL_ETH_MspInit就好了
    然后添加三行代码,把复位引脚拉低50ms再置高就完成了
    (注:代码块放置在用户代码区,这样下次cube生成后我们添加的代码还在)
    在这里插入图片描述

    LWIP配置

    甚至不需要别的配置了。。
    这时候插上网线应该就能在路由器的客户端里面看到连接了,只是主机名是个*号, 也可以看到开发板IP,主机ping开发板IP也可以ping

    HOSTNAME配置

    在这里插入图片描述
    这样默认会生成一个"lwip"的主机名,连接路由器可以看到
    如果需要修改,
    位置:main()->MX_FREERTOS_Init()->osThreadDef():创建的缺省任务StartDefaultTask()->MX_LWIP_Init()->netif_add()的形参函数: ethernetif_init()
    改成需要的就好了
    在这里插入图片描述

    其他一些默认配置情况

    • RAW API 默认未开启
      在这里插入图片描述

    • NETCONN API 默认已开启
      在这里插入图片描述

    • Socket API 默认已开启
      在这里插入图片描述

    另外注意:

    • 测试收发时特别注意自己电脑的防火墙,可以先用局域网内其他电脑ping自己的电脑看看,ping不通先关闭自己的防火墙,电脑之间相互ping的通再测试开发板(我就是那个没关防火墙调试的人才。。)
  • 相关阅读:
    【云计算&大数据_牛客_Hbase】选择/判断——Hbase
    [C/C++]数据结构 LeetCode:用栈实现队列
    PS4 + ESP32 制作无线遥控器
    「Java开发指南」如何在Spring中使用JAX-WS注释器?
    没有英语要求的中国人大女王金融硕士有多香你可能还不知道
    ThinkPHP5,使用unionAll取出两个毫无相关字段表的数据且分页
    Vuex有几种属性以及它们的意义
    Java反射知识总结、Java内存分析、通过反射动态创建对象、操作泛型、注解
    鸿蒙开发:【进程模型概述】
    对于Docker和Podman的一点使用经验
  • 原文地址:https://blog.csdn.net/a1058191679/article/details/126576637