- 注册时间
- 2015-9-21
- 最后登录
- 2015-10-26
- 阅读权限
- 20
- 积分
- 19
- 精华
- 0
- 帖子
- 3
|
之前买了版主一个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; //设置等待状态
}
如红色部分,上面的是建立数据包,下面的接收数据部分又为建立数据包,两个都为建立数据包?
|
|