请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430FR2311 大家好,
我最近购买了MSP430FR2311 LaunchPad板。 我写了一个程序在按下板载按钮(WFP 1.0 1.1)时切换板载LED指示灯(WFP LED)。 编写程序是为了生成端口1中断
在ISR内部,我编写了用于切换LED的代码。 测试时,此工作正常。
现在,我刚刚通过为WFP 1.5 和WFP 2.2 编写相同的LED开关来扩展程序。 我连接了另外两个带有上拉电阻器的外部按钮。 在运行该程序时,我得到了与预期的一样的1.5 和WFP 1.1 中断,但对于WFP 2.2 按钮,却没有生成中断。
在调试P2IN寄存器时,我能够在未按下按钮(上拉模式)时看到第三位处于设置状态,在按下该位处于重置状态时,但不确定为什么不生成中断。
有人能帮我弄清楚这里发生了什么吗? 我将粘贴下面的代码以供参考
此外,我还有一个澄清。 MSP430FR2311 Launchpad中提供的P1的几个GPIO引脚的名称是I/O! 离Pins和WFP很近,2.2 有I/O没有! 这意味着什么? 我的假设是I/O! 默认情况下,是指上拉,而I/O是指下拉。 我的假设是否正确?
int main (void)
{
WDTCTL = WDTPW | WDTHOLD; //停止WDT
P1DIR || BIT0;
P1OUT |= BIT0;
PM5CTL0 &=~LOCKLPM2;
//配置WFP 1.1 和WFP 1.5
P1REN || BIT1 + BIT5;
P1OUT || BIT1+ BIT5;
P1IE |= BIT1+ BIT5;
P1IES |= BIT1+ BIT5;
P1IFG &=~BIT1+ BIT5;
//配置WFP 2.2
P2REN |= BIIT2;
P2OUT || BIIT2;
P2IE |= BIIT2;
P2IES |= BIIT2;
P2IFG &=~BIT2;
_ BIS_SR (GIE);
while (1);
}
#pragma vector = Port1_vector
__interrupt void Port1_ISR(void)
{
开关(__偶 数_IN_RANGE (P1IV,P1IV_P1IFG0))
{
CASE P1IV_P1IFG1://按钮S1已按下
{
P1OUT ^= BIT0;
}
中断;
CASE P1IV_P1IFG5://按钮S2已按下
{
P1OUT ^= BIT0;
}
中断;
默认:
{
}
中断;
}
}
#pragma vector = port2_vector
__interrupt void port2_isr(void){
开关(__偶 数_IN_RANGE (P2IV,P2IV_P2IFG0))
{
Case P2IV_P2IFG2://按钮S3已按下
{
P1OUT ^= BIT0;
}
中断;
默认:
{
}
中断;
}
}