olivine
驱动牛犊
驱动牛犊
  • 注册日期2002-03-20
  • 最后登录2005-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1583回复:10

求助关于对D12主端点的读取

楼主#
更多 发布于:2002-10-31 16:43
对D12主端点的一次读取为什么总是16个字节?怎样才能读取64个字节?望高手指教。

最新喜欢:

skyeyeskyeye
charlie22
驱动牛犊
驱动牛犊
  • 注册日期2002-08-05
  • 最后登录2007-11-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-10-31 17:26
你firmware中设置为多少?

应该不会16个字节的吧,你怎么读的(代码)
zuowei999
驱动牛犊
驱动牛犊
  • 注册日期2002-03-21
  • 最后登录2018-02-05
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望53点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-10-31 17:38
怎么读
chengjian_hui
驱动小牛
驱动小牛
  • 注册日期2002-09-29
  • 最后登录2003-09-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-01 18:34
  我和olivine一起搞得,读取方法就是在端点1读取上位机接受请求,然后置ep1_rxdone标志位,在主程序的循环里判断标志,然后发送64个字节,但上位机只能接收到16个,其它为不确定数,为啥呢?
多谢!
代码如下:
   端点1中断程序
void EP1_RxDone_Isr(void)
{
   unsigned char rxd[1];
   USBCHIP_ReadLastTransactionStatus(2);
   USBCHIP_ReadEndpoint(2, rxd, 1);
   if(rxd[0]==97)
    {
    IO_LED = 1;
    mudk12Flags.bits.bEP1_RxDone=1;
    }
    else
    IO_LED = 0;
    
}
   主程序
void main (void)
{   unsigned char p,i;
    Init_System();
    IO_LED = 0;
mudk12Flags.bits.bLED = LED_ON;
    USB_Reconnect();
    ENABLE_INTERRUPTS;
EX0 = 1;

  while(TRUE)
   {  
      if(mudk12Flags.bits.bEP1_RxDone)
        { p=48;
          for(i=0;i<32;i++)
 {
  GenBuf=p;
  p++;
 }

          USBCHIP_WriteEndpoint(5, GenBuf, 32);
        }
   }
}
chengjian_hui
驱动小牛
驱动小牛
  • 注册日期2002-09-29
  • 最后登录2003-09-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-05 10:12
各位大侠们,为啥没人回答呀?
还望不吝赐教
xjLegend
驱动小牛
驱动小牛
  • 注册日期2002-11-04
  • 最后登录2005-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-05 10:26
仔细分析一下这段程序:
while(TRUE)
{
if(mudk12Flags.bits.bEP1_RxDone)
{ p=48;
for(i=0;i<32;i++)
{
GenBuf=p;
p++;
}

GenBuf,p都在变化,当然不会是64了!
我想要点分,这样才有成就感嘛!
chengjian_hui
驱动小牛
驱动小牛
  • 注册日期2002-09-29
  • 最后登录2003-09-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-05 16:24
不是这样的,估计写错了,应该是:
while(TRUE)
{
if(mudk12Flags.bits.bEP1_RxDone)
{ p=48;
for(i=0;i<64;i++)
{
GenBuf=p;
p++;
}
USBCHIP_WriteEndpoint(5, GenBuf, 64);
}
是不是和断点的设置和传输方式有关呀?
xjLegend
驱动小牛
驱动小牛
  • 注册日期2002-11-04
  • 最后登录2005-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-06 11:28
总觉得你的程序怪怪的,我试过,读64Bytes应该没问题的啊!
我想要点分,这样才有成就感嘛!
chengjian_hui
驱动小牛
驱动小牛
  • 注册日期2002-09-29
  • 最后登录2003-09-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-07 11:53
那里怪能指点一下吗?
xjLegend
驱动小牛
驱动小牛
  • 注册日期2002-11-04
  • 最后登录2005-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-11-07 12:01
{ p=48;
for(i=0;i<64;i++)
{
GenBuf=p;
p++;
}
GenBuf是字符数组吗?若是的话,等效于指针喽。
我想要点分,这样才有成就感嘛!
chengjian_hui
驱动小牛
驱动小牛
  • 注册日期2002-09-29
  • 最后登录2003-09-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-11-07 12:25
是呀,难道不能这没用吗?
游客

返回顶部