CH32V307 USBHS 发送数据异常

大家好,我最近发现CH32V307 USB中断的一个问题:当USBHS_IRQHandler 与 USART2_IRQHandler中断都使能后,USBHS_IRQHandler中断使用官方例程的代码,USART2_IRQHandler中断里面有我应用的逻辑,跟USB没有关系,然后我频繁发送UART数据时,即频繁进入USART2_IRQHandler中断,可以当成周期50ms发送10个字节的UART报文,这10个字节基本没有时间间隔,然后电脑一直读取USB的数据(此数据不是UART数据,跟UART没有关系),USB数据量挺大的,发现运行1~2分钟后,电脑上位机没有收到应用报文,用USB抓包分析工具分析,发现电脑有一直发送IN 报文请求,CH32V307没有应答数据,即一直是NAK应答,发现USBHS_IRQHandler IN该端点的中断不再进入,即使程序调用USBHS_Endp_DataUp 数据进行上传,也没有响应。我猜想问题出现在芯片的USB中断被UART中断频繁打断所致的,但我不知道具体原因,当UART停止发送数据,即USART2_IRQHandler中断不进入,电脑一直读取USB大量数据都正常,运行了一晚上没有异常。为什么单独USBHS_IRQHandler中断可以正常运行,加了一个USART2_IRQHandler就异常了,是芯片哪里还需要配置吗?比如这颗芯片的硬件堆栈是跟main的堆栈公用吗?有没有大佬遇到这个相似的问题。


您好,可以检查一下中断函数的优先级配置以及串口中断函数的执行时间,串口中断函数注意要加中断声明。此外可以打印看一下USBHS_Endp_DataUp函数的返回值是0还是1.若方便可将代码发至我的邮箱(lzs@wch.cn)具体看一下,后续问题的沟通也可以通过邮箱进行沟通。


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