ch32v307使用freertos系统移植UDPClient的例程

我现在想UDPClient 单独一个任务,发现只要一开启UdpClientTask 这个任务 其他的两个任务也停止了。如果屏蔽掉UdpClientTask 是其他两个任务是可以单独跑起来的。

发现只要屏蔽掉UDP网络这部分程序就能跑其来不懂什么问题。网络任务是参考 UDPClient 的程序,定时器中断都已经开启。能进定时器2中断。

例程:

icon_rar.gifch32v_learning.rar


#define UDP_CLIENT_TASK_PRIO        5

#define UDP_CLIENT__STK_SIZE        2048

void UdpClientTask(void *pvParameters);

1660467116434825.png

1660467116171872.png

1660467116437522.png


/*********************************************************************

 * @fn      ETH_IRQHandler

 *

 * @brief   This function handles ETH exception.

 *

 * @return  none

 */

void ETH_IRQHandler(void)

{

    WCHNET_ETHIsr();

}


/*********************************************************************

 * @fn      TIM2_IRQHandler

 *

 * @brief   This function handles TIM2 exception.

 *

 * @return  none

 */

void TIM2_IRQHandler(void)

{

    WCHNET_TimeIsr(WCHNETTIMERPERIOD);

    TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );

}



您好,当程序包含RTOS的时候,中断的声明方式采用__attribute__((interrupt()))声明,如下图。此外,若FLASH和RAM大小配置为192+128的时候,建议初次下载使用WCHISPTool工具下载,下载选项配置为RAMX 128KB+ROM 192KB。WCHISPTool工具下载链接如下。后续若有问题,可通过邮箱(lzs@wch.cn)和我沟通

WCHISPTool:/downloads/WCHISPTool_Setup_exe.html 

image.png

image.png


谢谢回复,我按照你的试了,依然不可以。只要一开启UDP的任务其他任务也停止了。


一看就知道udp任务优先级最高,并且没有阻塞,所以一直只调度udp的任务


三个的任务优先级都一样的UDP任务也跑不起来。改成UDP任务优先级最高然后加入阻塞,UDP任务和其他任务也依然跑不起来.


您好,看您的代码,您这个以太网库使用的是之前的旧库,旧库这边因为中断没有封出来,所以会出现线程调度起来了,中断才会打开,这个会导致以太网的异常,您可以将这里修改试一下

image.png


也可以去官网下载新的307以太网协议栈解决这个问题。


和我碰到的问题一样,感觉网络这个线程一旦让出去就回不来了。。。希望大佬们早点看到


和我碰到的问题一样,感觉网络这个线程一旦让出去就回不来了。。。希望大佬们早点看到 +1

我使用的是新的网络库。ide也是最新版本,用ide创建的工程,然后加入的网络库。

SystemClk:144000000 Kernel Version:V10.4.6 NetLib Version:14

如果有最新的解决方案,麻烦联系我邮箱或者网站圈我,谢谢。邮箱:个人信息保护,已隐藏



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