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.

[参考译文] MSP430FR5994:如何在禁用 ISR (禁用 GIE)后完全忽略 UART 消息?

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1075840/msp430fr5994-how-to-completely-ignore-uart-messages-after-disable-isr-disable-gie

部件号:MSP430FR5994

我想在关闭 GIE 后的这段时间内完全忽略中断事件,而不仅仅是屏蔽它。


当我在打开 GIE 之前禁用它时,仍会出现 UART 消息,如何完全忽略它?

因为当我再次启用 GIE 时,我突然进入 ISR 处理它,我不想这样做。

如果在  启用 GIE 之前清除 UART 接收标志( UCA0IFG &=~UCRXIFG ),它是否具有所需的效果?

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

    IFG 是独立于各自独立的 IES 而设定的。

    要禁用接收中断,请使用以下命令:

    > UCA0IE &=~UCRXIE; //禁用 Rx 中断

    当您想再次接受它们时:

    > UCA0IFG &=~UCRXIFG; //清除任何过时的 Rx 中断

    > UCA0IE |= UCRXIE;  //启用 Rx 中断

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

    谢谢,我想这就是我需要的。

    我可以在这里提出类似的问题吗?

    完全禁用 Tick ISR 的方法是否可以利用以下方法?

    TA0CTL 和=~MC;  //禁用计时器中断

    当我想再次接受它们时:

    TA0CTL |= MC;  //启用计时器中断

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

    设置 MC=0会停止(冻结)计时器;它不会禁用计时器中断。 (实际上,大多数计时器中断事件不会在计时器停止时发生,但任何剩余 IFG 仍可以触发。)

    以上用于 UCRXIE 的模拟是 TAIE 和 CCIE (适用于 TACIF 和 CCIFG)。 在这方面,最佳做法通常是在启用 IE 之前清除任何陈旧的 IFG。

    ---

    未经请求:名称 MC (“MC 字段中的所有位”)与您的第一行代码相关,但与您的第二行代码无关。 “MC”恰好与“MC_3”或“MC__updown”相同,我猜这不是您所想到的。