USB论坛-百合电子工作室USB专题站

标题: 版主光盘有段代码不太清楚 [打印本页]

作者: azhuybz    时间: 2015-9-21 15:29
标题: 版主光盘有段代码不太清楚
之前买了版主一个51板子和一个USB板子,USB板子光盘上有一段代码,感觉不是很清楚:

        if (ep_last & D12_SETUPPACKET) {                                         //如果收到了建立包(Setup包)
                ControlData.wLength = 0;                                                  //传输字节总数清0
                ControlData.wCount = 0;                                                          //传输字节计数器清0
                if(D12_ReadEndpoint(0, sizeof(ControlData.DeviceRequest),req)
                                                        != sizeof(DEVICE_REQUEST) ) {
                                                                                                                  //从端点0读8个字节失败
                        D12_SetEndpointStatus(0, 1);                                 //停止控制端点0
                        D12_SetEndpointStatus(1, 1);                                  //停止控制端点1
                        bEPPflags.bits.control_state = USB_IDLE;         //设置为等待状态
                        return;
                }

                ......

        }// if setup packet

        /*****  下面为控制写入的数据阶段  ***************/
        else if (bEPPflags.bits.control_state == USB_RECEIVE) {                       //如果为接收状态
                         i = D12_ReadEndpoint(0, EP0_PACKET_SIZE,
                         ControlData.dataBuffer + ControlData.wCount);                      //从端点0接收数据
                         ControlData.wCount += i;                                                                   //统计已接收的字节数
                         if( i != EP0_PACKET_SIZE || ControlData.wCount >= ControlData.wLength) {                                                                                    //数据接收完毕
                                bEPPflags.bits.setup_packet = 1;                                       //通知control_handler()处理Setup包                                  
                                 bEPPflags.bits.control_state = USB_IDLE;                  //设置为等待状态
                         }
                 }else
                          bEPPflags.bits.control_state = USB_IDLE;                                  //设置等待状态
}

如红色部分,上面的是建立数据包,下面的接收数据部分又为建立数据包,两个都为建立数据包?




作者: baiheee    时间: 2015-9-22 16:29
前面是SETUP阶段,后面是数据阶段




欢迎光临 USB论坛-百合电子工作室USB专题站 (http://usb.baiheee.com/usb_bbs/) Powered by Discuz! X2.5