说起来也很奇怪 按照V208的例程写了个键盘程序
从按键到出字会产生肉眼可见的延迟 而且似乎这个概率随着上电时间增加
但是在CH582和592上写的程序似乎就没有这样的问题
如果可以复用,是否可以提示一下有哪些改写的注意点
说起来也很奇怪 按照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();
}
}
你好
可以对比一下例程的响应速度。
USB的机制:设备需要先装载数据,等主机发IN令牌,然后再上传数据,如果描述符的间隔是10,全速就是10ms 1个IN。
变量在中断和主函数中同时使用,加上volatile修饰。
如果找不到问题,代码可以发我邮箱zc@wch.cn