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.

[参考译文] TMDSCNCD263P:无法在 FreeRTOS 空闲任务或 ISR 中调用 TCA6424_setOutput ()

Guru**** 2540720 points
Other Parts Discussed in Thread: TCA6424

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1549845/tmdscncd263p-cannot-call-tca6424_setoutput-in-freertos-idle-task-or-in-isr

器件型号:TMDSCNCD263P
主题中讨论的其他器件:TCA6424

工具/软件:

您好:

我使用的是 E2 版本、其中通过 I2C 多路复用器控制 OSPI 复位。

我的应用程序使用 FreeRTOS、但 在以下两种情况下似乎无法调用 TCA6424_setOutput ():

场景 1.

当试图在 ISR 中调用 TCA6424_setOutput () 时、它会被这里的断言捕获:

场景 2.

当试图在 FreeRTOS 空闲任务中调用 TCA6424_setOutput () 时、会 出现以下消息。

[Cortex_R5_0] ASSERT: 40.392078s: FreeRTOS-Kernel/tasks.c:vTaskSwitchContext:3063: (uint32_t)(uxTopPriority) failed !!!

我可以在什么情况下调用  TCA6424_setOutput () ?

谢谢你。

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

    尊敬的 Kier:

    Im 不确定/有一个 ts 列表。 让我在内部与开发团队讨论、然后返回

    此致、
    Shaunak

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

    尊敬的 Kier:

    。  TCA6424_setOutput () 执行带阻塞延迟的信标挂起。 通常、建议不要在 ISR 中执行信标挂起操作。

    DPL 层中的信标挂起函数的设计方式为不允许 ISR 中的信标挂起操作。  

    下面、我附上了代码片段的屏幕截图。

    您可以看到、在 else 条件下、如果从 ISR 调用函数、则会执行断言。

    这将是它卡在断言陷阱中的原因。

    如果需要调用  TCA6424_setOutput () 发生 ISR 时、请考虑从 ISR 发布信标并从任务中调用函数的方法。

    此致、

    Aswin

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

    非常感谢您的解释。