long22885528
驱动牛犊
驱动牛犊
  • 注册日期2003-04-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望6点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
阅读:1339回复:0

PDIUSBD12的疑惑(命令)

楼主#
更多 发布于:2007-04-07 21:32
  正在学习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);  
}
游客

返回顶部