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.

[参考译文] RTOS/TM4C1294NCPDT:定时器中断优先级

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/597169/rtos-tm4c1294ncpdt-timer-interrupt-priority

器件型号:TM4C1294NCPDT

工具/软件:TI-RTOS

您好!
如何更改计时器中断的中断优先级。 在数据表中、它显示为可编程中断优先级。 但是、我该怎么做呢??

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

    任何中断优先级均可由 Tivaware 的函数轻松确定:

    IntPrioritySet (中断、优先级);

    话虽如此、请注意、中断优先级在很大程度上是系统的"微调"、 它们实际上仅适用于在另一个中断服务路由正在运行时触发了多个中断(或当"几乎不可能"发生两个中断在非常相同的8ns 系统时钟"即时"触发时)。

    换句话说、如果一个给定的中断开始被处理、即使其他中断具有更高的优先级、它们也不会跳转。

    因此、您可能认为中断优先级问题的最佳总体解决方案是保留非常短的中断服务例程、在其中设置控制标志、并在稍后对主线程函数上启动的 ISR 的处理进行补充。

    当您转到 RTOS 时、在处理软件中断时、您将自然看到这一点。

    此致

    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复。 但我的意思是...说我有一个计时器中断和一个生成中断的开关... 我将如何管理这2个中断的优先级? 哪一个将具有更高的优先级?? 如何更改?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Shyam、

    我理解您的问题。 让我尝试进一步澄清答案。 假设一个系统中只有两个中断被启用:一个定时器和一个 GPIO (一个外部开关)。 您的程序在 main while ()循环中"不执行任何操作"。

    只有当定时器和 GPIO 同时触发(或者更具体地说、在同一个8ns 系统周期内)时、才需要中断优先级。 在这种情况下、优先级较高的中断将首先被处理。

    但这种情况非常罕见、同意吗?

    现在、让我们再次假设您的程序在主循环中处于空闲状态、然后您按下开关。 您的代码执行将移至为 GPIO 分配的 ISR (中断服务例程)。 当代码位于该函数内时、即使计时器触发、执行流程也没有变化-它仍将完成 GPIO 的函数、只有在计时器函数内执行。 优先级不会改变它。

    下一种情况:如果您的系统启用了3个中断:GPIO、计时器和 SysTick。 例如、您的代码正在 SysTick 例程内运行(可能持续约2us……)。 现在、定时器和开关中断在这种"更长的时间"内发生的可能性要大得多、同意吗? 在这种情况下、就在 SysTick 中断功能完成后、将评估中断优先级、并首先执行定时器和 GPIO 之间具有最高优先级的任何一个。

    从技术上讲、在 ISR 内部启用中断是可能的-但我绝不建议这样做-这将使您的系统疯狂地进行管理。

    再说一次:使您的 ISR 非常短。 只需弄清楚导致中断的原因、捕获某种事件状态、并设置一些位置处理标志。 然后、在主循环内部检查该标志、并在中断例程之外执行其余处理。

    希望这更有意义。 否则、现在是时候查看用于解释中断的时间片图了。。。

    布鲁诺

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