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

📄 extint.c

📁 以前做的一个仿PLC程序
💻 C
字号:
/*****************************************************************************
 *   extint.c:  External interrupt API C file for NXP LPC17xx 
 *   Family Microprocessors
 *
 *   Copyright(C) 2009, NXP Semiconductor
 *   All rights reserved.
 *
 *   History
 *   2009.05.26  ver 1.00    Prelimnary version, first Release
 *
*****************************************************************************/
#include "..\Drive\PLC_PUBLIC.H"
//#include "type.h"
//#include "extint.h"
#define EINT0		0x00000001
#define EINT0_EDGE	0x00000001
#define EINT1		0x00000002
#define EINT1_EDGE	0x00000002
#define EINT2		0x00000004
#define EINT2_EDGE	0x00000004
#define EINT3		0x00000008
#define EINT3_EDGE	0x00000008
volatile uint32_t eint0_counter,eint1_counter,eint2_counter,eint3_counter;

/*****************************************************************************
** Function name:		EINT0_Handler
**
** Descriptions:		external INT handler
**
** parameters:			None
** Returned value:		None
** 
*****************************************************************************/
void EINT0_IRQHandler (void) 
{
  LPC_SC->EXTINT = EINT0;		/* clear interrupt */
		
   eint0_counter++;
}

void EINT1_IRQHandler (void) 
{
  LPC_SC->EXTINT = EINT1;		/* clear interrupt */
		
   eint1_counter++;
}

void EINT2_IRQHandler (void) 
{
  LPC_SC->EXTINT = EINT2;		/* clear interrupt */
		
   eint2_counter++;
}

void EINT3_IRQHandler (void) 
{
  LPC_SC->EXTINT = EINT3;		/* clear interrupt */
		
   eint3_counter++;
}


/*****************************************************************************
** 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.
** 
*****************************************************************************/
void EINTInit( void )
{
  LPC_PINCON->PINSEL4 |= 0x00100000;	/* set P2.10 as EINT0*/
  LPC_PINCON->PINSEL4 |= 0x00400000;	/* set P2.11 as EINT1*/
  LPC_PINCON->PINSEL4 |= 0x01000000;	/* set P2.12 as EINT2*/
  LPC_PINCON->PINSEL4 |= 0x04000000;	/* set P2.13 as EINT3*/

  LPC_GPIOINT->IO2IntEnF |= 0x0200;	/* Port2.10 is falling edge. */
  LPC_GPIOINT->IO2IntEnF |= 0x0400;	/* Port2.11 is falling edge. */
  LPC_GPIOINT->IO2IntEnF |= 0x0800;	/* Port2.12 is falling edge. */
  LPC_GPIOINT->IO2IntEnF |= 0x1000;	/* Port2.13 is falling edge. */

  LPC_SC->EXTMODE |= EINT0_EDGE;		/* INT0 edge trigger */
  LPC_SC->EXTMODE |= EINT1_EDGE;		/* INT1 edge trigger */
  LPC_SC->EXTMODE |= EINT2_EDGE;		/* INT2 edge trigger */
  LPC_SC->EXTMODE |= EINT3_EDGE;		/* INT3 edge trigger */

  LPC_SC->EXTPOLAR = 0;				/* INT0 is falling edge by default */

  NVIC_EnableIRQ(EINT0_IRQn);
  NVIC_EnableIRQ(EINT1_IRQn);
  NVIC_EnableIRQ(EINT2_IRQn);
  NVIC_EnableIRQ(EINT3_IRQn);
//  return( TRUE );
}

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

⌨️ 快捷键说明

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