[STM32H7] UART 中断与以太网存在冲突

[复制链接]
95|18
梧桐uuu 发表于 2025-10-31 14:10 | 显示全部楼层 |阅读模式

在 STM32H753 的定制开发板上使用的设备包括多个 UART、FMC、以太网、I2C 和几个定时器。
系统采用 FreeRTOS 和 LwIP。
在 main () 函数中,就在 osKernelStart () 之前,我以中断模式从 USART6 读取数据,使用的是 HAL_UART_Receive_IT 函数。
但 USART6 中断从未触发,HAL_UART_Receive_IT 也接收不到任何字节。
USART6 配置为普通异步模式,无流控。
阻塞模式的 HAL_UART_Receive () 能正常工作,所以 UART 本身是启用且配置正确的。
中断在 Cube 生成的代码中已启用:
  HAL_NVIC_SetPriority(USART6_IRQn, 6, 0); // tried also priority 0
  HAL_NVIC_EnableIRQ(USART6_IRQn);
当 HAL_UART_Receive_IT 超时后,ISR 中的 USART RXNE 中断处于挂起状态,
但 IABR 中的 NVIC 位(IABR [2] 的第 7 位)却是清零的!
之后我注释掉了 MX_LWIP_Init 调用,USART6 中断就恢复了正常工作。
为什么以太网和 LwIP 初始化会阻塞 USART6 中断?
我需要以太网和 USART6 能同时工作在中断模式下。

classroom 发表于 2025-10-31 16:37 | 显示全部楼层
LwIP或以太网初始化可能修改了中断优先级,导致USART6的中断被屏蔽。
elephant00 发表于 2025-10-31 16:39 | 显示全部楼层
LwIP初始化可能禁用了某些中断,或者占用了USART6的中断向量。
spicy 发表于 2025-10-31 16:43 | 显示全部楼层
中断向量表冲突
stormwind123 发表于 2025-10-31 16:44 | 显示全部楼层
FreeRTOS与HAL中断可能不兼容
OKAKAKO 发表于 2025-10-31 17:10 | 显示全部楼层
系统采用 FreeRTOS 和 LwIP
七毛钱 发表于 2025-10-31 17:15 | 显示全部楼层
USART6优先级要高于以太网中断
cr315 发表于 2025-10-31 17:37 | 显示全部楼层
中断优先级问题吧
内政奇才 发表于 2025-10-31 18:25 | 显示全部楼层
延迟LwIP初始化看看
duo点 发表于 2025-10-31 18:38 | 显示全部楼层
可能是NVIC配置冲突
flycamelaaa 发表于 2025-10-31 18:39 | 显示全部楼层
可能USART6和以太网控制器共享同一个中断线,导致冲突。
onlycook 发表于 2025-10-31 19:10 | 显示全部楼层
检查CubeMX生成的代码中,LwIP初始化部分是否修改了NVIC的设置,或者是否启用了某些全局中断屏蔽。
海滨消消 发表于 2025-10-31 19:16 | 显示全部楼层
LwIP初始化可能占用大量内存,导致UART中断处理函数栈溢出。用configTOTAL_HEAP_SIZE调整堆大小。
jcky001 发表于 2025-10-31 19:40 | 显示全部楼层
LwIP初始化可能占用了某些资源,影响UART中断。
onlycook 发表于 2025-10-31 20:41 | 显示全部楼层
调整中断优先级,确保USART6的优先级高于或与LwIP相关的中断优先级兼容。
豌豆爹 发表于 2025-10-31 20:46 | 显示全部楼层
检查以太网PHY和UART是否共享时钟线,避免信号干扰。
probedog 发表于 2025-10-31 21:42 | 显示全部楼层
检查LwIP初始化代码中是否禁用了全局中断,或者修改了NVIC的设置。
solty 发表于 2025-10-31 22:42 | 显示全部楼层
检查内存分配和资源使用,避免LwIP初始化占用过多资源导致中断问题。
szt1993 发表于 2025-10-31 23:03 | 显示全部楼层
系统采用 FreeRTOS 和 LwIP。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

68

帖子

0

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