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.

[参考译文] TMS320F28384S:CM 中断嵌套示例

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1217702/tms320f28384s-cm-interrupt-nesting-example

器件型号:TMS320F28384S

您好!

我正在使用两个中断源在 CM 内核上开发一个应用: SysTick 计时器和 UART。  

 SysTick IRQ 用于生成系统节拍、 UART IRQ 用于处理 EOT 事件。

我需要立即处理 UART IRQ、 最终嵌套 SysTick 处理程序执行。

执行此操作的最佳模式是什么? 我有一个简单的示例吗?

在 C28内核上、我会在 tick 处理程序例程内部重新启用中断、但在 ARM 内核上、我想有更好的方法来使用 NVIC"优先级组"属性来实现这一点。

谢谢!

Carlo。

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

    您好、Carlo。
    您对 CM 上更简单的方法是正确的。
    您只需要使用 Interrupt_setPriority ()函数设置优先级。
    如果中断具有更高的优先级(Interrupt_setPriority  参数中的数字较小)、则此中断将优先于 NVIC 处理其余中断、并且此中断将优先于每个具有较低优先级的中断。

    此致、
    Andy


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

    谢谢 Andy。

    我已经将优先级0分配给 UART IRQ、将优先级1分配给 SysTick IRQ。

    这只是  关于 优先级分组规则的另一个问题。

     Interrupt_getPriorityGrouping()返回0。 可以吗? 如果不是、我应该设置哪个值? 我不熟悉 ARM 内核、这个概念对我来说并不清楚。

    谢谢你。

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

    我从未使用过 PriorityGrouping 函数、因为我从未有过需要。  读取 Interrupt_getPriorityGroup()时返回的值0似乎正常,该值意味着所有8个优先级(0...7)都在优先级组中,而不是在子组中。

    请查看 TRM 中的表格:

    在 CM 中实施 NVIC 可确保在 ARM 的全部256个可用优先级(8位)中、仅使用8个(3位)。 重要的是、这些是3个 MSB 位。 查看 NVIC_IPRx 寄存器-每个中断优先级寄存器部分中的低5位没有使用。
    这就意味着、在 PRIGROUP 域中、当你将值设置为0到4时、效果是一样的-仍然有8个优先级在同一个优先级组中。

    设置了较高的值时、情况将会有所不同、例如、 0b101。 在这种情况下、2位在组优先级中、1位在子优先级中。
    在本示例中、当您有三个中断时:
    INT1 -优先级0 (组/优先级0、子组优先级0)
    INT2 -优先级1 (组/优先级0、子组优先级1)
    INT3 -优先级2 (组/优先级1、子组优先级0)
    那么 INT1和 INT2都在一个抢占组0中。 这意味着 INT1和 INT2都可以优先于 INT3。 但是 INT1和 INT2不能互相抢占(因为它们 具有 相同的占位组)。 当 INT2和 INT1都处于挂起状态时、INT1将首先执行、然后在完成 INT1后执行 INT2。

    希望我提供的所有信息都是正确的。

    此致、
    Andy

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

    感谢 Andy 的快速而清晰的回应。

x 出现错误。请重试或与管理员联系。