[STM32F4] MX_LWIP_Init()运行时,进行DHCP并在dhcp_start()后失败

[复制链接]
 楼主| lilaiju 发表于 2025-3-10 10:00 | 显示全部楼层 |阅读模式
queue.c中代码:configASSERT(!((xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED) && (xTicksToWait != 0)));
在设备配置中选择了以下选项用于系统时钟源:USB_HOST、LWIP、FREERTOS、FATFS、USART1、USART3、USART6、UART7、UART8、ETH和TIM1。
我没有添加任何代码,但当生成的MX_LWIP_Init()运行时,进行DHCP并在dhcp_start()后失败。

flycamelaaa 发表于 2025-3-10 15:19 | 显示全部楼层
检查是否有代码在不应该的时候挂起了调度器。
powerantone 发表于 2025-3-10 16:20 | 显示全部楼层
资源竞争或优先级问题
stormwind123 发表于 2025-3-10 17:03 | 显示全部楼层
考虑使用优先级继承或二值信号量等机制
probedog 发表于 2025-3-10 21:00 | 显示全部楼层
检查时钟配置代码,确保所有外设的时钟都已正确启用和配置。
classroom 发表于 2025-3-10 23:00 | 显示全部楼层
检查硬件连接和配置
公羊子丹 发表于 2025-3-13 08:20 | 显示全部楼层
你的 LWIP 是 FreeRTOS 模式还是 裸机?如果是 FreeRTOS,检查 lwipopts.h 里 LWIP_TCPIP_CORE_LOCKING 设置对不对。
周半梅 发表于 2025-3-13 08:22 | 显示全部楼层
DHCP 失败有很多原因,先 ping 一下看看 STM32 有没有获取到 IP 地址,如果没有,可能是 网络初始化 问题。
帛灿灿 发表于 2025-3-13 08:23 | 显示全部楼层
configASSERT(!((xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED) && (xTicksToWait != 0))) 这个错一般是 FreeRTOS 任务调度问题,看看 MX_LWIP_Init() 是在哪个上下文里调用的?
童雨竹 发表于 2025-3-13 08:25 | 显示全部楼层
DHCP 失败可能是 ETH 没初始化好,建议用 MX_LWIP_Init(); 之后 HAL_ETH_ReadPHYRegister() 读取 PHY 状态,看看有没有 Link Up。
万图 发表于 2025-3-13 08:26 | 显示全部楼层
试试 LWIP_DHCP_FINE_TIMER_MSECS 和 LWIP_DHCP_COARSE_TIMER_MSECS 这些定时器参数,确保 sys_check_timeouts() 在正确调用。
Wordsworth 发表于 2025-3-13 08:27 | 显示全部楼层
你的 ETH 是 MII 还是 RMII 模式?不同的 PHY 可能有不同的 初始化要求,最好检查 PHY 地址 和 时钟配置 是否匹配。
Bblythe 发表于 2025-3-13 08:29 | 显示全部楼层
tcpip_init() 是在 MX_LWIP_Init() 里调用的吗?如果 TCP/IP 任务 没起来,DHCP 可能没法正常工作。
Pulitzer 发表于 2025-3-13 08:30 | 显示全部楼层
DHCP 服务器在哪?如果是 路由器,看看 MAC 地址 是否被过滤,或者 IP 地址池 够不够用。
Uriah 发表于 2025-3-13 08:32 | 显示全部楼层
试着 手动分配 IP,先 关闭 DHCP,直接用 netif_set_addr() 赋一个 静态 IP,看看能不能正常通信。
Clyde011 发表于 2025-3-13 08:33 | 显示全部楼层
UART、FATFS、USB_HOST 这些会不会影响 ETH 任务?如果 任务优先级 乱了,可能 DHCP 任务根本没执行到。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

39

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部