阅读:1583回复:10
求助关于对D12主端点的读取
对D12主端点的一次读取为什么总是16个字节?怎样才能读取64个字节?望高手指教。
|
|
最新喜欢:![]() |
沙发#
发布于:2002-10-31 17:26
你firmware中设置为多少?
应该不会16个字节的吧,你怎么读的(代码) |
|
板凳#
发布于:2002-10-31 17:38
怎么读
|
|
地板#
发布于: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); } } } |
|
地下室#
发布于:2002-11-05 10:12
各位大侠们,为啥没人回答呀?
还望不吝赐教 |
|
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了! |
|
|
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); } 是不是和断点的设置和传输方式有关呀? |
|
7楼#
发布于:2002-11-06 11:28
总觉得你的程序怪怪的,我试过,读64Bytes应该没问题的啊!
|
|
|
8楼#
发布于:2002-11-07 11:53
那里怪能指点一下吗?
|
|
9楼#
发布于:2002-11-07 12:01
{ p=48;
for(i=0;i<64;i++) { GenBuf=p; p++; } GenBuf是字符数组吗?若是的话,等效于指针喽。 |
|
|
10楼#
发布于:2002-11-07 12:25
是呀,难道不能这没用吗?
|
|