本帖最后由 thinksw03 于 2011-10-30 18:11 编辑
小弟正在学习M0的USB例程
在其鼠标例程中 HID_MainProcess函数中 使用
while(1)
{
eUsbState = DrvUSB_GetUsbState();
if (eUsbState == eDRVUSB_DETACHED)
{
break;
}
if(eUsbState & eDRVUSB_SUSPENDED)
{
/* Enter suspend here */
PowerDown();
}
if (eUsbState == eDRVUSB_CONFIGURED)
{
/* Set HID IN report for interrupt IN transfer */
HID_SetInReport();
}
}
轮询的方法调用HID_SetInReport();
在HID_SetInReport()函数中,有端点判忙函数
if(g_HID_sDevice.isReportReady)
return;
在每次调用时 都进行判断
且发数时进行置位操作
if(key != preKey)
{
/* Trigger to note key release */
g_HID_sDevice.isReportReady = 1;
DrvUSB_DataIn(INT_IN_EP_NUM, g_HID_sDevice.pu8Report, g_HID_sDevice.u32ReportSize);
}
但在驱动中只是在 初始化时给g_HID_sDevice.isReportReady 复位成0
其它地方 再无复位函数
小弟 实在找不到 程序在哪里给这个g_HID_sDevice.isReportReady 复的位
那位大哥 理解透彻 指点一下
我已困扰多日了 |