阅读:1339回复:0
PDIUSBD12的疑惑(命令)
正在学习USB开发,下面是开发板自带的控制输出端点中断处理程序,对的D12Cmd=0x40(读最后处理状、态寄存器)这条命令的使用感到疑惑
#define D12Cmd *(volatile U8 *)(0x2000001) #define D12Dat *(volatile U8 *)(0x2000000) #define D12RdLastTrStat(Ep) D12Cmd = Ep|0x40 void D12Ep0IntProc() { U8 SetupPkt[8]; // U8 i; UsbSendDescF = 0; D12RdLastTrStat(0);//读最后处理状态寄存器 if(D12Cmd&0x20) //为何不用if(D12Dat&0x20),难道读出的数据又存到D12Cmd中了? if(D12RdEp(0, SetupPkt, 8)==8) { D12AckEp(0); D12AckEp(1); // putch('\n'); // for(i=0; i<8; i++) // printf("%x,", SetupPkt); if(!StdDevReq[SetupPkt[1]&0xf](SetupPkt)); return; } D12SetEpStat(0, D12EpStall); D12SetEpStat(1, D12EpStall); } |
|