打印
[LPC]

lpc1768中断问题

[复制链接]
2138|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gao695600808|  楼主 | 2015-11-17 15:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
第0第1  p2.10,p2.11外部中断是编码器,第三是gpio中断p2.9按键用中断三通道  问题是  中断三使能可进入中断三  旋转编码器此时无法进入中断01 程序跳入中断三并无法出中断三    关闭中断三  中断01可用,想到优先级问题,NVIC_SetPriority(EINT3_IRQn,5); 已近降级中断三优先级了,可还是无法进入中断01



#define EINT0               0x00000001
#define EINT1               0x00000002
#define EINT3               0x00000008

void EINT0_IRQHandler(void);
void interruptInit( void );
volatile uint32_t plus=1;
void interruptInit(void)
{
LPC_PINCON->PINSEL4 &= ~0x00f00000;
LPC_PINCON->PINSEL4 |=  0x00500000;

相关帖子

沙发
gao695600808|  楼主 | 2015-11-17 15:50 | 只看该作者


{
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);               
}



使用特权

评论回复
板凳
gao695600808|  楼主 | 2015-11-17 15:59 | 只看该作者
已解决 发出来时 脑袋一抽就想到了
这俩
LPC_GPIOINT->IO2IntEnF |= 1<<10;
LPC_GPIOINT->IO2IntEnR |= 1<<11;
是配置gpio中断的  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝