/******************************************************************************* * Function Name : USB_Interrupts_Config * Description : Configures the USB interrupts * Input : None. * Return : None. *******************************************************************************/ void USB_Config(void) { NVIC_InitTypeDef NVIC_InitStructure; #ifdef VECT_TAB_RAM /* Set the Vector Table base location at 0x20000000 */ NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else /* VECT_TAB_FLASH */ /* Set the Vector Table base location at 0x08000000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endif NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /* Enable and configure the priority of the USB_LP IRQ Channel*/ NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN_RX0_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* Enable and configure the priority of the USB_HP IRQ Channel*/ NVIC_InitStructure.NVIC_IRQChannel = USB_HP_CAN_TX_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_SystemHandlerPriorityConfig(SystemHandler_PSV,3,3); }
/******************************************************************************* * Function Name : SYSCLOCK_Init * Description : Initialize the SYSTick Peripheral. * Input : timeSpan = Time span of the timer in micro seconds. * : ptr2Func = Pointer to function to call on timer tick. * Output : None * Return : None *******************************************************************************/ void SYSCLOCK_Init(void (*ptr2Func)(void)) { /* Set the priority and sub priority of the SysTick interrupt handler */ NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 1, 2); /* Enable SysTick interrupt */ SysTick_ITConfig(ENABLE); /* Set external function pointer */ SYSCLOCK_extFunc = ptr2Func; }
/******************************************************************************* * Function Name : SysTick_Configuration * Description : Configures the SysTick to generate an interrupt each 1 millisecond. * Input : None * Output : None * Return : None *******************************************************************************/ void SysTick_Configuration(void) { /* Select AHB clock(HCLK) as SysTick clock source */ SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); /* Set SysTick Priority to 3 */ NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 3, 0); /* SysTick interrupt each 1ms with HCLK equal to 72MHz */ SysTick_SetReload(72000); /* Enable the SysTick Interrupt */ SysTick_ITConfig(ENABLE); }
/******************************************************************************* * Interrupt vector Configuration *******************************************************************************/ void NVIC_Configuration(void) { NVIC_InitType NVIC_InitStructure; // NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0000); NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x4000); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN_RX0_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = USB_HP_CAN_TX_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* enabling TIM1 interrupt */ NVIC_InitStructure.NVIC_IRQChannel=TIM1_CC_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* enabling TIM3 interrupt */ NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* enabling DMA interrupt */ NVIC_InitStructure.NVIC_IRQChannel=DMAChannel2_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); //SysTick NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 1, 0); //SysTick_ITConfig(ENABLE); //SysTick_CounterCmd(SysTick_Counter_Enable); }