我现在使用HAL的库做USB HID通讯,通讯上已经没有问题,现在遇到一个问题,当使用ST的芯片做Device时插到计算机上时ST无法识别到已经插入到计算机上,而拔除时时可以知道。
在库文件中的有下面两个中断函数;/* Handle Connection event Interrupt */
if(__HAL_GET_FLAG(hpcd, USB_OTG_GINTSTS_SRQINT))
{
HAL_PCD_ConnectCallback(hpcd);
__HAL_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_SRQINT);
}
/* Handle Disconnection event Interrupt */
if(__HAL_GET_FLAG(hpcd, USB_OTG_GINTSTS_OTGINT))
{
temp = hpcd->Instance->GOTGINT;
if((temp & USB_OTG_GOTGINT_SEDET) == USB_OTG_GOTGINT_SEDET)
{
HAL_PCD_DisconnectCallback(hpcd);
}
hpcd->Instance->GOTGINT |= temp;
}
拔除识别没有问题,但是插入识别只在已经连接在计算机上然后初始化ST中的USB部分才能识别,否则不识别,这样就不具有通用性,我想做的是只有在ST中初始化后,ST可以知道插入和拔除事件。
谢谢,求帮助!!非常感谢!! |