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:当两个中断同时触发时会发生什么情况?

Guru**** 2582415 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/896120/msp432p401r-what-happens-when-two-interrupts-trigger-at-the-same-time

器件型号:MSP432P401R
Thread 中讨论的其他器件:SysConfig

大家好、总的来说、我对微控制器的经验不多、所以如果这个问题比较基本、请原谅我。

我将使用 SysConfig 在 CCS 中创建一个项目来配置我的 MSP432。 我目前有三个中断使能引脚--在下降沿,它会导致两个不同的 ADC 采样,对两个测量执行一些数学运算,并使用 UART 发送一些数据。

我的一个问题是、如果两个下降沿同时发生、会发生什么行为? 其中一个中断是否会被完全忽略? 或者、其中一个是否得到"缓冲"、回调函数按顺序执行? 在 SysConfig 中、中断优先级似乎是全局的、会影响所有中断的优先级、因此似乎无法为 不同的中断分配不同的优先级。

此致、

吴敏嘉

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

    如果两个相同优先级触发器的不同 IRQ 同时触发(或启用了中断挂起)、编号较低的 IRQn 会首先发生。 另一个将保持挂起状态、直到第一个 ISR 完成。 [参考 DDI0403E 修订版 B、B1.5.4]

    同一端口中的两个引脚共享一个 IRQ。 您需要检查 IFG 寄存器(真正的 IFG&IE)以查看是否有多个被触发。

    您可以使用 NVIC_setPriority 设置 IRQ 优先级。

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

    Bruce、您好!

    感谢您的回复。 同一个"端口"到底是什么意思? 如何检查引脚(P5.4、P5.5、P5.6)是否位于同一端口?

    如果多个中断请求同时使用相同的 IRQ 编号触发、会发生什么情况?

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

    P5.4、P5.5和 P5.6都位于端口"p5"上。 [参考 MSP432P TRM (SLAU356H)第12.1节]

    每个 IRQn 中 NVIC 只有一个挂起位。 如果源(设备、例如)设置为挂起且已挂起的 IRQn、则无效。 通常情况下、具有多个中断原因但具有单个 IRQn 的器件具有单独的寄存器、例如端口 IFG 寄存器、并具有更详细的信息。

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

    明白了。 那么、如果我想避免检查 IFG 寄存器、在我的情况下、将其他中断移动到不同端口中的其他引脚、即 P1-4、P6-...就足够了吗?

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

    是的、可以。 但检查寄存器比调用(附加) ISR 要便宜得多。