CH32X035使用USB-CDC重定向printf问题

重写_write代码实现重定向printf,如果USB未连接的话就会卡在while里面,请问应该如何判断USB是否连接

__attribute__((used))
int _write(int fd, char *buf, int size)
{
    while(USBFS_Endp_Busy[DEF_UEP3]);
    USBFS_Endp_DataUp(DEF_UEP3, (uint8_t*)buf, size, DEF_UEP_CPY_LOAD);
    return size;
}


你好有个USB_SET_CONFIGURATION命令,这里置位USBHS_DevEnumStatus=1用这个代表枚举成功了,即成功连接了。image.png


如果USB线插着但是上位机软件并没有连接串口,USBHS_DevEnumStatus会被判断为1,程序仍然会卡在while里面


你好,用while应该是不合理的,因为在负责上传数据的函数中会有将端点置忙的操作。所以会导致卡住,具体解决可看下这篇博客:https://www.cnblogs.com/wchmcu/p/17665489.html 


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