修改USB固件库的Customer_HID例程

     我用的是神州三号开发板子,板子的USB模块原理图为:

      配置端口G的11号引脚为usb的使能引脚,按理来说应该是开漏输出的(看了很多的修改代码都是这个模式),不过就是不能使能usb,只能配置成推挽的才行,不知道为什么,不知道有没有人知道这个,求解答?

GPIO_InitStructure.GPIO_Pin = USB_DISCONNECT_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //是普通的推挽输出,而不是开漏输出
GPIO_Init(USB_DISCONNECT, &GPIO_InitStructure);

      由于是普通的推挽输出,所以只有输出高电平才能使能usb,所以使能usb的函数应该修改为:

void USB_Cable_Config (FunctionalState NewState)
{
  if (NewState != DISABLE)
    GPIO_SetBits(USB_DISCONNECT, USB_DISCONNECT_PIN);  //为1是高电平
  else
    GPIO_ResetBits(USB_DISCONNECT, USB_DISCONNECT_PIN);  //为0是低电平
}

      这个问题让我明白了,只有很好的看电路图,才能理解和找出很的问题。

      具体其它的修改看以参考http://blog.csdn.net/cy757/article/details/5117610这篇文章,把程序下到板子后就可以看到pc上提示开始安装驱动程序了,说明我们的USB设备可以被pc检测到了。

 

原文地址:https://www.cnblogs.com/chengxuyuancc/p/3440034.html