阅读:1513回复:9
【疑问】D12到底什么时候会触发挂起改变?(40分)
我进行枚举的时候,总是完配置描述符后就没有反应了,程序
总是停在: if (bEPPflags.bits.suspend) {//挂起改变处理 DISABLE; bEPPflags.bits.suspend= 0; ENABLE; if(D12SUSPD == 1) {//挂起处理 D12SUSPD = 0; …… D12SUSPD = 1; PCON |= 0x02; while (1); } }// if suspend change 中的while(1),因为不知道什么时候会进入这段,所以不知道怎么 调了,请大侠帮忙! |
|
沙发#
发布于:2004-03-14 17:08
我顶,help!
仿真器至少还能读到配置描述符,下载到片子后就什么也读不到 了,好像一插到pc就直接进入挂起中断,根本不理setup包 |
|
板凳#
发布于:2004-03-14 22:25
把
PCON |= 0x02; while (1); 这两行代码去掉看看 照理应该没关系的,除非PC发出了挂起请求。 |
|
|
地板#
发布于:2004-03-15 08:58
这里根本不用修改的,你修改VID PID试试看
|
|
|
地下室#
发布于:2004-03-15 09:40
我的VID和PID是0471和0666,为什么要修改它们?修改成什么?
|
|
5楼#
发布于:2004-03-15 09:48
如果删掉两行代码还没有效果。
可以对下面的变量进行初始化为0 bEPPflags.bits.suspend 你肯定是拿Philips的例子代码(或它的变种)进行修改而来的。该例子可能有很多不太完善的地方。最好bEPPflags结构都要进行初始化。该结构最好使用片内RAM. |
|
|
6楼#
发布于:2004-03-15 16:38
我把挂起改变的程序暂时屏蔽掉了,现在当设备连上pc后开始
运行固件,结果还算正常;如果反一下,当先运行固件,然后再把 设备插上pc时,clkout脚就一下变回4M,什么反应都没了,这是什么 问题? |
|
7楼#
发布于:2004-03-16 07:57
你的设备是自供电的?
|
|
|
8楼#
发布于:2004-03-16 17:36
是,我的自供电
|
|
9楼#
发布于:2004-03-17 10:19
那你要检查一下你的Configuration Descriptor中关于供电设置的那里是否搞错掉了?(bmAttributes, 你的应该为0xe0或0xc0)
|
|
|