硬件复位后的stm32 USB-CDC

硬件复位后的stm32 USB-CDC,usb,stm32,hotplugging,Usb,Stm32,Hotplugging,我已经用USB-CDC协议编程了我的stm32f103蓝色药丸板 我可以在这个端口上读写 但在执行硬件重置后,COM端口不可用 我必须拔下USB连接并重新插入,然后COM端口出现 有可能避免这种情况吗 -谢谢如果您重置bluepill,您需要将D+线拉下几毫秒,让主机知道它必须启动枚举过程 但在执行硬件重置后,COM端口不可用,我必须拔下USB连接 我在Windows 7中看到了这种确切的行为-当COM端口在重置期间打开时。在应用程序中,当COM端口保持打开状态时,用户断开并重新连接USB设备的

我已经用USB-CDC协议编程了我的stm32f103蓝色药丸板

我可以在这个端口上读写

但在执行硬件重置后,COM端口不可用 我必须拔下USB连接并重新插入,然后COM端口出现

有可能避免这种情况吗


-谢谢

如果您重置bluepill,您需要将D+线拉下几毫秒,让主机知道它必须启动枚举过程

但在执行硬件重置后,COM端口不可用,我必须拔下USB连接

我在Windows 7中看到了这种确切的行为-当COM端口在重置期间打开时。在应用程序中,当COM端口保持打开状态时,用户断开并重新连接USB设备的情况也是如此

您有两种可能的解决方法:

  • 在硬件重置之前关闭COM端口
  • 升级到Windows 10

请注意,在硬件重置(或USB重新插入)时,您仍然需要关闭并重新打开windows 10上的COM端口。

如果您是在USB侧插入的情况下重置设备,我认为操作系统USB适配器驱动程序将无法满足此要求。操作系统端认为设备处于完全初始化状态,当您重置设备时。您可以插入和拔出您的usb设备,这也会导致重置,但操作系统已准备好进行此类重置。usb设备通常不会在这些线路上配备下拉按钮。@DavidGrayson yep难以理解。将gpio设置为输出。设置为低等待一段时间,设置AF功能。不,您肯定不想将线路设置为输出,因为如果主机当时正在总线上发送数据包,则会导致短路。你可以让线浮动,它会被主机端的下拉拉下来。恐怕不行。它有外部上拉,它也有串行电阻,所以你不会炒皮诺,是的,我现在可以看到,董事会是糟糕的设计。在这种情况下,D+上拉应该是可控的(除非你真的需要每条I/O线)。此外,当你只需要将D+电压拉高到3.3 V时,它会将D+电压拉高到5 V。主机不会重新计算它。这是一个错误的答案,任何windows升级都不会有任何帮助all@P__J__不正确,在STM上使用USB CDC时,我观察到完全相同的行为。可能是ST驱动程序的问题。复制步骤:允许主机枚举设备,打开主机中的COM端口,完全断开设备连接(断电),而不关闭主机中的COM端口,重新连接设备。即使主机正确地重新枚举设备,COM端口仍然不可用。您需要手动关闭并重新打开主机上的任何打开位置。@JacekŚlimok这完全是错误的。您可能在代码中犯了很多错误,而这个伪变通方法只是偶然地起作用。Stm32 can驱动程序工作正常。@P_u_J_u________________________________________。如果你继续假设我的代码的质量是什么,甚至没有看到任何东西,那么继续这个对话就没有意义了。然而,我确实认为,可以放心地假设您自己甚至没有费心尝试所描述的确切场景。@JacekŚlimok很难理解您的意思。在我的设备上,一切正常,没有任何“魔力”。如果您的代码需要一些奇怪的操作-这是错误的标志-而不是在USB堆栈中。我在STM32 uCs上使用CDC类设计了数十台设备。]