USB鼠标例程中的 g_HID_sDevice.isReportReady

[复制链接]
3113|4
 楼主| thinksw03 发表于 2011-10-30 17:24 | 显示全部楼层 |阅读模式
本帖最后由 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 复的位
那位大哥 理解透彻 指点一下
我已困扰多日了
米其林r 发表于 2011-10-30 18:36 | 显示全部楼层
这么难的代码啊!
 楼主| thinksw03 发表于 2011-10-31 12:59 | 显示全部楼层
这是官方的例程 阿
真的很鄙视芯唐的例程 连点解释都没有
怎么能够让我们 快速上手开发
我现在 在仔细研究 大家可以一起加入阿
Peter1985 发表于 2011-11-1 16:10 | 显示全部楼层
没注释确实不好i学
 楼主| thinksw03 发表于 2011-11-4 18:55 | 显示全部楼层
昨天认为 g_HID_sDevice.isReportReady  没有用到 只是写写而已

事实不是如此 此句正常发挥的他应有的作用 例程会在一个InputReport包传走后 将其复位位

自己水平太差了 还是没找到 复位的那条语句

现在就是 停留在使用的阶段 轮询 或者 回调

到底如何实现的 还没够清楚 变扭呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

10

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部