打印

我的问题解决了,但是还有点不明白

[复制链接]
1615|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
happlylife|  楼主 | 2008-1-31 18:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的问题解决了.因为我在枚举的最后会收到主机通过中断OUT端点发送到设备的数据,我在主程序中,对输出中断处理的地方加了一个向IN端点写数据的函数后就好了.后面就可以收到主机每10ms的IN中断,这样我就可以把我的按键值发送过去了.

问题是我收到主机从中断OUT端点发送过来的这个数据后,为什么必须向中断IN端点写数据,这样才可以正常工作呢?如果不去写,就一直不可以工作,难道也是和控制输出一样,要回一个数据包吗?.
还有我的程序里对报告描述符,还有其他的描述符都参考了OO的程序,可是他的程序中对中断OUT的处理没有像我这样,向IN端点里写数据,为什么我会出现这样的情况呢.
我也是初学有很多的不明白,希望有朋友可以帮忙指点以下.
我的程序如下.......
while(1)
    {
        P_Watchdog_Clear = 0x0001;
        if(bEPPflags.bits.bus_reset)                        // 总线复位处理
        {
            bEPPflags.bits.bus_reset = 0;                    // 清标志
        }
        if(bEPPflags.bits.suspend)                            // 总线挂起处理
        {
            bEPPflags.bits.suspend = 0;                        // 清标志
        }
        if(bEPPflags.bits.setup_packet)                        // 协议处理
        {
            bEPPflags.bits.setup_packet = 0;                // 清标志
            D12_Control_Handler();
        }
        if(bEPPflags.bits.Ep1_ReceiveDataFlag==1)
        {
            bEPPflags.bits.Ep1_ReceiveDataFlag = 0;
            D12_ReadEndpointAndClrD12Int(2, 16, aIdFlag);
            D12_WriteEndpointAndClrD12Int(3, 0, 0);        //这个函数是用于应答 DO 的,向结点3(端点1的IN端点)写0字节数据,只有应答后,才算枚举通过,//才可以定时的产生IN中断.否则无法产生IN中断.这样设备不可以使用,无法发送按键值给主机.
        }
        if(bEPPflags.bits.Ep1_SendDataFlag==1)
        {
            bEPPflags.bits.Ep1_SendDataFlag = 0;
            KeyID(); //只有上面对结点3写入数据后,才可以运行到这里,才可以每10ms产生IN中断.发送按键值.
        }
    } 

下面有我那个描述问题的帖子的地址:
相关链接:https://bbs.21ic.com/club/bbs/list.asp?boardid=53&page=1&t=2846146&tp=%u6211%u9047%u5230%u7684%u95EE%u9898

相关帖子

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

本版积分规则

2

主题

12

帖子

0

粉丝