| /******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** | |
| * File Name : 91x_vic.c | |
| * Author : MCD Application Team | |
| * Date First Issued : 05/18/2006 : Version 1.0 | |
| * Description : This file provides all the VIC software functions. | |
| ******************************************************************************** | |
| * History: | |
| * 05/24/2006 : Version 1.1 | |
| * 05/18/2006 : Version 1.0 | |
| ******************************************************************************** | |
| * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH | |
| * CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS | |
| * A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT | |
| * OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT | |
| * OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION | |
| * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. | |
| *******************************************************************************/ | |
| /* Standard include ----------------------------------------------------------*/ | |
| #include "91x_vic.h" | |
| /* Include of other module interface headers ---------------------------------*/ | |
| /* Local includes ------------------------------------------------------------*/ | |
| /* Private typedef -----------------------------------------------------------*/ | |
| /* Private define ------------------------------------------------------------*/ | |
| #define VIC_REGISTER_NUMBER 16 | |
| #define VIC_PROTECTION_ENABLE_MASK 0x1 | |
| #define VIC_PROTECTION_DISABLE_MASK 0xFFFFFFFE | |
| #define VIC_VECTOR_ENABLE_MASK 0x20 | |
| #define VIC_IT_SOURCE_MASK 0xFFFFFFE0 | |
| /* Private macro -------------------------------------------------------------*/ | |
| /* Private variables ---------------------------------------------------------*/ | |
| /* Private function prototypes -----------------------------------------------*/ | |
| static void VIC_ITModeConfig(u16 VIC_Source, VIC_ITLineMode VIC_LineMode); | |
| static void VIC_ISRVectAddConfig(u16 VIC_Source, u16 VIC_Priority, \ | |
| void (*VIC_VectAddress)(void)); | |
| static void VIC_VectEnableConfig(u16 VIC_Source, u16 VIC_Priority); | |
| static void VIC_ITSourceConfig(u16 VIC_Source, u16 VIC_Priority); | |
| /* Interface functions -------------------------------------------------------*/ | |
| /* Private functions ---------------------------------------------------------*/ | |
| /******************************************************************************* | |
| * Function Name : VIC_DeInit | |
| * Description : Deinitialize the VIC module registers to their default reset | |
| * values. | |
| * Input : None | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void VIC_DeInit(void) | |
| { | |
| SCU_AHBPeriphReset(__VIC, ENABLE); /* VIC peripheral is under Reset */ | |
| SCU_AHBPeriphReset(__VIC, DISABLE); /* VIC peripheral Reset off */ | |
| } | |
| /******************************************************************************* | |
| * Function Name : VIC_GetIRQStatus | |
| * Description : Get the status of interrupts after IRQ masking. | |
| * Input : VIC_Source: specifies the number of the source line. | |
| * This parameter can be one of the following values: | |
| * - WDG_ITLine : VIC source 0 | |
| * - SW_ITLine : VIC source 1 | |
| * - ARMRX_ITLine : VIC source 2 | |
| * - ARMTX_ITLine : VIC source 3 | |
| * - TIM0_ITLine : VIC source 4 | |
| * - TIM1_ITLine : VIC source 5 | |
| * - TIM2_ITLine : VIC source 6 | |
| * - TIM3_ITLine : VIC source 7 | |
| * - USBHP_ITLine : VIC source 8 | |
| * - USBLP_ITLine : VIC source 9 | |
| * - SCU_ITLine : VIC source 10 | |
| * - ENET_ITLine : VIC source 11 | |
| * - DMA_ITLine : VIC source 12 | |
| * - CAN_ITLine : VIC source 13 | |
| * - MC_ITLine : VIC source 14 | |
| * - ADC_ITLine : VIC source 15 | |
| * - UART0_ITLine : VIC source 16 | |
| * - UART1_ITLine : VIC source 17 | |
| * - UART2_ITLine : VIC source 18 | |
| * - I2C0_ITLine : VIC source 19 | |
| * - I2C1_ITLine : VIC source 20 | |
| * - SSP0_ITLine : VIC source 21 | |
| * - SSP1_ITLine : VIC source 22 | |
| * - LVD_ITLine : VIC source 23 | |
| * - RTC_ITLine : VIC source 24 | |
| * - WIU_ITLine : VIC source 25 | |
| * - EXTIT0_ITLine: VIC source 26 | |
| * - EXTIT1_ITLine: VIC source 27 | |
| * - EXTIT2_ITLine: VIC source 28 | |
| * - EXTIT3_ITLine: VIC source 29 | |
| * - USBWU_ITLine : VIC source 30 | |
| * - PFQBC_ITLine : VIC source 31 | |
| * Output : None | |
| * Return : The status of the IRQ interrupt after masking (SET or RESET). | |
| *******************************************************************************/ | |
| FlagStatus VIC_GetIRQStatus(u16 VIC_Source) | |
| { | |
| u32 VIC_Mask = 1; | |
| if (VIC_Source < VIC_REGISTER_NUMBER) | |
| { | |
| if ((VIC0->ISR | VIC_Mask << VIC_Source) != RESET) | |
| return SET; | |
| else | |
| return RESET; | |
| } | |
| else | |
| { | |
| if ((VIC1->ISR | VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)) != RESET) | |
| return SET; | |
| else | |
| return RESET; | |
| } | |
| } | |
| /******************************************************************************* | |
| * Function Name : VIC_GetFIQStatus | |
| * Description : Get the status of interrupts after FIQ masking | |
| * Input : VIC_Source: specifies the number of the source line. | |
| * This parameter can be one of the following values: | |
| * - WDG_ITLine : VIC source 0 | |
| * - SW_ITLine : VIC source 1 | |
| * - ARMRX_ITLine : VIC source 2 | |
| * - ARMTX_ITLine : VIC source 3 | |
| * - TIM0_ITLine : VIC source 4 | |
| * - TIM1_ITLine : VIC source 5 | |
| * - TIM2_ITLine : VIC source 6 | |
| * - TIM3_ITLine : VIC source 7 | |
| * - USBHP_ITLine : VIC source 8 | |
| * - USBLP_ITLine : VIC source 9 | |
| * - SCU_ITLine : VIC source 10 | |
| * - ENET_ITLine : VIC source 11 | |
| * - DMA_ITLine : VIC source 12 | |
| * - CAN_ITLine : VIC source 13 | |
| * - MC_ITLine : VIC source 14 | |
| * - ADC_ITLine : VIC source 15 | |
| * - UART0_ITLine : VIC source 16 | |
| * - UART1_ITLine : VIC source 17 | |
| * - UART2_ITLine : VIC source 18 | |
| * - I2C0_ITLine : VIC source 19 | |
| * - I2C1_ITLine : VIC source 20 | |
| * - SSP0_ITLine : VIC source 21 | |
| * - SSP1_ITLine : VIC source 22 | |
| * - LVD_ITLine : VIC source 23 | |
| * - RTC_ITLine : VIC source 24 | |
| * - WIU_ITLine : VIC source 25 | |
| * - EXTIT0_ITLine: VIC source 26 | |
| * - EXTIT1_ITLine: VIC source 27 | |
| * - EXTIT2_ITLine: VIC source 28 | |
| * - EXTIT3_ITLine: VIC source 29 | |
| * - USBWU_ITLine : VIC source 30 | |
| * - PFQBC_ITLine : VIC source 31 | |
| * Output : None | |
| * Return : The status of the FIQ interrupt after masking (SET or RESET) | |
| *******************************************************************************/ | |
| FlagStatus VIC_GetFIQStatus(u16 VIC_Source) | |
| { | |
| u32 VIC_Mask = 1; | |
| if (VIC_Source < VIC_REGISTER_NUMBER) | |
| { | |
| if ((VIC0->RINTSR | VIC_Mask << VIC_Source) != RESET) | |
| return SET; | |
| else | |
| return RESET; | |
| } | |
| else | |
| { | |
| if ((VIC1->RINTSR | VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)) != RESET) | |
| return SET; | |
| else | |
| return RESET; | |
| } | |
| } | |
| /******************************************************************************* | |
| * Function Name : VIC_GetSourceITStatus | |
| * Description : Get the status of the source interrupts before masking. | |
| * Input : VIC_Source: specifies the number of the source line. | |
| * This parameter can be one of the following values: | |
| * - WDG_ITLine : VIC source 0 | |
| * - SW_ITLine : VIC source 1 | |
| * - ARMRX_ITLine : VIC source 2 | |
| * - ARMTX_ITLine : VIC source 3 | |
| * - TIM0_ITLine : VIC source 4 | |
| * - TIM1_ITLine : VIC source 5 | |
| * - TIM2_ITLine : VIC source 6 | |
| * - TIM3_ITLine : VIC source 7 | |
| * - USBHP_ITLine : VIC source 8 | |
| * - USBLP_ITLine : VIC source 9 | |
| * - SCU_ITLine : VIC source 10 | |
| * - ENET_ITLine : VIC source 11 | |
| * - DMA_ITLine : VIC source 12 | |
| * - CAN_ITLine : VIC source 13 | |
| * - MC_ITLine : VIC source 14 | |
| * - ADC_ITLine : VIC source 15 | |
| * - UART0_ITLine : VIC source 16 | |
| * - UART1_ITLine : VIC source 17 | |
| * - UART2_ITLine : VIC source 18 | |
| * - I2C0_ITLine : VIC source 19 | |
| * - I2C1_ITLine : VIC source 20 | |
| * - SSP0_ITLine : VIC source 21 | |
| * - SSP1_ITLine : VIC source 22 | |
| * - LVD_ITLine : VIC source 23 | |
| * - RTC_ITLine : VIC source 24 | |
| * - WIU_ITLine : VIC source 25 | |
| * - EXTIT0_ITLine: VIC source 26 | |
| * - EXTIT1_ITLine: VIC source 27 | |
| * - EXTIT2_ITLine: VIC source 28 | |
| * - EXTIT3_ITLine: VIC source 29 | |
| * - USBWU_ITLine : VIC source 30 | |
| * - PFQBC_ITLine : VIC source 31 | |
| * Output : None | |
| * Return : The status of the source interrupt before masking | |
| *******************************************************************************/ | |
| FlagStatus VIC_GetSourceITStatus(u16 VIC_Source) | |
| { | |
| u32 VIC_Mask = 1; | |
| if (VIC_Source < VIC_REGISTER_NUMBER) | |
| { | |
| if ((VIC0->FSR | VIC_Mask << VIC_Source) != RESET) | |
| return SET; | |
| else | |
| return RESET; | |
| } | |
| else | |
| { | |
| if ((VIC1->FSR | VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)) != RESET) | |
| return SET; | |
| else | |
| return RESET; | |
| } | |
| } | |
| /******************************************************************************* | |
| * Function Name : VIC_ITModeConfig | |
| * Description : Select the type of interrupt (IRQ or FIQ) | |
| * Input1 : VIC_Source: specifies the number of the source line. | |
| * This parameter can be one of the following values: | |
| * - WDG_ITLine : VIC source 0 | |
| * - SW_ITLine : VIC source 1 | |
| * - ARMRX_ITLine : VIC source 2 | |
| * - ARMTX_ITLine : VIC source 3 | |
| * - TIM0_ITLine : VIC source 4 | |
| * - TIM1_ITLine : VIC source 5 | |
| * - TIM2_ITLine : VIC source 6 | |
| * - TIM3_ITLine : VIC source 7 | |
| * - USBHP_ITLine : VIC source 8 | |
| * - USBLP_ITLine : VIC source 9 | |
| * - SCU_ITLine : VIC source 10 | |
| * - ENET_ITLine : VIC source 11 | |
| * - DMA_ITLine : VIC source 12 | |
| * - CAN_ITLine : VIC source 13 | |
| * - MC_ITLine : VIC source 14 | |
| * - ADC_ITLine : VIC source 15 | |
| * - UART0_ITLine : VIC source 16 | |
| * - UART1_ITLine : VIC source 17 | |
| * - UART2_ITLine : VIC source 18 | |
| * - I2C0_ITLine : VIC source 19 | |
| * - I2C1_ITLine : VIC source 20 | |
| * - SSP0_ITLine : VIC source 21 | |
| * - SSP1_ITLine : VIC source 22 | |
| * - LVD_ITLine : VIC source 23 | |
| * - RTC_ITLine : VIC source 24 | |
| * - WIU_ITLine : VIC source 25 | |
| * - EXTIT0_ITLine: VIC source 26 | |
| * - EXTIT1_ITLine: VIC source 27 | |
| * - EXTIT2_ITLine: VIC source 28 | |
| * - EXTIT3_ITLine: VIC source 29 | |
| * - USBWU_ITLine : VIC source 30 | |
| * - PFQBC_ITLine : VIC source 31 | |
| * Input2 : VIC_LineMode :specifies the type of interrupt of the source | |
| * line. This parameter can be one of the following values: | |
| * - VIC_IRQ: the correspondent line is configured as IRQ. | |
| * - VIC_FIQ: the correspondent line is configured as FIQ. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| static void VIC_ITModeConfig(u16 VIC_Source, VIC_ITLineMode VIC_LineMode) | |
| { | |
| u32 VIC_Mask = 1; | |
| if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ | |
| { | |
| if (VIC_LineMode == VIC_IRQ) | |
| VIC0->INTSR &= ~(VIC_Mask << VIC_Source); | |
| else /* VIC_LineMode == VIC_FIQ */ | |
| VIC0->INTSR |= (VIC_Mask << VIC_Source); | |
| } | |
| else /* VIC1 */ | |
| { | |
| if (VIC_LineMode == VIC_IRQ) | |
| VIC1->INTSR &= ~(VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); | |
| else /* VIC_LineMode == VIC_FIQ */ | |
| VIC1->INTSR |= (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); | |
| } | |
| } | |
| /******************************************************************************* | |
| * Function Name : VIC_ITCmd | |
| * Description : Enable or disable the interrupt request lines. | |
| * Input1 : VIC_Source: specifies the number of the source line. | |
| * This parameter can be one of the following values: | |
| * - WDG_ITLine : VIC source 0 | |
| * - SW_ITLine : VIC source 1 | |
| * - ARMRX_ITLine : VIC source 2 | |
| * - ARMTX_ITLine : VIC source 3 | |
| * - TIM0_ITLine : VIC source 4 | |
| * - TIM1_ITLine : VIC source 5 | |
| * - TIM2_ITLine : VIC source 6 | |
| * - TIM3_ITLine : VIC source 7 | |
| * - USBHP_ITLine : VIC source 8 | |
| * - USBLP_ITLine : VIC source 9 | |
| * - SCU_ITLine : VIC source 10 | |
| * - ENET_ITLine : VIC source 11 | |
| * - DMA_ITLine : VIC source 12 | |
| * - CAN_ITLine : VIC source 13 | |
| * - MC_ITLine : VIC source 14 | |
| * - ADC_ITLine : VIC source 15 | |
| * - UART0_ITLine : VIC source 16 | |
| * - UART1_ITLine : VIC source 17 | |
| * - UART2_ITLine : VIC source 18 | |
| * - I2C0_ITLine : VIC source 19 | |
| * - I2C1_ITLine : VIC source 20 | |
| * - SSP0_ITLine : VIC source 21 | |
| * - SSP1_ITLine : VIC source 22 | |
| * - LVD_ITLine : VIC source 23 | |
| * - RTC_ITLine : VIC source 24 | |
| * - WIU_ITLine : VIC source 25 | |
| * - EXTIT0_ITLine: VIC source 26 | |
| * - EXTIT1_ITLine: VIC source 27 | |
| * - EXTIT2_ITLine: VIC source 28 | |
| * - EXTIT3_ITLine: VIC source 29 | |
| * - USBWU_ITLine : VIC source 30 | |
| * - PFQBC_ITLine : VIC source 31 | |
| * Input2 : FMI_NewState: specifies the line status. | |
| * This parameter can be one of the following values: | |
| * - ENABLE: The line is enabled. | |
| * - DISABLE: The line is disabled. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void VIC_ITCmd(u16 VIC_Source, FunctionalState VIC_NewState) | |
| { | |
| u32 VIC_Mask = 1; | |
| if (VIC_NewState == ENABLE) | |
| { | |
| if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ | |
| VIC0->INTER |= (VIC_Mask << VIC_Source); | |
| else /* VIC1 */ | |
| VIC1->INTER |= (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); | |
| } | |
| else /* VIC_NewState == DISABLE */ | |
| { | |
| if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ | |
| VIC0->INTECR |= (VIC_Mask << VIC_Source); | |
| else /* VIC1 */ | |
| VIC1->INTECR |= (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); | |
| } | |
| } | |
| /******************************************************************************* | |
| * Function Name : VIC_SWITCmd | |
| * Description : Generate a software interrupt for the specific source | |
| * interrupt. | |
| * Input1 : VIC_Source: specifies the number of the source line. | |
| * This parameter can be one of the following values: | |
| * - WDG_ITLine : VIC source 0 | |
| * - SW_ITLine : VIC source 1 | |
| * - ARMRX_ITLine : VIC source 2 | |
| * - ARMTX_ITLine : VIC source 3 | |
| * - TIM0_ITLine : VIC source 4 | |
| * - TIM1_ITLine : VIC source 5 | |
| * - TIM2_ITLine : VIC source 6 | |
| * - TIM3_ITLine : VIC source 7 | |
| * - USBHP_ITLine : VIC source 8 | |
| * - USBLP_ITLine : VIC source 9 | |
| * - SCU_ITLine : VIC source 10 | |
| * - ENET_ITLine : VIC source 11 | |
| * - DMA_ITLine : VIC source 12 | |
| * - CAN_ITLine : VIC source 13 | |
| * - MC_ITLine : VIC source 14 | |
| * - ADC_ITLine : VIC source 15 | |
| * - UART0_ITLine : VIC source 16 | |
| * - UART1_ITLine : VIC source 17 | |
| * - UART2_ITLine : VIC source 18 | |
| * - I2C0_ITLine : VIC source 19 | |
| * - I2C1_ITLine : VIC source 20 | |
| * - SSP0_ITLine : VIC source 21 | |
| * - SSP1_ITLine : VIC source 22 | |
| * - LVD_ITLine : VIC source 23 | |
| * - RTC_ITLine : VIC source 24 | |
| * - WIU_ITLine : VIC source 25 | |
| * - EXTIT0_ITLine: VIC source 26 | |
| * - EXTIT1_ITLine: VIC source 27 | |
| * - EXTIT2_ITLine: VIC source 28 | |
| * - EXTIT3_ITLine: VIC source 29 | |
| * - USBWU_ITLine : VIC source 30 | |
| * - PFQBC_ITLine : VIC source 31 | |
| * Input2 : FMI_NewState: specifies the software interrupt status. | |
| * This parameter can be one of the following values: | |
| * - ENABLE: The software interrupt is enabled. | |
| * - DISABLE: The software interrupt is disabled. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void VIC_SWITCmd(u16 VIC_Source, FunctionalState VIC_NewState) | |
| { | |
| u32 VIC_Mask = 1; | |
| if (VIC_NewState == ENABLE) | |
| { | |
| if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ | |
| VIC0->SWINTR |= (VIC_Mask << VIC_Source); | |
| else /* VIC1 */ | |
| VIC1->SWINTR |= (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); | |
| } | |
| else /* VIC_NewState == DISABLE */ | |
| { | |
| if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ | |
| VIC0->SWINTCR = (VIC_Mask << VIC_Source); | |
| else /* VIC1 */ | |
| VIC1->SWINTCR = (VIC_Mask << (VIC_Source - VIC_REGISTER_NUMBER)); | |
| } | |
| } | |
| /******************************************************************************* | |
| * Function Name : VIC_ProtectionCmd | |
| * Description : Enable or Disable the register access protection. | |
| * Input : FMI_NewState: specifies the protection status. | |
| * This parameter can be one of the following values: | |
| * - ENABLE: The protection is enabled. | |
| * - DISABLE: The protection is disabled. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void VIC_ProtectionCmd(FunctionalState VIC_NewState) | |
| { | |
| if (VIC_NewState == ENABLE) | |
| { | |
| VIC0->PER |= VIC_PROTECTION_ENABLE_MASK; | |
| VIC1->PER |= VIC_PROTECTION_ENABLE_MASK; | |
| } | |
| else | |
| { | |
| VIC0->PER &= VIC_PROTECTION_DISABLE_MASK; | |
| VIC1->PER &= VIC_PROTECTION_DISABLE_MASK; | |
| } | |
| } | |
| /******************************************************************************* | |
| * Function Name : VIC_GetCurrentISRAdd | |
| * Description : Get the address of the current active ISR. | |
| * Input : VICx: specifies the VIC peripheral | |
| * This parameter can be one of the following values: | |
| * - VIC0: To select VIC0. | |
| * - VIC1: To select VIC1. | |
| * Output : None | |
| * Return : The Address of the active ISR. | |
| *******************************************************************************/ | |
| u32 VIC_GetCurrentISRAdd(VIC_TypeDef* VICx) | |
| { | |
| return VICx->VAR; | |
| } | |
| /******************************************************************************* | |
| * Function Name : VIC_ISRVectAddConfig | |
| * Description : Configuration of the ISR vector address. | |
| * Input1 : VIC_Source: specifies the number of the source line. | |
| * This parameter can be one of the following values: | |
| * - WDG_ITLine : VIC source 0 | |
| * - SW_ITLine : VIC source 1 | |
| * - ARMRX_ITLine : VIC source 2 | |
| * - ARMTX_ITLine : VIC source 3 | |
| * - TIM0_ITLine : VIC source 4 | |
| * - TIM1_ITLine : VIC source 5 | |
| * - TIM2_ITLine : VIC source 6 | |
| * - TIM3_ITLine : VIC source 7 | |
| * - USBHP_ITLine : VIC source 8 | |
| * - USBLP_ITLine : VIC source 9 | |
| * - SCU_ITLine : VIC source 10 | |
| * - ENET_ITLine : VIC source 11 | |
| * - DMA_ITLine : VIC source 12 | |
| * - CAN_ITLine : VIC source 13 | |
| * - MC_ITLine : VIC source 14 | |
| * - ADC_ITLine : VIC source 15 | |
| * - UART0_ITLine : VIC source 16 | |
| * - UART1_ITLine : VIC source 17 | |
| * - UART2_ITLine : VIC source 18 | |
| * - I2C0_ITLine : VIC source 19 | |
| * - I2C1_ITLine : VIC source 20 | |
| * - SSP0_ITLine : VIC source 21 | |
| * - SSP1_ITLine : VIC source 22 | |
| * - LVD_ITLine : VIC source 23 | |
| * - RTC_ITLine : VIC source 24 | |
| * - WIU_ITLine : VIC source 25 | |
| * - EXTIT0_ITLine: VIC source 26 | |
| * - EXTIT1_ITLine: VIC source 27 | |
| * - EXTIT2_ITLine: VIC source 28 | |
| * - EXTIT3_ITLine: VIC source 29 | |
| * - USBWU_ITLine : VIC source 30 | |
| * - PFQBC_ITLine : VIC source 31 | |
| * Input2 : VIC_Priority: specifies the priority of the interrupt. | |
| * It can be a value from 0 to 15. 0 is the highest priority. | |
| * Input3 : void (*VIC_VectAddress)(void): specifies the ISR vector | |
| * address pointer. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| static void VIC_ISRVectAddConfig(u16 VIC_Source, u16 VIC_Priority, \ | |
| void (*VIC_VectAddress)(void)) | |
| { | |
| if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ | |
| VIC0->VAiR[VIC_Priority] = (u32)VIC_VectAddress; | |
| else /* VIC1 */ | |
| VIC1->VAiR[VIC_Priority] = (u32)VIC_VectAddress; | |
| } | |
| /******************************************************************************* | |
| * Function Name : VIC_GetISRVectAdd | |
| * Description : Get the ISR vector address of the correspondent line. | |
| * Input : VIC_Source: specifies the number of the source line. | |
| * This parameter can be one of the following values: | |
| * - WDG_ITLine : VIC source 0 | |
| * - SW_ITLine : VIC source 1 | |
| * - ARMRX_ITLine : VIC source 2 | |
| * - ARMTX_ITLine : VIC source 3 | |
| * - TIM0_ITLine : VIC source 4 | |
| * - TIM1_ITLine : VIC source 5 | |
| * - TIM2_ITLine : VIC source 6 | |
| * - TIM3_ITLine : VIC source 7 | |
| * - USBHP_ITLine : VIC source 8 | |
| * - USBLP_ITLine : VIC source 9 | |
| * - SCU_ITLine : VIC source 10 | |
| * - ENET_ITLine : VIC source 11 | |
| * - DMA_ITLine : VIC source 12 | |
| * - CAN_ITLine : VIC source 13 | |
| * - MC_ITLine : VIC source 14 | |
| * - ADC_ITLine : VIC source 15 | |
| * - UART0_ITLine : VIC source 16 | |
| * - UART1_ITLine : VIC source 17 | |
| * - UART2_ITLine : VIC source 18 | |
| * - I2C0_ITLine : VIC source 19 | |
| * - I2C1_ITLine : VIC source 20 | |
| * - SSP0_ITLine : VIC source 21 | |
| * - SSP1_ITLine : VIC source 22 | |
| * - LVD_ITLine : VIC source 23 | |
| * - RTC_ITLine : VIC source 24 | |
| * - WIU_ITLine : VIC source 25 | |
| * - EXTIT0_ITLine: VIC source 26 | |
| * - EXTIT1_ITLine: VIC source 27 | |
| * - EXTIT2_ITLine: VIC source 28 | |
| * - EXTIT3_ITLine: VIC source 29 | |
| * - USBWU_ITLine : VIC source 30 | |
| * - PFQBC_ITLine : VIC source 31 | |
| * Output : None | |
| * Return : The correspondent ISR vector address. | |
| *******************************************************************************/ | |
| u32 VIC_GetISRVectAdd(u16 VIC_Source) | |
| { | |
| if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ | |
| return VIC0->VAiR[VIC_Source]; | |
| else /* VIC1 */ | |
| return VIC1->VAiR[VIC_Source - VIC_REGISTER_NUMBER]; | |
| } | |
| /******************************************************************************* | |
| * Function Name : VIC_VectEnableConfig | |
| * Description : Enable the vector interrupt. | |
| * Input1 : VIC_Source: specifies the number of the source line. | |
| * This parameter can be one of the following values: | |
| * - WDG_ITLine : VIC source 0 | |
| * - SW_ITLine : VIC source 1 | |
| * - ARMRX_ITLine : VIC source 2 | |
| * - ARMTX_ITLine : VIC source 3 | |
| * - TIM0_ITLine : VIC source 4 | |
| * - TIM1_ITLine : VIC source 5 | |
| * - TIM2_ITLine : VIC source 6 | |
| * - TIM3_ITLine : VIC source 7 | |
| * - USBHP_ITLine : VIC source 8 | |
| * - USBLP_ITLine : VIC source 9 | |
| * - SCU_ITLine : VIC source 10 | |
| * - ENET_ITLine : VIC source 11 | |
| * - DMA_ITLine : VIC source 12 | |
| * - CAN_ITLine : VIC source 13 | |
| * - MC_ITLine : VIC source 14 | |
| * - ADC_ITLine : VIC source 15 | |
| * - UART0_ITLine : VIC source 16 | |
| * - UART1_ITLine : VIC source 17 | |
| * - UART2_ITLine : VIC source 18 | |
| * - I2C0_ITLine : VIC source 19 | |
| * - I2C1_ITLine : VIC source 20 | |
| * - SSP0_ITLine : VIC source 21 | |
| * - SSP1_ITLine : VIC source 22 | |
| * - LVD_ITLine : VIC source 23 | |
| * - RTC_ITLine : VIC source 24 | |
| * - WIU_ITLine : VIC source 25 | |
| * - EXTIT0_ITLine: VIC source 26 | |
| * - EXTIT1_ITLine: VIC source 27 | |
| * - EXTIT2_ITLine: VIC source 28 | |
| * - EXTIT3_ITLine: VIC source 29 | |
| * - USBWU_ITLine : VIC source 30 | |
| * - PFQBC_ITLine : VIC source 31 | |
| * Input2 : VIC_Priority: specifies the priority of the interrupt. | |
| * It can be a value from 0 to 15. 0 is the highest priority. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| static void VIC_VectEnableConfig(u16 VIC_Source, u16 VIC_Priority) | |
| { | |
| if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ | |
| VIC0->VCiR[VIC_Priority] |= VIC_VECTOR_ENABLE_MASK; | |
| else /* VIC1 */ | |
| VIC1->VCiR[VIC_Priority] |= VIC_VECTOR_ENABLE_MASK; | |
| } | |
| /******************************************************************************* | |
| * Function Name : VIC_ITSourceConfig | |
| * Description : Select the interrupt source. | |
| * Input1 : VIC_Source: specifies the number of the source line. | |
| * This parameter can be one of the following values: | |
| * - WDG_ITLine : VIC source 0 | |
| * - SW_ITLine : VIC source 1 | |
| * - ARMRX_ITLine : VIC source 2 | |
| * - ARMTX_ITLine : VIC source 3 | |
| * - TIM0_ITLine : VIC source 4 | |
| * - TIM1_ITLine : VIC source 5 | |
| * - TIM2_ITLine : VIC source 6 | |
| * - TIM3_ITLine : VIC source 7 | |
| * - USBHP_ITLine : VIC source 8 | |
| * - USBLP_ITLine : VIC source 9 | |
| * - SCU_ITLine : VIC source 10 | |
| * - ENET_ITLine : VIC source 11 | |
| * - DMA_ITLine : VIC source 12 | |
| * - CAN_ITLine : VIC source 13 | |
| * - MC_ITLine : VIC source 14 | |
| * - ADC_ITLine : VIC source 15 | |
| * - UART0_ITLine : VIC source 16 | |
| * - UART1_ITLine : VIC source 17 | |
| * - UART2_ITLine : VIC source 18 | |
| * - I2C0_ITLine : VIC source 19 | |
| * - I2C1_ITLine : VIC source 20 | |
| * - SSP0_ITLine : VIC source 21 | |
| * - SSP1_ITLine : VIC source 22 | |
| * - LVD_ITLine : VIC source 23 | |
| * - RTC_ITLine : VIC source 24 | |
| * - WIU_ITLine : VIC source 25 | |
| * - EXTIT0_ITLine: VIC source 26 | |
| * - EXTIT1_ITLine: VIC source 27 | |
| * - EXTIT2_ITLine: VIC source 28 | |
| * - EXTIT3_ITLine: VIC source 29 | |
| * - USBWU_ITLine : VIC source 30 | |
| * - PFQBC_ITLine : VIC source 31 | |
| * Input2 : VIC_Priority: specifies the priority of the interrupt. | |
| * It can be a value from 0 to 15. 0 is the highest priority. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| static void VIC_ITSourceConfig(u16 VIC_Source, u16 VIC_Priority) | |
| { | |
| if (VIC_Source < VIC_REGISTER_NUMBER) /* VIC0 */ | |
| { | |
| VIC0->VCiR[VIC_Priority] &= VIC_IT_SOURCE_MASK; | |
| VIC0->VCiR[VIC_Priority] |= VIC_Source; | |
| } | |
| else /* VIC1 */ | |
| { | |
| VIC1->VCiR[VIC_Priority] &= VIC_IT_SOURCE_MASK; | |
| VIC1->VCiR[VIC_Priority] |= VIC_Source - VIC_REGISTER_NUMBER; | |
| } | |
| } | |
| /******************************************************************************* | |
| * Function Name : VIC_Config | |
| * Description : Configure the ISR, the line, the mode and the priority for | |
| * each interrupt source line. | |
| * Input1 : VIC_Source: specifies the number of the source line. | |
| * This parameter can be one of the following values: | |
| * - WDG_ITLine : VIC source 0 | |
| * - SW_ITLine : VIC source 1 | |
| * - ARMRX_ITLine : VIC source 2 | |
| * - ARMTX_ITLine : VIC source 3 | |
| * - TIM0_ITLine : VIC source 4 | |
| * - TIM1_ITLine : VIC source 5 | |
| * - TIM2_ITLine : VIC source 6 | |
| * - TIM3_ITLine : VIC source 7 | |
| * - USBHP_ITLine : VIC source 8 | |
| * - USBLP_ITLine : VIC source 9 | |
| * - SCU_ITLine : VIC source 10 | |
| * - ENET_ITLine : VIC source 11 | |
| * - DMA_ITLine : VIC source 12 | |
| * - CAN_ITLine : VIC source 13 | |
| * - MC_ITLine : VIC source 14 | |
| * - ADC_ITLine : VIC source 15 | |
| * - UART0_ITLine : VIC source 16 | |
| * - UART1_ITLine : VIC source 17 | |
| * - UART2_ITLine : VIC source 18 | |
| * - I2C0_ITLine : VIC source 19 | |
| * - I2C1_ITLine : VIC source 20 | |
| * - SSP0_ITLine : VIC source 21 | |
| * - SSP1_ITLine : VIC source 22 | |
| * - LVD_ITLine : VIC source 23 | |
| * - RTC_ITLine : VIC source 24 | |
| * - WIU_ITLine : VIC source 25 | |
| * - EXTIT0_ITLine: VIC source 26 | |
| * - EXTIT1_ITLine: VIC source 27 | |
| * - EXTIT2_ITLine: VIC source 28 | |
| * - EXTIT3_ITLine: VIC source 29 | |
| * - USBWU_ITLine : VIC source 30 | |
| * - PFQBC_ITLine : VIC source 31 | |
| * Input2 : VIC_LineMode :specifies the type of interrupt of the source | |
| * line. This parameter can be one of the following values: | |
| * - VIC_IRQ: the correspondent line is configured as IRQ. | |
| * - VIC_FIQ: the correspondent line is configured as FIQ. | |
| * Input3 : VIC_Priority: specifies the priority of the interrupt. | |
| * It can be a value from 0 to 15. 0 is the highest priority. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void VIC_Config(u16 VIC_Source, VIC_ITLineMode VIC_LineMode, u8 VIC_Priority) | |
| { | |
| switch (VIC_Source) | |
| { | |
| case 0: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, WDG_IRQHandler); | |
| break; | |
| case 1: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, SW_IRQHandler); | |
| break; | |
| case 2: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, ARMRX_IRQHandler); | |
| break; | |
| case 3: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, ARMTX_IRQHandler); | |
| break; | |
| case 4: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, TIM0_IRQHandler); | |
| break; | |
| case 5: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, TIM1_IRQHandler); | |
| break; | |
| case 6: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, TIM2_IRQHandler); | |
| break; | |
| case 7: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, TIM3_IRQHandler); | |
| break; | |
| case 8: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, USBHP_IRQHandler); | |
| break; | |
| case 9: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, USBLP_IRQHandler); | |
| break; | |
| case 10: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, SCU_IRQHandler); | |
| break; | |
| case 11: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, ENET_IRQHandler); | |
| break; | |
| case 12: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, DMA_IRQHandler); | |
| break; | |
| case 13: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, CAN_IRQHandler); | |
| break; | |
| case 14: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, MC_IRQHandler); | |
| break; | |
| case 15: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, ADC_IRQHandler); | |
| break; | |
| case 16: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, UART0_IRQHandler); | |
| break; | |
| case 17: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, UART1_IRQHandler); | |
| break; | |
| case 18: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, UART2_IRQHandler); | |
| break; | |
| case 19: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, I2C0_IRQHandler); | |
| break; | |
| case 20: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, I2C1_IRQHandler); | |
| break; | |
| case 21: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, SSP0_IRQHandler); | |
| break; | |
| case 22: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, SSP1_IRQHandler); | |
| break; | |
| case 23: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, LVD_IRQHandler); | |
| break; | |
| case 24: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, RTC_IRQHandler); | |
| break; | |
| case 25: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, WIU_IRQHandler); | |
| break; | |
| case 26: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, EXTIT0_IRQHandler); | |
| break; | |
| case 27: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, EXTIT1_IRQHandler); | |
| break; | |
| case 28: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, EXTIT2_IRQHandler); | |
| break; | |
| case 29: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, EXTIT3_IRQHandler); | |
| break; | |
| case 30: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, USBWU_IRQHandler); | |
| break; | |
| case 31: VIC_ISRVectAddConfig(VIC_Source, VIC_Priority, PFQBC_IRQHandler); | |
| break; | |
| default: break; | |
| } | |
| VIC_ITModeConfig(VIC_Source, VIC_LineMode); | |
| VIC_VectEnableConfig(VIC_Source, VIC_Priority); | |
| VIC_ITSourceConfig(VIC_Source, VIC_Priority); | |
| } | |
| /******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ |