⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 91x_vic.c

📁 a set or ARM9 examples by STM
💻 C
📖 第 1 页 / 共 3 页
字号:
/******************** (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.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -