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.

[参考译文] TM4C1294NCPDT:关于 GPIO 中断优先级

Guru**** 2463330 points
Other Parts Discussed in Thread: EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/655153/tm4c1294ncpdt-about-gpio-interrupt-priority

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件:EK-TM4C1294XL

你好。

我有疑问。

我可以更改 GPIO 的中断优先级吗?

如果是、您能告诉我如何操作?

此致、

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

    嵌套向量中断控制器(NVIC) 为每个中断提供了0-7的优先级编程方法。 请参阅以下示例:

    C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c1294xl\interrupts

    功能。

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

    直接答案是、您只需使用 Tivaware 的功能:
    IntPrioritySet (uint32_t ui32中断、uint8_t ui8优先级)

    实际上、根据我的经验、您需要尽可能深入地确定中断优先级是非常"罕见的"。。 除非在中断服务被禁用时有一些长代码段长时间运行、否则这不是一个好主意。

    如果您想详细说明您的需求、我们可能会分享一些想法。

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

    [引用用户="Bruno Saraiva"]实际上、根据我的经验、您需要尽可能深入地确定中断优先级[/引用]

    我还没有建立一个需要中断、也不需要管理优先级的系统。 使用中断的唯一原因是如果延迟很重要、并且如果它很重要、您需要管理优先级。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗨、Robert、今天似乎你在一条不同于我的道路上骑行... 这是我们同一天"不同意"的第二个主题、但您的观点完全合理且正确。 )

    我理解您关于需要管理中断的评论。 但是、对于我们这里的大多数应用来说、情况确实如此-中断的处理顺序无关紧要、只要它们不是"被遗忘"的。 如果我在 GPIO 上有中断、完成 SPI 读数、完成模拟读数、并且您仍有50ms 的时间来处理这些事件、那么哪一个先处理无关紧要。

    不幸的是、今天我没有足够的创造性来提出一个易于遵循的示例、但我想说:对于这里90%的中断、首先处理哪个中断无关紧要... (我想我们已经放宽了应用...)

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

    [引用 user="Bruno Saraiva">我理解您对需要管理中断的评论。 但是、对于我们这里的大多数应用来说、情况确实如此-中断的处理顺序无关紧要、只要它们不是"被遗忘"的。 如果我在 GPIO 上有中断、完成 SPI 读数、完成模拟读数、并且您仍有50ms 的时间来处理这些事件、那么哪一个先处理无关紧要。[/引述]

    那么、为什么要使用中断呢? 如果延迟不重要、则轮询效率更高。

    这并不是说您不能使用中断、而是说它们似乎不是必需的。

    Robert

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

    [引用 user="Bruno Saraiva"]我们在这里的大多数应用程序确实是这样-中断的处理顺序无关紧要

    虽然是"已提出"的-但这种索赔的理由(任何)都是缺失的。   ("不够创造性(今天)"。 不是特别引人注目。)

    您(真的)是否希望"将此类建议传递给他人" (谁可能会遇到您的帖子)和"采纳"其指导?   我"没有怀疑"你完全相信你所提出的东西--但它 "远远"于 "正常/习惯" --是否有理由(有些)说明理由/发挥创造力?   (要正确描述、"如果和何时"这种"布鲁诺方法"(无优先级)可以安全地部署!)   这是公平的-是不是吗?

    当  "中断优先级适当"和"发挥作用"时、您如何积极地"知道"两个(可能甚至三个)中断的"接近"或同时到达"将不会要求(或至少提供"好处")?  

    不知道 "正在考虑并应用的中断优先级"是否"所有代码均可平等运行和执行?"    "共享数据"被"遗漏"或 "已按顺序传递"时、是否不可能有多个函数共享"关键功能依赖项"并可能"执行不当"和/或执行不良"?   (请注意、您自己在今天的另一篇文章中描述了"易失性"的使用、以打击此类行为。)  

    所有现代 MCU 供应商都具有"区分中断优先级"的能力、这一事实是否表明、"注重细节"比不"更经常"需要"?

    这也许是中断的"异常和/或意外到达"、这肯定证明了"使用优先级"是合理的。   如果您的代码足够简单、无法"规避"此类优先级排序、则任何"使用中断"都会增加复杂度(似乎没有好处)、并可能被判定为"可疑"。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    布鲁诺、很想在你的中断上完成 RMA 练习吗? 无需披露任何专有信息或执行任何困难的操作、但这可能对我们双方以及其他人都很有趣。

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

    我们在此对 RMA 的处理程度非常非正式... 我们基本上测量函数的时间/时钟计数(通常是较长或较频繁的时间/时钟计数)、保持时间关键要求的指示、并查看某项操作是否过于接近危险。

    老实说、我们的 CPU 没有被推到接近其极限的任何位置、这种自制配方一直运行良好。

    目前正在开发一个新的实施方案,即3轴 IMU。 从理论上讲、这需要 TM4C129大约60%的容量、我预计该项目将需要对限制进行更详细的研究。 这个60%的数字是通过一个模型电子表格获得的、我们在其中包括所有预期功能和知道时间、但这是在处理它们的优先级之前。

    正如您之前所听到的、我们的发展包括许多车轮创新、因为多年来缺少正式的嵌入式培训... 这不是当时最简单的方法,但它是可以做的-最后,我们有某种"独特的做事方式"....

    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可能能够在流程中获得更多的保证、而保证更少、更好。 如果调度处理不好、即使在极低的负载下也可以运行到实时故障中。 如果不常发生故障、则会显示为简单的奇数场干扰。

    我不建议重写、只是一个教育练习、看看它显示的内容。

    达到60%、根据经验、80%通常被视为满载。

    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您有多个中断、其中一个中断为硬件命令提供服务、则需要确保它具有更高的优先级。 例如、如果您控制一个功率转换器、一个中断正在更新 PWM 生成的占空比、另一个中断正在对反馈信号进行采样以执行控制和其他高级任务、那么您肯定不希望 PWM 等待慢速任务 (例如通过 CAN 进行状态通信)、然后再获得其更新的占空比。 我希望 PWM 中断具有最高优先级。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    "我可以更改 GPIO 的中断优先级吗?"

    是的、因为内核支持它。

    "如果是、您能告诉我如何操作?"

    这将取决于您的工具链。 我在 CMSIS 下工作、并执行以下操作:"NVIC_setPriority (IRQ、Priority)"。

    它适用于所有 CM0/1/2/3/4/7系列、TI 或其他产品。

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

    您好、Rohail、

    请允许我注意您 的"最出色的示例" 、 其中明确指出了"中断优先级"的"理由"。   对于您的"首次发布"... 太棒了!

    请注意、在"要求苛刻"的情况下、可以 通过 "将特定中断提升为"抢先状态"来"扩展和增强"中断优先级。    这将启用临时 "暂停正在进行的中断"、而是确保"最快速"执行这种"更受欢迎"(即挤占)中断。

    这证明 了" MCU 技巧包..."的"非常"(非常)出色(强大)的新增功能。