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

 找回密码
 我要注册
搜索
热搜: USB学习板
查看: 4998|回复: 1

版主光盘有段代码不太清楚

[复制链接]

3

主题

0

好友

19

积分

产品用户

Rank: 4

发表于 2015-9-21 15:29: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;                                  //设置等待状态
}

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



回复

使用道具 举报

6

主题

0

好友

1063

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2015-9-22 16:29:32 |显示全部楼层
前面是SETUP阶段,后面是数据阶段
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

USB开发网 (渝ICP备09006681号-4)

GMT+8, 2022-8-14 01:49 , Processed in 0.058112 second(s), 25 queries .

百合电子工作室版权所有
回顶部