launchpad关于外部中断的问题(只触摸一下按钮就中断了)

2019-03-24 13:55发布

用的是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时间不长,请教各位前辈、老师。谢谢! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
ddllxxrr
1楼-- · 2019-03-24 21:36
yujinjing13
2楼-- · 2019-03-24 22:03
 精彩回答 2  元偷偷看……
ddllxxrr
3楼-- · 2019-03-25 02:29
yujinjing13
4楼-- · 2019-03-25 08:22
能不能说得详细点?
实际情况是:我摸一下S2,就可以让LED亮或灭,基本每次都可以,很稳定的。
加上上拉以后,按键反而会偶尔出现抖动。
s3737841
5楼-- · 2019-03-25 09:56
 精彩回答 2  元偷偷看……
majtsdd
6楼-- · 2019-03-25 14:58
多谢多谢了,我也纠结好久了

一周热门 更多>

相关问题

    相关文章