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

📄 extint.c

📁 Keil工程例子,NXP新出的芯片lpc2478的示例代码
💻 C
字号:
/*****************************************************************************
 *   extint.c:  External interrupt API C file for NXP LPC23xx/24xx 
 *   Family Microprocessors
 *
 *   Copyright(C) 2006, NXP Semiconductor
 *   All rights reserved.
 *
 *   History
 *   2006.07.13  ver 1.00    Prelimnary version, first Release
 *
*****************************************************************************/
#include "LPC230x.h"                        /* LPC23xx/24xx definitions */
#include "type.h"
#include "irq.h"
#include "extint.h"

volatile DWORD eint0_counter;

/*****************************************************************************
** Function name:		EINT0_Handler
**
** Descriptions:		external INT handler
**
** parameters:			None
** Returned value:		None
** 
*****************************************************************************/
void EINT0_Handler (void) __irq 
{
    EXTINT = EINT0;		/* clear interrupt */
	EXTINT = EINT2;
	EXTINT = EINT3;
		
    IENABLE;			/* handles nested interrupt */
    eint0_counter++;
    if ( eint0_counter & 0x01 )	/* alternate the LED display */
    {
    //	FIO2SET = 0x0000000F;	/* turn off P2.0~3 */	
    //	FIO2CLR = 0x000000F0;	/* turn on P2.4~7 */
	    FIO3SET = 0x00FF0000;
	   	FIO3CLR = 0x003C0000;
    }
   else
    {
	    FIO3SET = 0x00FF0000;
	   	FIO3CLR = 0x00C30000 ;
  //  	FIO2SET = 0x000000F0;	/* turn on P2.0~3 */	
    //	FIO2CLR = 0x0000000F;	/* turn off P2.4~7 */
    }



    IDISABLE;
    VICVectAddr = 0;		/* Acknowledge Interrupt */
}

/*****************************************************************************
** Function name:		EINTInit
**
** Descriptions:		Initialize external interrupt pin and
**				install interrupt handler
**
** parameters:			None
** Returned value:		true or false, return false if the interrupt
**				handler can't be installed to the VIC table.
** 
*****************************************************************************/
DWORD EINTInit( void )
{
    PINSEL4 = 0x05500000;	/* set P2.10 as EINT0 and
						//	P2.0~7 GPIO output */
	//FIO2DIR = 0x000000FF;	/* port 2, bit 0~7 only */
    //FIO2CLR = 0x000000FF;	/* turn off LEDs */
   PINSEL7 = 0x00000000;
   FIO3DIR = 0x00FF0000;	 
   FIO3CLR = 0x00FF0000;

	IO2_INT_EN_F = 0x200;	/* Port2.10 is falling edge. */
	IO2_INT_EN_F |= (1<<12);
    EXTMODE = EINT0_EDGE;	/* INT0 edge trigger */
	EXTMODE |= EINT3_EDGE;
    EXTPOLAR = 0;			/* INT0 is falling edge by default */
   // VICIntEnable |= (1<<17); 
    if ( install_irq( EINT0_INT, (void *)EINT0_Handler, HIGHEST_PRIORITY ) == FALSE )
    {
		return (FALSE);
    }
        
    return( TRUE );
}

/******************************************************************************
**                            End Of File
******************************************************************************/

⌨️ 快捷键说明

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