STM32F407 两个USB同时使用会卡住,单独一个都没问题。请各位高手帮忙看一下
以下是代码
// USBH_Init(&USB_OTG_Core_dev,USB_OTG_HS_CORE_ID,&USB_Host,&HID_cb,&USR_Callbacks);
USBH_Init(&USB_OTG_Core_dev,USB_OTG_FS_CORE_ID,&USB_Host,&HID_cb,&USR_Callbacks);
//USB OTG 底层IO初始化
//pdev:USB OTG内核结构体指针
void USB_OTG_BSP_Init(USB_OTG_CORE_HANDLE *pdev)
{
RCC->AHB1ENR|=1<<0; //使能PORTA时钟
RCC->AHB2ENR|=1<<7; //使能USB OTG时钟
RCC->AHB1ENR |= 1 << 1; // 使能PB口时钟
RCC->AHB1ENR |= 1 << 29; // 使能USB OTG时钟
GPIO_Set(GPIOA,3<<11,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_NONE); //PA11/12复用功能输出
GPIO_Set(GPIOB,3<<14,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_NONE); //PB14/15复用功能输出
GPIO_AF_Set(GPIOA,11,10); //PA11,AF10(USB)
GPIO_AF_Set(GPIOA,12,10); //PA12,AF10(USB)
GPIO_AF_Set(GPIOB,14,12); //PB14,AF12(USB)
GPIO_AF_Set(GPIOB,15,12); //PA15,AF12(USB)
}
//USB OTG 中断设置,开启USB FS中断
//pdev:USB OTG内核结构体指针
void USB_OTG_BSP_EnableInterrupt(USB_OTG_CORE_HANDLE *pdev)
{
MY_NVIC_Init(0,3,OTG_FS_IRQn,2); //优先级设置为抢占0,子优先级3,组2
MY_NVIC_Init(0,3,OTG_HS_IRQn,2); //优先级设置为抢占0,子优先级3,组2
}
//USB OTG 中断服务函数
//处理所有USB中断
void OTG_FS_IRQHandler(void)
{
USBH_OTG_ISR_Handler(&USB_OTG_Core_dev);
}
void OTG_HS_IRQHandler(void)
{
USBH_OTG_ISR_Handler(&USB_OTG_Core_dev);
}
一周热门 更多>