打印

USB鼠标例程中的 g_HID_sDevice.isReportReady

[复制链接]
2260|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学

使用特权

评论回复
5
thinksw03|  楼主 | 2011-11-4 18:55 | 只看该作者
昨天认为 g_HID_sDevice.isReportReady  没有用到 只是写写而已

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

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

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

到底如何实现的 还没够清楚 变扭呀

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

10

帖子

1

粉丝