问题如下:
我用的https://bbs.21ic.com/icview-583006-1-1.html,香水发的例程,只用到DM和DP,没接vbus,将这里改了,去掉检测功能。
// if (0 == state)
// {
/* DISABLE is needed on output of the Power Switch */
GPIO_SetBits(HOST_POWERSW_PORT, HOST_POWERSW_VBUS);
// }
// else
// {
// /*ENABLE the Power Switch by driving the Enable LOW */
// GPIO_ResetBits(HOST_POWERSW_PORT, HOST_POWERSW_VBUS);
// }
晶振用的24M,这里改了
#if !defined (HSE_VALUE)
#define HSE_VALUE ((uint32_t)24000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */
插上usb键盘能识别,进入这个函数
if (HCD_IsDeviceConnected(pdev))
{
phost->gState = HOST_DEV_ATTACHED;
USB_OTG_BSP_mDelay(100);
}
break;
之后顺序运行后到这里 ,进不去枚举这里。无论我怎么按键盘都进不去
/* Check for enumeration status */ if ( USBH_HandleEnum(pdev , phost) == USBH_OK)
{
/* The function shall return USBH_OK when full enumeration is complete */
/* user callback for end of device basic enumeration */
phost->usr_cb->EnumerationDone();
phost->gState = HOST_USR_INPUT;
}
break;
之后这里也就更进不去了
case HOST_USR_INPUT:
/*The function should return user response true to move to class state */
if ( phost->usr_cb->UserInput() == USBH_USR_RESP_OK)
{
if((phost->class_cb->Init(pdev, phost))\
== USBH_OK)
{
phost->gState = HOST_CLASS_REQUEST;
}
}
break;
也就扫不到按键。。。
帮忙分析下,什么原因??还有哪里需要改的吗??
我用的stm32f2xx
|