STM32 USB的问题,中断设置出现问题

2019-07-14 23:39发布

我的项目需要用到USB的虚拟串口,用的STM32L151和F103差不多的。我用官方的VisualComport_Loopback Demo改,官方的例子已经测试通过了,没有问题。但是我自己的程序里一旦进行中断的配置,就会出现枚举不成功的现象(也就是电脑上显示未识别的USB设备)。
关键代码如下:
int main(void)
{   
  sys_ini();        
  per_ini();        
  bsp_ini();      
  Set_System();
  Set_USBClock();
  USB_Interrupts_Config();
  USB_Init();   
while(1)

CDC_Send_DATA ((u8*)"test success ",14);   

}
实验发现 USB_Interrupts_Config();和  sys_ini(); 存在冲突
经测试,是与sys_ini();中的 NVIC_Configuration();发生了冲突只要注释掉 NVIC_Configuration();一切就正常了。
下面列出两个冲突的函数
void NVIC_Configuration()
{
    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
   
    NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority =2;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority =1;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
   
    NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);


void USB_Interrupts_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//使能USB的优先级中断
  NVIC_InitStructure.NVIC_IRQChannel = USB_LP_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
//使能USB唤醒中断
  NVIC_InitStructure.NVIC_IRQChannel = USB_FS_WKUP_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}

请问是哪里冲突了???



0条回答

一周热门 更多>