我在使用 NUCLEO‑F767ZI 开发板,RMII 以太网外加 LAN8742A PHY;项目基于 lwIP / TCP‑IP 协议栈。
我观察到一个很怪异的现象如果把`MX_USB_OTG_FS_PCD_Init()`这行注释掉,以太网通信就停止工作;保留这一段初始化,则以太网可以正常运行。
外设初始化顺序如下:
MX_GPIO_Init();
MX_USART3_UART_Init();
MX_LWIP_Init();
MX_TIM3_Init();
MX_SPI4_Init();
MX_CAN1_Init();
MX_UART5_Init();
MX_USB_OTG_FS_PCD_Init();
更多现象观察:
如果仅仅用`HAL_Delay()`替换 USB 初始化函数,以太网依旧不能恢复;
所以看起来不单纯是时序延时问题。
看起来`HAL_PCD_Init()` / `HAL_PCD_MspInit()`在做 USB 初始化的时候,间接开启或者配置了某些以太网运行所依赖的东西。
GPIO 时钟被间接使能;
MSP 或者 NVIC 配置带来的副作用;
某些间接依赖,进而影响了`HAL_ETH_MspInit()`或者 lwIP 协议栈。
有没有其他人遇到过 STM32F767 + LAN8742A + lwIP 这套平台上类似的现象?
|
|