用的是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时间不长,请教各位前辈、老师。谢谢!
此帖出自
小平头技术问答
实际情况是:我摸一下S2,就可以让LED亮或灭,基本每次都可以,很稳定的。
加上上拉以后,按键反而会偶尔出现抖动。
一周热门 更多>