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.

[参考译文] CCS/TMS320F28335:TMS320F28335

Guru**** 2581345 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/651279/ccs-tms320f28335-tms320f28335

器件型号:TMS320F28335

工具/软件:Code Composer Studio

嵌套中断是否可以在不在同一组中的两个中断之间发生?

例如,我的应用程序中有两个中断,一个是用于 motro 控制策略的 ADC 中断(组1),因此它对时间很敏感;另一个是用于与主机通信的 SCIRX 中断(组9)。 如果 在 SCIRX  中断 服务例程中程序仍在运行时发生 ADC 中断、如何使  程序切换到 ADC  中断 服务例程?

我在  http://processors.wiki.ti.com/index.php/Interrupt_Nesting_on_C28x 页面上看到 了 C28x 上中断嵌套的一个示例。 如下图所示、注意事项中提到 、不要在该组的 ISR 外部修改 PIEIER 寄存器。  如果违反此规则、则可以触发伪中断 INTx.1。  这是否意味着嵌套的中断仅在同一组中的两个中断之间发生、因为 只有同一组的 PIEIERx 寄存器可以更改?  

在下面显示的示例代码中 ,EPWM1_TZINT_ISR 由 EPWM2_TZINT_ISR 嵌套,它们都属于同一组(组2)。 如果要使 ADC 中断(组1)嵌套在 EPWM1_TZINT_ISR 中,该怎么办?

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

    如果中断位于单独的 PIE 组中、则无需修改任何 PIEIERx 寄存器。 只需清除 INTM 并将 SCIRX ISR 内部的 IER 位设置为0、ADC ISR 就应嵌套。

     

    您提到的注释与针对同一 PIE 组中的中断修改 PIEIERx 的可选步骤相关。 从同一页:

     

    步骤2:设置组优先级:(可选)

    •         修改相应的 PIEIERx 寄存器、以允许为用户设置的优先级更高的组中断提供服务。

     

    由于 SCIRX 和 ADC 在不同的组中,因此不必在此处执行此操作。


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    明白了! 感谢您的回复! 但我认为应该将 IER 位设置为1而不是0来启用中断。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    IER 确实应为1、以便识别中断。 感谢您的指出。