本帖最后由 xiaoshen-372360 于 2019-7-10 16:09 编辑 最近在做一个关于STM32F407的Modbus-TCP程序,STM32做服务器,IP固定,在做测试的时候发现了如下问题 测试时间超过2天到3天的时候会出现协议栈死掉的情况,Ping不通 也连不上。 测试环境说明: 我们是这样测试的,电脑通过交换机链接STM32,电脑端使用ModbusPULL测试,测试时间是500ms 收发一次数据,每次读取125个寄存器,每次STM32 返回258个字节,与此同时电脑端开5个Ping 窗口,同时Ping STM32,Ping的字节数为1450,测试两天后出现STM32无法通信,且无法ping通的现象, 查看寄存器后,发现在以太网的DMA寄存器出错了,DMASR寄存器数值变为:0x0066040A(正常运行的时候为:0x00660404) 查看手册后发现是jabber超时。 但是,虽然定位到问题,但是这个问题如何产生的呢?还是不清除,所以小弟请教一下大侠们,为啥会出现这个现象。出现这个问题应该怎么解决呢? |
while(RESET != ((heth->Instance)->DMAOMR & ETH_DMAOMR_FTF));
加在下图所示位置
评分
查看全部评分
没用hall库,用的标准库做的
标准库又如何 原理是一样的。
请问一下为啥要加这一句呢?我看1.4的LWIP的库也没有加这一句。
谢谢了,我去试试看。你原来也遇到这个问题了?