两个USB同时使用问题

2019-07-20 03:05发布

STM32F407 两个USB同时使用会卡住,单独一个都没问题。请各位高手帮忙看一下 微信图片_20190322115326.png 以下是代码


//        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);
}




0条回答

一周热门 更多>