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.

[参考译文] MSP430FR5989:从 RAM 执行中断向量

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/766405/msp430fr5989-executing-interrupt-vectors-from-ram

器件型号:MSP430FR5989

您好!

您是否有任何示例展示了如何在 RAM 中使用 ISR (链接并加载到闪存、但从 RAM 执行)? 我了解如何将矢量表重新定位到 RAM 顶部、但我在 LPM 唤醒时尝试从 RAM 执行全部或部分 ISR、而无需从 FRAM 获取任何内容。

我使用的是 IAR 编译器工具、如果您能向我指出这样一个示例、它会有所帮助。

我还想看看是否有办法找出发生了哪个外设(可屏蔽的)中断,例如:如果我将一些外设中断指向同一个处理程序,我是否有办法识别处理程序中发生了哪些中断?  简而言之、我正在寻找类似于 SYSSNIV/SYSUNIV 的东西、但用于可屏蔽外设中断。

此致

Santosh Athuru  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我稍后会查看详细信息并回复您
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    请尝试此操作

    //显示如何放置 ISR 以从 RAM 运行的示例 ISR
    //如果您不希望 ISR 发生、则必须执行此操作
    //从变通办法中从 FRAM 唤醒代价。
    //确保项目中包含 PMM29_workaround.c。
    // CCS 的端口1中断服务例程
    #pragma CODE_SECTION (PORT_1_ISR、".TI.ramfunc")
    #pragma vector=Port1_vector
    _interrupt void port_1_ISR (void)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉、回答了您的第二个问题。 我是说每个中断源都有相应的标志、如果在一个 ISR 中组合了源、就应该在中断处理程序中使用这些标志。
    以 Port1为例、Port1矢量可由8个不同的端口引脚(如果启用)提供、因此您需要检查 P1IFG.x 位以找出哪个端口触发中断。 每个外设模块都存在此类位。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Dietmar、

    感谢您的回答、是的、第一个答案是肯定的。 第二 个我理解的是、确定中断源的唯一方法是从每个外设读取标志、但在执行此操作时、可能会设置更多的标志。 可以读取的单个寄存器将有助于更好地应用。

    再次感谢您的支持。 我们可以关闭该线程。

    此致

    Santosh Athuru