工具与软件:
您好!
我正在从事一个项目。 有人能帮助我知道下面两个中断的优先级吗
1. SysTick 计时器
2. GPIO 硬件管脚中断
3.任何软件中断。
提前感谢。
- Chinmay
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.
尊敬的 Chinmay:
每个中断的优先级可动态设置。
您可以检查特定中断的各个部分、包括其优先级(IntPriorityGet)。
谢谢!
Toby
它们是按模块设置的。
导入并构建示例后、请检查 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 的行为、以了解哪一个会被执行和/或被另一个抢先。
如果我错过了为避免比赛情况而应介绍的任何其他情景、请指导我。
谢谢!
中国
您好、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