rt,用simplicit 协议站,p20作为按键中断,进入按键中断之后其他io口状态不可用,表现为led及蜂鸣器不可用,i2c外设不可用,程序如下:
按键中断:
void BSP_InitKey() {P2IEN = 0x01;// P2.0 设置为中断方式 1:中断使能PICTL |= 0x08;//下降沿触发IEN2 |= 0x02;//允许P2口中断;P2IFG = 0x00;//初始化中断标志位EA = 1;//打开中断 }
按键IRQ:
#pragma vector = P2INT_VECTOR __interrupt void P2_ISR(void) {EA = 0 ;if(!KEY)//按键中断{NWK_DELAY(100); //延时去抖if(!KEY)//按键中断{Key_flag = 1 ; //Reinit();BSP_InitI2C();Handle_Key();}}P2IFG &=0xFD;//清中断标志P2IF = 0;//清端口0中断标志EA = 1 ; }#pragma vector = P2INT_VECTOR __interrupt void P2_ISR(void) {EA = 0 ;if(!KEY)//按键中断{NWK_DELAY(100); //延时去抖if(!KEY)//按键中断{Key_flag = 1 ;LED_ON('G');}}P2IFG &=0xFD;//清中断标志P2IF = 0;//清端口0中断标志EA = 1 ; }
led初始化函数
void BSP_InitLeds() {P1DIR |= 0x06 ; //P1_0 LED2 REDOUTPUTLED_G = 0 ;LED_R = 0 ; }
Susan Yang:
请问您现在有尝试进行单步调试吗?结果如何?
另外不建议您在中断服务函数内初始化I2C