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.

[参考译文] MSP430FR2355:ISR -- PC 问题

Guru**** 2538930 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/896125/msp430fr2355-isr----pc-question

器件型号:MSP430FR2355

我有代码行、在这里我启用 ISR

UCA1IFG |= UCTXIFG;//人为生成 IRQ 以开始 ACK 过程
如果(* PTX!='\0')
while (1);

ISR 中的值

USCI_UART_UCTXIFG 案例:
如果(TX){
UCA1TXBUF =* PTX;
PTX++;
}
_BIC_SR_REGISTER_ON_EXIT (LPM3_BITS);
中断;

我的问题:

当我进入 ISR 时、在程序计数器上放置哪一行代码?  是生成 ISR 的行 UC1AIFG、还是 ISR 之后的行?  我发现、离开 ISR 后、我的代码未按预期运行。  另外、在该注释中、当我们从 ISR 返回并唤醒时、哪个行会从堆栈中弹出并首先处理?

有人可以评论吗?




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

    中断返回将堆栈的内容直接放入 PC 寄存器中、因此堆栈 PC 是下一条要执行的指令。 [参考 UG (SLAU445I)第4.2]这通常是但不一定是下一行代码、具体取决于优化器/代码生成器的作用。