msp430 launchpad 芯片是m430g2553 无法检测按键 可能是因为没有上拉 然后我配置了上拉电阻 为什么不成功呢 我用电压表测到管脚电压是0
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
P1DIR &=~BIT3; //定义P1.3按键
P1DIR|=BIT0; //定义P1.0led
P1REN|=BIT3;//上拉电阻
P1OUT|=BIT3;
程序在此 求指教
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
MSP430的管脚上拉直接设置PXREN的对应位就行了。更何况LAUNCHPAD的P1.3管脚外部加了一个47K的上拉电阻R34。你检查一下其他原因。
给你一段参考代码,测试好的。
#define BUTTON BIT3
void main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR &= ~BUTTON; P1IFG &= ~(BUTTON); // 开启同步信号的中断处理 P1IES &= ~BUTTON; // 设置下降沿触发中断 P1IE |= BUTTON; // 使能同步管脚的中断 _BIS_SR(GIE); while(1) {
} } #pragma vector = PORT1_VECTOR __interrupt void P1_IRQ(void) { if (P1IFG & BUTTON) { //.....这里加你需要的代码 }
P1IFG &= ~(BUTTON); }
代码部分重新整理下:
#define BUTTON BIT3
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR &= ~BUTTON;
P1IFG &= ~(BUTTON); // 开启同步信号的中断处理
P1IES &= ~BUTTON; // 设置下降沿触发中断
P1IE |= BUTTON; // 使能同步管脚的中断
_BIS_SR(GIE);
while(1) {
}
}
#pragma vector = PORT1_VECTOR
__interrupt void P1_IRQ(void)
{
if (P1IFG & BUTTON)
{ //.....这里加你需要的代码
}
P1IFG &= ~(BUTTON);
}