关于CH32V307在freertos中使用ETH的问题

在我的工程中使用ETH做网络数据收发,ETH程序部分是移植官方例程中ETH中TCP server部分程序。现工程中总共有6个任务,ETH任务优先级最高,且任务中循环如下图所示,但在实际测试中发现程序在运行一段时间之后,通过ping 设备的IP会出现网络延时(延时时间在几百ms到5000ms不等),并且偶尔会出现无法连接的情况。

image.png

image.png


我想问一下出现这种问题的具体原因是什么?现在ETH例程都在裸机中运行,现目前官方有关于ETH的在freertos中运行成熟的例程程序吗?

您好,附件是V307 freertos+eth的程序,可以看一下

icon_rar.giffreertos_net.zip



你好,我使用你发的例程来运行,是没有问题的,我看了例程里面“WCHNET_TimeIsr(WCHNETTIMERPERIOD);”这段代码放在操作系统的SysTick_Handler中断中的,我们工程中将“WCHNET_TimeIsr(WCHNETTIMERPERIOD);”这段代码是放在TIM2定时器中断中,两者都是10ms才会执行,为什么放在SysTick_Handler中断就不会出现上述问题,而放在TIM2定时器中断中就会出现问题呢?


您好,该函数只是个计数,放在哪里应该都没影响,放在systick主要是为了节省定时器硬件资源,我也试了下放到定时器中,倒是没有出现您说的ping包慢或者无法连接的情况,您也可以降低一下定时器中断的优先级再试一下

image.png

image.png


只有登录才能回复,可以选择微信账号登录