eric2013 发表于 2016-6-22 10:46:03

有时候STM32的USB库模拟U盘在电脑端识别不出来是SDIO中断和USB-FS中断优先级的问题

ST官方的USB库2.2.0版本有这个问题:
例子:
====================================

1. 设置SDIO中断的优先级要高于USB-FS的优先级,要不SD卡模拟U盘很容易失败。仅SDIO中断优先级高于即可。
    ------------------------------NVIC优先级分组已经设置为4-----------------------------------------
    bsp_sdio_sd.c文件
    void SDIO_Interrupts_Config(void)
    {
      NVIC_InitTypeDef NVIC_InitStructure;

      NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn;---------------------->>>>就是此中断的优先级
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
      NVIC_Init(&NVIC_InitStructure);

      NVIC_InitStructure.NVIC_IRQChannel = SD_SDIO_DMA_IRQn;
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
      NVIC_Init(&NVIC_InitStructure);
    }

    ubs_bsp.c文件
    /* USB Device */
    if (pdev == &USB_OTG_dev)
    {
      NVIC_InitStructure.NVIC_IRQChannel = OTG_FS_IRQn;
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;---------------------->>>>高于此中断的优先级
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
      NVIC_Init(&NVIC_InitStructure);

      #ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED
            NVIC_InitStructure.NVIC_IRQChannel = OTG_HS_EP1_OUT_IRQn;
            NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
            NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
            NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
            NVIC_Init(&NVIC_InitStructure);

            NVIC_InitStructure.NVIC_IRQChannel = OTG_HS_EP1_IN_IRQn;
            NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
            NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
            NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
            NVIC_Init(&NVIC_InitStructure);
      #endif
    }

eric2013 发表于 2016-7-1 08:01:04

已经更新例子。

drjloveyou 发表于 2016-11-22 10:03:33

我也注意到这个问题了,请问楼主,能介绍一下其中原因吗?

eric2013 发表于 2016-11-23 02:31:48

回 drjloveyou 的帖子

drjloveyou:我也注意到这个问题了,请问楼主,能介绍一下其中原因吗? (2016-11-22 10:03) images/back.gif

原因暂时不明。

drjloveyou 发表于 2016-11-23 22:04:37

回 eric2013 的帖子

eric2013:原因暂时不明。 (2016-11-23 02:31) images/back.gif

好吧,Eric加油!
页: [1]
查看完整版本: 有时候STM32的USB库模拟U盘在电脑端识别不出来是SDIO中断和USB-FS中断优先级的问题