用CH32V307开发一个基站设备,无法同时处理网络状态轮询和业务功能

正在基于CH32V307开发一套UWB定位系统,其中基站部分要实现与UWB标签的通讯,并将通讯结果通过网口传到上位机。


基站中的软件基于Exam的DHCP项目进行修改,能够分别实现网络通讯、UWB通讯。但两者同时运行时,网络功能就失效了。


      // 这是main函数的主循环部分  

    while(1)
    {
      // 网络通讯部分,能够实现网络连接状态检测、掉线自动重进连接等功能
        /*Ethernet library main task function,
         * which needs to be called cyclically*/
        WCHNET_MainTask();
        /*Query the Ethernet global interrupt,
         * if there is an interrupt, call the global interrupt handler*/
        if(WCHNET_QueryGlobalInt())
        {
            WCHNET_HandleGlobalInt();
        }
        
      // UWB业务部分,通过spi1驱动uwb芯片
        // 这一部分不开启,前面的网络部分能够正常运行;
       // 这一部分启用后,前面网络部分就不能正常运行了。
       //        已经连接成功的网络,上位机下发数据无应答,断开后设备不会主动重连
       //        感觉是在主循环中执行了其他的耗时操作,WCHNET_QueryGlobalInt就无法准确获取网络状态
        Measure_Dist();
    }


请问专家有何建议。

您好,建议开启定时器中断,将网络部分放于定时器中断中,或使用操作系统,为网络与UWB创建两个任务。以保证两个互不影响。


多谢张工的回复,追加两个问题:

1、是否有您回复中提到的在定时器中断中处理网络状态的例子;

2、应用手册中提到ETH中断,是否指网络状态变化直接引起中断,如果是的话,能否提供一个ETH中断应用的例子


您好,可以留个邮箱,例程通过邮箱发您。


邮箱地址已私信


例程已发送,请查收。


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