大佬,按你教程编译成功了。但F072芯片的工程配置描述符请求失败,不论是创建 HID Class 还是 Custom Class 总是无法获取配置描述符
使用用CubeMX生成的USB硬件初始化代码:
[C] 纯文本查看 复制代码 /* Includes ------------------------------------------------------------------*/
#include "usb.h"
PCD_HandleTypeDef hpcd_USB_FS;
/* USB init function */
void MX_USB_PCD_Init(void)
{
hpcd_USB_FS.Instance = USB;
hpcd_USB_FS.Init.dev_endpoints = 8;
hpcd_USB_FS.Init.speed = PCD_SPEED_FULL;
hpcd_USB_FS.Init.phy_itface = PCD_PHY_EMBEDDED;
hpcd_USB_FS.Init.low_power_enable = DISABLE;
hpcd_USB_FS.Init.lpm_enable = DISABLE;
hpcd_USB_FS.Init.battery_charging_enable = DISABLE;
if (HAL_PCD_Init(&hpcd_USB_FS) != HAL_OK)
{
Error_Handler();
}
}
void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle)
{
if(pcdHandle->Instance==USB)
{
/* USB clock enable */
__HAL_RCC_USB_CLK_ENABLE();
/* USB interrupt Init */
HAL_NVIC_SetPriority(USB_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(USB_IRQn);
}
}
void HAL_PCD_MspDeInit(PCD_HandleTypeDef* pcdHandle)
{
if(pcdHandle->Instance==USB)
{
/* Peripheral clock disable */
__HAL_RCC_USB_CLK_DISABLE();
/* USB interrupt Deinit */
HAL_NVIC_DisableIRQ(USB_IRQn);
}
}
/**
* @brief This function handles USB global interrupt / USB wake-up interrupt through EXTI line 18.
*/
void USB_IRQHandler(void)
{
HAL_PCD_IRQHandler(&hpcd_USB_FS);
}
然后创建了1个线程,对USB进行初始化:
[C] 纯文本查看 复制代码 void app_usb (void *argument)
{
(void)argument;
MX_USB_PCD_Init();
usb_state = USBD_Initialize (0);
printf("usb_state-%d\n",usb_state);
usb_state = USBD_Connect(0);
printf("usb_state-%d\n",usb_state);
while( USBD_Configured(0) != usbOK ) osDelay(10);
for (;;) {
//printf("app_usb\r\n");
osDelay(1);
}
}
USBD_Config_0.c 配置:

USBD_Config_HID_0.h 配置 :

是哪里配置不正确嘛?
|