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.

[参考译文] 编译器/MSP430F47187:修改 ISR 的起始代码和起始代码

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/705933/compiler-msp430f47187-modifying-the-prologue-and-epilogue-of-isrs

器件型号:MSP430F47187

工具/软件:TI C/C++编译器

您好!  

在进入 ISR 之前、我需要将其他寄存器推送到堆栈、即 SR 和 PC 以外的其他寄存器。  

是否有办法自动执行此操作、即让编译器插入相应的代码来执行此操作?

或者、我是否需要在 ISR 开始时通过汇编中的入栈指令进行长路由?

谢谢  

此致

Anand

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

    在汇编语言中对推入指令进行编码肯定是最可靠的方法、因为它不依赖于您使用的编译器。

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

    您好、Nathan、  

    感谢您的回复。

    但它有其下侧。 (笑声) 我有两个定时器、RTC、一个 UART、一个 DMA 通道、SD ADC 和 P1.0映射到中断、每个都有自己的 ISR。  

    我需要编写代码来在每个 ISR 中推送和 POP 寄存器。 更不用说、我必须在我们拥有的大约17种软件变体上执行此操作。  

    我认为能够一次性修改 ISR 的起始代码和结束代码、然后让编译器执行繁重的任务是很好的。  

    这样、我就不必担心错过的 POP 指令。 但我想... 我期望太高了。  

    无论如何感谢您的帮助。

    此致

    Anand

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我有多个中断、每个中断都有自己的 ISR 和多种代码变体。 对每个变体的物理写入操作将是乏味的、更不用说、由于丢失的 POP 指令导致堆栈溢出或下溢错误而导致错误的风险了。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Anand、您好!

    我不知道使用 CCS 中的编译器有什么方法可以做到这一点。

    此致、
    Nathan