嵌入式技术论坛
直播中

尚文清

7年用户 1502经验值
私信 关注
[问答]

STM32F407以太网在驱动层发送函数中等不到HAL解锁造成死循环咋办?

芯片STM32F407ZGT6,RTT版本4.0.4。
问题描述
用tcp方式跟上位机建立长连接,心跳包10s一次,每次上电时通信正常,过10至20分钟之后,突然卡死,运行灯停止闪烁,没有任何错误日志。进入调试模式发现卡死在rt_stm32_eth_tx()函数中等待解锁的死循环中:
while (EthHandle.Lock == HAL_LOCKED),一直没找到解决方法。
请问有大佬遇到过这个情况吗?或者帮忙分析下可能的问题原因?
2.jpg

回帖(3)

杨平

2023-4-27 11:36:38
没有遇到过题主的问题,但是想问一下题主有没有把什么数据放在了CCRAM(起始地址是0x10000000的那块RAM)里面
举报

杨海清

2023-4-27 11:36:49
你查一下优化等级,我设置为-o2就会出现这个问题,-o0就不会;或者你在lock的那个变量前加volatile
举报

杨海清

2023-4-27 11:36:54
移植iperf测试,这个问题很快就会出来。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分