在我的工程中使用ETH做网络数据收发,ETH程序部分是移植官方例程中ETH中TCP server部分程序。现工程中总共有6个任务,ETH任务优先级最高,且任务中循环如下图所示,但在实际测试中发现程序在运行一段时间之后,通过ping 设备的IP会出现网络延时(延时时间在几百ms到5000ms不等),并且偶尔会出现无法连接的情况。
我想问一下出现这种问题的具体原因是什么?现在ETH例程都在裸机中运行,现目前官方有关于ETH的在freertos中运行成熟的例程程序吗?
在我的工程中使用ETH做网络数据收发,ETH程序部分是移植官方例程中ETH中TCP server部分程序。现工程中总共有6个任务,ETH任务优先级最高,且任务中循环如下图所示,但在实际测试中发现程序在运行一段时间之后,通过ping 设备的IP会出现网络延时(延时时间在几百ms到5000ms不等),并且偶尔会出现无法连接的情况。
我想问一下出现这种问题的具体原因是什么?现在ETH例程都在裸机中运行,现目前官方有关于ETH的在freertos中运行成熟的例程程序吗?
你好,我使用你发的例程来运行,是没有问题的,我看了例程里面“WCHNET_TimeIsr(WCHNETTIMERPERIOD);”这段代码放在操作系统的SysTick_Handler中断中的,我们工程中将“WCHNET_TimeIsr(WCHNETTIMERPERIOD);”这段代码是放在TIM2定时器中断中,两者都是10ms才会执行,为什么放在SysTick_Handler中断就不会出现上述问题,而放在TIM2定时器中断中就会出现问题呢?
您好,该函数只是个计数,放在哪里应该都没影响,放在systick主要是为了节省定时器硬件资源,我也试了下放到定时器中,倒是没有出现您说的ping包慢或者无法连接的情况,您也可以降低一下定时器中断的优先级再试一下