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.

[参考译文] TMS320F280025:更低的 ISR 可以嵌套更高的 ISR?

Guru**** 2551110 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/970901/tms320f280025-can-lower-isr-can-nest-higher-isr

器件型号:TMS320F280025
主题中讨论的其他器件:C2000WARE

您好专家、

演示代码[interrupt_ex2_sw_Prioritization ]似乎可以实现 更低的 ISR、可以嵌套更高的 ISR。

其位置为:

C:\ti\c2000Ware_3_03_00_00\driverlib\f28002x\examples\interrupt

但是、在描述中、它强调只有[较高的用户优先级将被服务]。

我在演示代码中没有看到任何重新优先级的 PIE?

如何真正理解嵌套方法、是否只使用此方法、就能实现更低的 ISR 嵌套更高的 ISR?

BR、

Emma

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

    尊敬的 Emma:

    感谢您的提问。 如描述中所述、三个 CPU 定时器的优先级由软件切换。 因此、在脚本中、CPU2计时器不是最高优先级、而是具有最高优先级:

    //! 在这个器件中、CPU 定时器0、1和2的硬件优先级被设定
    //! 因为定时器0具有最高优先级、而定时器2具有最低优先级。
    //! 此示例在软件中配置 CPU Timer0、1和2优先级、使
    其具有//! 在软件和
    //! 打印执行顺序的跟踪。 

    这是在每个 cpuTimer#ISR 函数中实现的、请参阅下面突出显示的注释以了解发生这种情况的位置。

    //
    // cpuTimer0ISR - CpuTimer0的计数
    器//
    __interrupt void
    cpuTimer0ISR (void)
    {
    //
    //将 IER 寄存器保存在栈上
    //
    volatile uint16_t tempPIEIER = HWREGH (PIECTRL_BASE + PIE_O_IER1);
    
    //***** 突出显示了部分*****
    //设置全局和组优先级以允许 CPU 中断
    //具有较高的优先级
    //
    IER |= M_INT1;
    IER &= MINT1;
    HWREGH (PIECTRL_BASE + PIE_O_IER1)&= MG1_7;
    //***** 结束突出显示的部分*****
    (笑声)
    

    上述函数是重新划分 PIE 优先级的基础。 PIE 模块本身是相同的、但软件通过修改全局优先级和组优先级来更改处理哪些中断(请参阅上面突出显示的部分)。 如果这不清楚、请查看主题的以下 wiki 页面:

    https://processors.wiki.ti.com/index.php/Interrupt_Nesting_on_C28x

    此致、

    Vince

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

    遗憾的是、Wiki 自1月15日起被删除。 “已迁移 TI.com 上的相应页面”在哪里?

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

    您好、Stephan、

    很抱歉、您答对了、Wiki 已被删除、而此特定信息已移至 C2000Ware 库中的以下位置(示例本身中也在说明部分中作为注释提及):

    //! 有关 C28x 器件中中断嵌套的更多详细信息、请参阅以下链接:
    //! \docs\C28x_interrupt_nesting\html\index.html 

    请参阅页面的"添加简单软件优先级(嵌套)"部分。

    此致、

    Vince

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

    尊敬的 Vince:

    啊、我明白了。 感谢您参考这些文档。

    此致、
    Stephan