STM32H7以太网应用

文章索引

信息源

文件结构

  • ethernetif.c
    • 管理ETH外设内存数据结构,如Tx/Rx DMA Descriptor、RxPool(接收缓冲)等
    • 管理ETH的MAC层信息,如MAC地址、MTU、PHY接口协议、链路信息等MAC层的配置
    • 管理ETH接口来的数据,当ETH中断发生时传递Semaphore、Mutex等
    • 注意:
      1. 库版本1.10.0中对RxPool的声明不完整需要手动补充
      2. 使用STM32CubeIDE时,Tx/Rx DMA Descriptor、RxPool需要在链接器ld文件中配置内存地址
      3. “INTERFACE_THREAD_STACK_SIZE”宏定义即”EthIf”任务的栈大小,改到500可以满足TCP和UDP,默认值350会造成溢出
      4. “ethernet_link_thread”函数即”EthLink”任务的函数,生成的代码中链路状态改变时没有使能ETH中断,需要手动修改
  • lwip.c
    • 初始化所有以太网内容,包括lwip层(包括dns、arp、tcp、udp等)、tcpip任务、链路层等
    • 注意:
      1. 使用”netif_set_status_callback()”连接到协议栈状态改变回调函数,可以在网络接口Up/Down/IP获取时等变化时被调用以获取信息
      2. 使用”netif_set_link_callback()”连接到链路状态改变回调函数,可以在链路Down时清除IP信息,在链路Up时调用”dhcp_start()”获取IP
  • lwipopts.h
    • 配置lwip选项、参数等,该文件有更高的优先级
    • 注意:
      1. 使用”LWIP_TCP_KEEPALIVE”等宏定义配置TCP的KeepAlive机制,在TCP客户端离线时能够主动切断连接释放资源