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

📄 ma_vic.c

📁 NXP LPC系列AMR7的开发程序源码(LCD
💻 C
字号:

/*
*****************************************************************************
**
**      Project     : My project
**
**      Component   : LPC2106 (LPC2106)
**
**      Modulename  : VIC
**
**      Filename    : ma_vic.c
**
**      Abstract    : This file implements a device driver for the VIC
**                    module.
**
**      Compiler    : IAR C compiler
**
**      Date        : 2004-06-23 12:06:42
**
**      License no. : 9503-663-863-6224     Ivan
**
**      Warning     : This file has been automatically generated.
**                    Do not edit this file if you intend to regenerate it.
**
**      This device driver was created by IAR MakeApp version
**      4.02A (NXP LPC210x: 4.00C) for the NXP LPC210x series of
**      microcontrollers.
**
**      (c)Copyright 2004 IAR Systems.
**      Your rights to this file are explained in the IAR MakeApp
**      License Agreement. All other rights reserved.
**
*****************************************************************************
*/

/*
**===========================================================================
**  1       GENERAL
**  1.1     Revisions
**
**  Please read the IAR MakeApp for NXP LPC210x readme file
**
**
**===========================================================================
*/

/*
**===========================================================================
**  1.2     References
**
**  No   Identification          Name or Description
**  ==   ===================     ================================
**
**  1    02/Oct/2003             NXP LPC210x Hardware Manual
**
**===========================================================================
*/

/*
**===========================================================================
**  2.      INCLUDE FILES
**  2.1     Standard include files
**===========================================================================
*/

/*
**===========================================================================
**  2.2     Application include files
**===========================================================================
*/

#include "usercode.h"   /* Usercode macros (see <template.h>) */
#include "ma_tgt.h"     /* Target specific header file */
#include "ma_sfr.h"     /* Special function register bitfield macros */
#include "NXP/iolpc210x.h"  /* Defines Special function registers */

#include <intrinsics.h>
#include "ma_vic.h"     /* VIC Module driver header file */

/*
**===========================================================================
**  3.      DECLARATIONS
**  3.1     Internal constants
**===========================================================================
*/

#define MA_VICINTSELECT_VIC    0x00000000  /* Interrupt Select Register */
#define MA_VICINTSELECT_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICINTENABLE_VIC    0x00000020  /* Interrupt Enable Register */
#define MA_VICINTENABLE_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICINTENCLR_VIC     0x00000000  /* Interrupt Enable Clear Register */
#define MA_VICINTENCLR_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICSOFTINT_VIC      0x00000000  /* Software Interrupt Register */
#define MA_VICSOFTINT_VIC_MASK 0xFFFFFFFF  /* Used bits */
#define MA_VICSOFTINTCLEAR_VIC 0x00000000  /* Software Interrupt Clear Register */
#define MA_VICSOFTINTCLEAR_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICPROTECTION_VIC   0x00000000  /* Protection Enable Register */
#define MA_VICPROTECTION_VIC_MASK 0x00000001 /* Used bits */
#define MA_VICVECTADDR_VIC     0x00000000  /* Vector Address Register */
#define MA_VICVECTADDR_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICDEFVECTADDR_VIC  0x00000000  /* Default Vector Address Register */
#define MA_VICDEFVECTADDR_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR0_VIC    0x00000000  /* Vector Address Register 0 */
#define MA_VICVECTADDR0_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR1_VIC    0x00000000  /* Vector Address Register 1 */
#define MA_VICVECTADDR1_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR2_VIC    0x00000000  /* Vector Address Register 2 */
#define MA_VICVECTADDR2_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR3_VIC    0x00000000  /* Vector Address Register 3 */
#define MA_VICVECTADDR3_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR4_VIC    0x00000000  /* Vector Address Register 4 */
#define MA_VICVECTADDR4_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR5_VIC    0x00000000  /* Vector Address Register 5 */
#define MA_VICVECTADDR5_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR6_VIC    0x00000000  /* Vector Address Register 6 */
#define MA_VICVECTADDR6_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR7_VIC    0x00000000  /* Vector Address Register 7 */
#define MA_VICVECTADDR7_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR8_VIC    0x00000000  /* Vector Address Register 8 */
#define MA_VICVECTADDR8_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR9_VIC    0x00000000  /* Vector Address Register 9 */
#define MA_VICVECTADDR9_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR10_VIC   0x00000000  /* Vector Address Register 10 */
#define MA_VICVECTADDR10_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR11_VIC   0x00000000  /* Vector Address Register 11 */
#define MA_VICVECTADDR11_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR12_VIC   0x00000000  /* Vector Address Register 12 */
#define MA_VICVECTADDR12_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR13_VIC   0x00000000  /* Vector Address Register 13 */
#define MA_VICVECTADDR13_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR14_VIC   0x00000000  /* Vector Address Register 14 */
#define MA_VICVECTADDR14_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTADDR15_VIC   0x00000000  /* Vector Address Register 15 */
#define MA_VICVECTADDR15_VIC_MASK 0xFFFFFFFF /* Used bits */
#define MA_VICVECTCNTL0_VIC    0x00000020  /* Vector Control Register 0 */
#define MA_VICVECTCNTL0_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL1_VIC    0x00000000  /* Vector Control Register 1 */
#define MA_VICVECTCNTL1_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL2_VIC    0x00000000  /* Vector Control Register 2 */
#define MA_VICVECTCNTL2_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL3_VIC    0x00000000  /* Vector Control Register 3 */
#define MA_VICVECTCNTL3_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL4_VIC    0x00000000  /* Vector Control Register 4 */
#define MA_VICVECTCNTL4_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL5_VIC    0x00000000  /* Vector Control Register 5 */
#define MA_VICVECTCNTL5_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL6_VIC    0x00000000  /* Vector Control Register 6 */
#define MA_VICVECTCNTL6_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL7_VIC    0x00000000  /* Vector Control Register 7 */
#define MA_VICVECTCNTL7_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL8_VIC    0x00000000  /* Vector Control Register 8 */
#define MA_VICVECTCNTL8_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL9_VIC    0x00000000  /* Vector Control Register 9 */
#define MA_VICVECTCNTL9_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL10_VIC   0x00000000  /* Vector Control Register 10 */
#define MA_VICVECTCNTL10_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL11_VIC   0x00000000  /* Vector Control Register 11 */
#define MA_VICVECTCNTL11_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL12_VIC   0x00000000  /* Vector Control Register 12 */
#define MA_VICVECTCNTL12_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL13_VIC   0x00000000  /* Vector Control Register 13 */
#define MA_VICVECTCNTL13_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL14_VIC   0x00000000  /* Vector Control Register 14 */
#define MA_VICVECTCNTL14_VIC_MASK 0x0000003F /* Used bits */
#define MA_VICVECTCNTL15_VIC   0x00000000  /* Vector Control Register 15 */
#define MA_VICVECTCNTL15_VIC_MASK 0x0000003F /* Used bits */

/*
**===========================================================================
**  3.2     Internal macros
**===========================================================================
*/

/*
**===========================================================================
**  3.3     Internal type definitions
**===========================================================================
*/

/*
**===========================================================================
**  3.4     Global variables (declared as 'extern' in some header file)
**===========================================================================
*/

/*
**===========================================================================
**  3.5     Internal function prototypes (defined in Section 5)
**===========================================================================
*/

/*
**===========================================================================
**  3.6     Internal variables
**===========================================================================
*/

/*
**===========================================================================
**  4.      GLOBAL FUNCTIONS (declared as 'extern' in some header file)
**===========================================================================
*/




void MA_Init_VIC( void )
/*
**---------------------------------------------------------------------------
**
**  Abstract:
**      Initialises the VIC module. Only sets those registers with
**      values not equal to the power-on reset values.
**
**  Parameters:
**      None
**
**  Returns:
**      None
**
**---------------------------------------------------------------------------
*/
{
    /*--- Handle user code on function entry ---*/
    ENTER_MA_INIT_VIC;

    /*--- Disable interrupts ---*/
    __disable_interrupt();

    /*--- Enable VIC registers access ---*/
    VICProtection = 0;

    /*--- Init VIC registers ---*/
#if (MA_VICINTENABLE_VIC != 0)
    VICIntEnable = MA_VICINTENABLE_VIC;
#endif
#if (MA_VICINTSELECT_VIC != 0)
    VICIntSelect = MA_VICINTSELECT_VIC;
#endif
#if (MA_VICVECTCNTL0_VIC != 0)
    VICVectCntl0 = ( VICVectCntl0 & ~MA_VICVECTCNTL0_VIC_MASK ) | MA_VICVECTCNTL0_VIC;
#endif
#if (MA_VICVECTCNTL1_VIC != 0)
    VICVectCntl1 = ( VICVectCntl1 & ~MA_VICVECTCNTL1_VIC_MASK ) | MA_VICVECTCNTL1_VIC;
#endif
#if (MA_VICVECTCNTL2_VIC != 0)
    VICVectCntl2 = ( VICVectCntl2 & ~MA_VICVECTCNTL2_VIC_MASK ) | MA_VICVECTCNTL2_VIC;
#endif
#if (MA_VICVECTCNTL3_VIC != 0)
    VICVectCntl3 = ( VICVectCntl3 & ~MA_VICVECTCNTL3_VIC_MASK ) | MA_VICVECTCNTL3_VIC;
#endif
#if (MA_VICVECTCNTL4_VIC != 0)
    VICVectCntl4 = ( VICVectCntl4 & ~MA_VICVECTCNTL4_VIC_MASK ) | MA_VICVECTCNTL4_VIC;
#endif
#if (MA_VICVECTCNTL5_VIC != 0)
    VICVectCntl5 = ( VICVectCntl5 & ~MA_VICVECTCNTL5_VIC_MASK ) | MA_VICVECTCNTL5_VIC;
#endif
#if (MA_VICVECTCNTL6_VIC != 0)
    VICVectCntl6 = ( VICVectCntl6 & ~MA_VICVECTCNTL6_VIC_MASK ) | MA_VICVECTCNTL6_VIC;
#endif
#if (MA_VICVECTCNTL7_VIC != 0)
    VICVectCntl7 = ( VICVectCntl7 & ~MA_VICVECTCNTL7_VIC_MASK ) | MA_VICVECTCNTL7_VIC;
#endif
#if (MA_VICVECTCNTL8_VIC != 0)
    VICVectCntl8 = ( VICVectCntl8 & ~MA_VICVECTCNTL8_VIC_MASK ) | MA_VICVECTCNTL8_VIC;
#endif
#if (MA_VICVECTCNTL9_VIC != 0)
    VICVectCntl9 = ( VICVectCntl9 & ~MA_VICVECTCNTL9_VIC_MASK ) | MA_VICVECTCNTL9_VIC;
#endif
#if (MA_VICVECTCNTL10_VIC != 0)
    VICVectCntl10 = ( VICVectCntl10 & ~MA_VICVECTCNTL10_VIC_MASK ) | MA_VICVECTCNTL10_VIC;
#endif
#if (MA_VICVECTCNTL11_VIC != 0)
    VICVectCntl11 = ( VICVectCntl11 & ~MA_VICVECTCNTL11_VIC_MASK ) | MA_VICVECTCNTL11_VIC;
#endif
#if (MA_VICVECTCNTL12_VIC != 0)
    VICVectCntl12 = ( VICVectCntl12 & ~MA_VICVECTCNTL12_VIC_MASK ) | MA_VICVECTCNTL12_VIC;
#endif
#if (MA_VICVECTCNTL13_VIC != 0)
    VICVectCntl13 = ( VICVectCntl13 & ~MA_VICVECTCNTL13_VIC_MASK ) | MA_VICVECTCNTL13_VIC;
#endif
#if (MA_VICVECTCNTL14_VIC != 0)
    VICVectCntl14 = ( VICVectCntl14 & ~MA_VICVECTCNTL14_VIC_MASK ) | MA_VICVECTCNTL14_VIC;
#endif
#if (MA_VICVECTCNTL15_VIC != 0)
    VICVectCntl15 = ( VICVectCntl15 & ~MA_VICVECTCNTL15_VIC_MASK ) | MA_VICVECTCNTL15_VIC;
#endif

    /*--- Enable interrupts ---*/
    __enable_interrupt();

    /*--- Handle user code on function exit ---*/
    EXIT_MA_INIT_VIC;

} /* MA_Init_VIC */






void MA_SetISRAddress_VIC( U8 *ISRAddress, U8 SlotNr )
/*
**---------------------------------------------------------------------------
**
**  Abstract:
**      Sets interrupt service routine address for the selected IRQ slot.
**
**  Parameters:
**      ISRAddress  The start address of the interrupt service routine
**      SlotNr      The IRQ slot (0-15)
**
**  Returns:
**      None
**
**---------------------------------------------------------------------------
*/
{
    U32 volatile *pAddrReg;

    /*--- Handle user code on function entry ---*/
    ENTER_MA_SETISRADDRESS_VIC;

    /*--- Calculate Vector address register address ---*/
    pAddrReg = &VICVectAddr0 + SlotNr;

    /*--- Load this register with the ISR start address ---*/
    *pAddrReg = (unsigned int)ISRAddress;

    /*--- Handle user code on function exit ---*/
    EXIT_MA_SETISRADDRESS_VIC;

} /* MA_SetISRAddress_VIC */





__irq __arm void  IRQ_Handler( void )
 /*
**---------------------------------------------------------------------------
**
**  Abstract:
**      Vectored IRQ exception handler. Calls vectored interrupt function.
**
**  Parameters:
**      None
**
**  Returns:
**      None
**
**---------------------------------------------------------------------------
*/
{
    void (*interrupt_function)();
    unsigned int vector;

    vector = VICVectAddr;   // Get interrupt vector.
    interrupt_function = (void(*)())vector;
    (*interrupt_function)();  // Call vectored interrupt function.

    VICVectAddr = 0;        // Clear interrupt in VIC.

} /* irq_handler */





/*
**===========================================================================
**  5.      INTERNAL FUNCTIONS (declared in Section 3.5)
**===========================================================================
*/

/*
**===========================================================================
** END OF FILE
**===========================================================================
*/



⌨️ 快捷键说明

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