📄 ma_vic.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 + -