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.

[参考译文] MSP432P401R:在同一端口上设置2个 GPIO 中断?

Guru**** 2527540 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/928266/msp432p401r-setting-2-gpio-interrupts-on-on-same-port

器件型号:MSP432P401R

你好

MSP432P401R LaunchPadTm开发套件(MSP‑EXP432P401R)有2个开关;S1和 S2连接到同一端口但不同的引脚;S1连接到 P1.1、S2连接到 P1.4

我的问题是、如何在端口1上使用2个不同的 ISR 设置2个中断、例如、当按下 S1时、ISR1被执行、当按下 S2时、ISR2被执行?

提前感谢   

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

    你不能。 它们都连接到同一个矢量(PORT1_IRQHandler)、该矢量将为其中一个(或两者)调用。

    您可以通过检查 P1->IFG (和/或 P1->IN、具体取决于您的应用)在 ISR 中进行区分。 类似如下:

    void Port1_IRQHandler (void)
    {
    如果(P1->IFG & BIT1){// S1 (P1.1)被触发?
    // S1材料
    P1->IFG &=~BIT1;
    }
    如果(P1->IFG & BIT4){// S2 (P1.4)被触发?
    // S2数据
    P1->IFG &=~BIT4;
    }
    返回;
    }
    

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

    非常感谢  

    这实际上起作用了!

    我有一个小问题、现在我正在从 TI 网站上的 prof Valvano 讲座中学到、当然、我也在查看 MSP432数据表、Launchpad 用户指南、我在这里真正缺少的是编程指南

    为了更清楚、这是我第一次知道我可以使用 P1->IFG 指向端口1清除标志寄存器上的某些引脚(我用于 driverlib、例如 GPIO_clearInterruptFlag (GPIO_PORT_P1、GPIO_PIN4);)

    那么、MSP432有哪些可用的编程指南?

    提前感谢

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

    您提到了数据表(SLAS826G)、其中描述了器件的详细信息(P401R)。 《技术参考手册》(SLAU356I)对"P"系列进行了更全面/更全面的描述、其中介绍了寄存器位的用途。