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.

[参考译文] CC2652R:中断优先级

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1402654/cc2652r-priorities-of-interrupts

器件型号:CC2652R

工具与软件:

您好!

我正在从事一个项目。  有人能帮助我知道下面两个中断的优先级吗

1. SysTick 计时器

2. GPIO 硬件管脚中断

3.任何软件中断。

提前感谢。

- Chinmay

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

    尊敬的 Chinmay:

    每个中断的优先级可动态设置。

    您可以检查特定中断的各个部分、包括其优先级(IntPriorityGet)。

    请参考此处: https://software-dl.ti.com/simplelink/esd/simplelink_cc13x2_26x2_sdk/3.30.00.03/exports/docs/driverlib_cc13xx_cc26xx/cc13x2_cc26x2/driverlib/group__interrupt__api.html

    谢谢!
    Toby

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

    您好、Toby:

    感谢您的快速回复。

    从 CCS 项目中的配置文件或代码的任一部分、我能找到设置这些优先级的位置吗?

    谢谢!

    中国  

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

    它们是按模块设置的。

    导入并构建示例后、请检查 ti_drivers_config.c (例如 empty_LP_CC2652R7_nortos_gcc/Debug/syscfg/ti_drivers_config.c)。

    每个模块都有自己的配置、例如 GPIO_CONFIG、其中包括一个"intPriority "。 其他模块可能在不同的系统中使用此路径、但它们应该都位于生成的 ti_drivers_config.c 中

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

    您好、Toby:

    感谢您的意见。

    在我们的代码中、我们使用以下两个模块
    1.具有中断及回调功能的引脚模块(使用"PIN_registerIntCb"和"PIN_setInterrupt")
    2.带回调的超时时钟定时器模块(使用"Clock_Construction"和"Clock_start")

    这两个模块都是相互相关的。 如果发生上述任一回调、我需要启动/停止另一个模块。 这意味着、如果硬件引脚置位、我需要停止时钟。 如果调用时钟到期回调、我需要禁用 PIN 硬件中断。 我正在设计代码、以便它可以处理以下4种情况、而不会进入竞态条件。

    实例 I -硬件引脚在时钟超时之前将中断置为有效
    Case II -时钟超时发生在硬件引脚置位之前
    案例 III -时钟超时处理程序正在执行并且硬件引脚生效
    案例 IV -硬件回调处理程序正在执行且发生时钟超时。

    请引导我了解案例 III 和案例 IV 的行为、以了解哪一个会被执行和/或被另一个抢先。

    如果我错过了为避免比赛情况而应介绍的任何其他情景、请指导我。

    谢谢!
    中国

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

    感谢您分享有关您的用例的更多详细信息。

    我将在3个工作日内查看并提供更新。

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

    在给定两个中断的情况下、如果它们的优先级相同、那么二者的优先级都不会挤占另一个中断。 出现这种情况时、进入其中断处理程序的第一个中断处理器将首先完成执行。

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

    您好、Toby:

    感谢您的答复。

    我们在代码中有以下配置  

    const PINCC26XX_HWAttrs PINCC26XX_hwAttrs ={
    .intPriority =~0、
    .swiPriority = 0
    };

    和  

    clock.tickPeriod = 10;
    clock.swiPriority = 5;

    我从 PIN 驱动程序文档中了解到的是、它在 PIN 硬件中断到达时创建新的 SWI。

    您能否就上述情景中的案例 III 和案例 IV 提供更深入的见解、以及 比赛条件是否可行。

    谢谢!

    中国

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

    尊敬的 Chinmay:

    托比是一个当之无愧的假期,直到9/9,所以我可以尝试协助,直到他返回。  下面是 TI-RTOS7基础知识 SimpleLink Academy 实验 、它探讨了任务/ISR 抢占和其他调试。  您还应回顾 RTOS 概念TI-RTOS 7内核用户指南 以及 TRM 的第2、4和5章。   时钟模块 作为 SWI 运行、此 SWI 的优先级低于 HWI、而 SWI 优先级是线性的(优先级随着数量的增加而增加)。  因此对于引脚驱动程序、首先处理 HWI (零延迟)并升高 SWI 标志(注意:我的 PIN TI 驱动程序知识有限、因为它已 被 GPIO++ TI 驱动程序替换)。  时钟 SWI 将优先于 PIN SWI、因为它具有更高的优先级、但不会优先于 PIN HWI。  我尚未将其付诸实践、但通过额外的调试、您应该能够正确跟踪 CPU 的行为。  我还建议您尽可能减少在 HWI/SWI ISR 中花费的时间、并进一步依赖于您的任务管理。

    此致、
    Ryan

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

    Ryan、您好!

    感谢您为我的问题提供详细信息。 我将介绍它。

    此致、

    中国