{
LPC_PINCON->PINSEL4 &= ~0x00f00000;
LPC_PINCON->PINSEL4 |= 0x00500000;
LPC_SC->EXTMODE |= 0x00000003;
LPC_SC->EXTPOLAR |= 0x00000001;
LPC_GPIOINT->IO2IntEnF |= 1<<10;
LPC_GPIOINT->IO2IntEnR |= 1<<11;
LPC_PINCON->PINSEL4 &= ~(0X03L<<18);
LPC_PINCON->PINMODE4 &= ~(0X03L<<18);
LPC_PINCON->PINMODE_OD2 &= ~(0X01<<9);
LPC_GPIOINT->IO2IntEnF |= 1<<9;
NVIC_SetPriority(EINT0_IRQn,0);
NVIC_SetPriority(EINT1_IRQn,0);
NVIC_SetPriority(EINT3_IRQn,5);
NVIC_EnableIRQ(EINT0_IRQn);
NVIC_EnableIRQ(EINT1_IRQn);
NVIC_EnableIRQ(EINT3_IRQn);
}
void EINT0_IRQHandler (void)
{
NVIC_DisableIRQ(EINT0_IRQn);
//NVIC_DisableIRQ(EINT3_IRQn);
LPC_SC -> EXTINT = EINT0; //clear interrupt
if((LPC_GPIO2->FIOPIN & 1<<11)==0)
{
Delay(10);
++plus;
UART1_SendString("+++");
}
else //if((LPC_GPIO2->FIOPIN & 1<<11)!=0)
{
if(plus>0)
{
--plus;
UART1_SendString("---");
}
}
NVIC_EnableIRQ(EINT0_IRQn);
//NVIC_EnableIRQ(EINT3_IRQn);
}
void EINT1_IRQHandler (void)
{
NVIC_DisableIRQ(EINT1_IRQn);
//NVIC_DisableIRQ(EINT3_IRQn);
LPC_SC -> EXTINT = EINT1; //clear interrupt
if((LPC_GPIO2->FIOPIN & 1<<10)!=0)
{
Delay(10);
if(plus>0)
{
--plus;
UART1_SendString("---");
}
}
else //if((LPC_GPIO2->FIOPIN & 1<<10)==0)
{
++plus;
UART1_SendString("+++");
}
NVIC_EnableIRQ(EINT1_IRQn);
//NVIC_EnableIRQ(EINT3_IRQn);
}
void EINT3_IRQHandler(void)
//void eint3(void)
{
LPC_SC -> EXTINT = EINT0; //clear interrupt
LPC_SC -> EXTINT = EINT1; //clear interrupt
LPC_SC -> EXTINT = EINT3; //clear interrupt
NVIC_DisableIRQ(EINT3_IRQn);
//NVIC_ClearPendingIRQ(EINT3_IRQn);
if(LPC_GPIOINT->IntStatus &(1<<2))//Èç¹ûp2.x¶Ë¿ÚÓÐÖжÏ
{
if(LPC_GPIOINT->IO2IntStatF &(1<<9))//p2.9ÓÐÖжÏ
{
LPC_GPIOINT->IO2IntClr |= (1<<9);//ÖжÏÇåÁã
if((LPC_GPIO2->FIOPIN1 & 1<<1)==0)
{
++plus;
UART1_SendString("///");
}
}
}
NVIC_EnableIRQ(EINT3_IRQn);
}
|