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.

[参考译文] CCS/MSP430FR2311:将 GPIO 中断与 P2、P1中断一起使用时出现问题、中断在同一个项目上工作。

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/585792/ccs-msp430fr2311-problem-using-gpio-interrupts-with-p2-p1-interrupts-work-on-the-same-project

器件型号:MSP430FR2311

工具/软件:Code Composer Studio

我正在尝试设置一个中断、以便在 P2.2的下降沿转换时触发。 为了进行测试、我从 msp430fr231x_P1_03示例代码开始、该示例代码用于触发来自 P1.3的中断并将设置复制到 P2.2。 我已在调试器中签入、当按下按钮时 P2IN 寄存器正在改变。 我还尝试通过软件设置 P2IFG、成功地触发 P2中断。 问题是当按下按钮时、P2IFG 寄存器未被置位。  

我哪里出错了? 这应该是一件非常简单的事情。

#include 

int main (void)
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器

//配置 GPIO
P1OUT &=~BIT0; //清除已定义加电状态的 P1.0输出锁存器
P1DIR |= BIT0; //将 P1.0设置为输出方向

P1OUT |= BIT3; //将 P1.3配置为上拉
P1REN |= BIT3; // P1.3上拉寄存器使能
P1IES |= BIT3; // P1.3高/低边沿
P1IE |= BIT3; // P1.3中断被启用

P2OUT |= BIT2;
P2REN |= BIT2;
P2IES |= BIT2;
P2IE |= BIT2;

//禁用 GPIO 上电默认高阻抗模式
//激活先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;

P1IFG &=~BIT3; // P1.3 IFG 被清零
P2IFG &=~BIT2;

while (1)
{
_bis_SR_register (LPM3_bits | GIE);//输入 LPM3、带中断
__no_operation(); //进行调试
P1OUT ^= BIT0; // P1.0 =切换
}
}

//端口1中断服务例程
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=Port1_vector
__interrupt void Port_1 (void)
#Elif defined (__GNU__)
void __attribute__((interrupt (port1_vector))#if Compiler_1 (void!
)#void Port 1
(void!)
#endif
{
P1IFG &=~BIT3; //清除 P1.3 IFG
//P2IFG |= BIT2;//测试以查看中断是否由软件触发
__BIC_SR_REGISTER_ON_EXIT (LPM3_BITS);//退出 LPM3
}

#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=port2_vector
__interrupt void Port_2 (void)
#elif defined (__GPort1_COMPRESU_
(void)(void Port1)(void)(void Port1)(void)(void Port1)(void Port1)(void (void 1)(void Port1)

(void (void 1)
#endif
{
P2IFG &=~BIT2; //清除 P2.2 IFG
__BIC_SR_REGISTER_ON_EXIT (LPM3_BITS);//退出 LPM3
} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    进一步挖掘已解决了此问题的根源。 数据表第44页的小脚注表示该处理器的 P2.2-2.5上没有中断可用。

    最好在引脚列表中的某个更清晰的地方提及这一点。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您发布问题解决方案、并提出您对 MSP430 FRAM 器件上引脚中断相关信息可用性的担忧。 它在数据表的多个不同位置提供、但在假设所有引脚均可中断的情况下很难发现。

    此致、
    Ryan