可以把CH592的USB HID代码复用到V208上吗

说起来也很奇怪 按照V208的例程写了个键盘程序

从按键到出字会产生肉眼可见的延迟 而且似乎这个概率随着上电时间增加


但是在CH582和592上写的程序似乎就没有这样的问题


如果可以复用,是否可以提示一下有哪些改写的注意点

你好,这个现象没有碰到过,可以拉个IO看一下,按键按下到进入USB IN完成中断之间的时间间隔,推荐在V208EVT中的键鼠例程上修改。


确实是按照例程改的


我试过在按键上绑一个LED 灯看起来和按钮没有问题


所以我感觉更像是USBFS_Endp_DataUp在掉包或者中断有问题


void Device_USB_Protocol(void)
{
    if (USBFS_DevEnumStatus)
    {
        if (Flag_EP1)
        {
            USB_Status_EP1 = USBFS_Endp_DataUp(DEF_UEP1, Report_EP1, sizeof(Report_EP1), DEF_UEP_CPY_LOAD);
            if(USB_Status_EP1 == READY)
            {
                Flag_EP1 = 0;
            }
        }
    }
}


void Matrix_Scan(void)
{
    Scan_Result = GPIO_ReadInputData(Scan_Col_Port) & Scan_Col_Mask;
    if (Scan_Result != Scan_Buffer[0])
    {
        if (temp == 0)
        {
            Report_EP1[2] = 0x04;
        }
        else
        {
            Report_EP1[2] = 0x00;
        }
        temp = 1 - temp;
        Scan_Buffer[0] = Scan_Result;
        Flag_EP1 = 1;
    }

}

void TIM3_IRQHandler(void)
{
    if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
    {
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
        Matrix_Scan();
    }
}


你好

  1. 可以对比一下例程的响应速度。

  2. USB的机制:设备需要先装载数据,等主机发IN令牌,然后再上传数据,如果描述符的间隔是10,全速就是10ms 1个IN。

  3. 变量在中断和主函数中同时使用,加上volatile修饰。

如果找不到问题,代码可以发我邮箱zc@wch.cn



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