launchpad关于外部中断的问题(只触摸一下按钮就中断了)
[复制链接]
用的是G2553,写了一个很简单的外部中断的程序。
运行后发现,只需要轻轻触摸一下按钮S2,就触发中断了,根本不用按下去。
程序如下:
void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR |= BIT0; // Set P1.0 to output direction P1IE = BIT3; //the P2 interrupt is enable P1IFG &= ~BIT3; // P1.3 IFG cleared _BIS_SR(LPM3_bits + GIE); //进入LPM3模式/ 开中断允许 }
#pragma vector=PORT1_VECTOR __interrupt void PORT1 (void) { P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR P1IFG &= ~BIT3; // P1.3 IFG cleared }
后来我发现,主函数加入这一句代码: P1REN |= BIT3; 就可以解决这个问题。 请问这是为什么? 我看CCS自带例程里面的注释,P1REN这个寄存器好像是加上拉电阻,这和按钮的灵敏程度有什么关系?怎么会出现这种情况?
学MSP430时间不长,请教各位前辈、老师。谢谢!
|