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/TMS320F28377D:TI-RTOS Swi

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/650843/rtos-tms320f28377d-ti-rtos-swi

器件型号:TMS320F28377D

工具/软件:TI-RTOS

我们的应用具有静态创建的 SWI。  是否有任何方法可以动态更改 SWI 参数、以便我可以在调用 Swi_post ()之前将值传递给 Swi?

目前,当我尝试更改 arg0时,我会遇到编译器错误("... 指向不完整类类型的指针..." 当我尝试这样的事情时:

Swi_oncePerCycle ->arg0 = var1;  //此处出现编译器错误

Swi_post (swi_oncePerCycle );

它似乎没有有关 SWI 对象的管道信息、编译器无法找到它。

下面是配置文件中的 SWI 设置:

var swi1Params = new swi.Params();
swi1Params.instance.name ="oncePercycle";
swi1Params.priority = 12;
program.global.swi_oncePerCycle = swi.create ("&swiFunction"、swi1Params);

感谢您的任何建议。

卡盘 S.

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

    您好!

    您可以使用 Swi_setAttrs。 请参阅 API 参考以了解限制。 您也可以使用 Swi_getAttrs 来获取不想更改的字段的值。

    Todd

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

    感谢您提供这些信息。 那么、Swi 函数如何访问这些参数? 函数是否如下所示:

    swiFunc (UArg0、UArgarg1)、其中 arg0 = Swi_Params.arg0和 arg1 = Swi_Params.arg1?

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

    有关更多详细信息、请参阅 API 参考。

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

    我对如何使用参数(Swi_Params)还有点迷雾。  API 显示如何分配参数、但不显示它们的用途。  当 swi 运行并调用 swiFxn 时、swiFxn 是否可以访问 swiFxn?  如果不是、那么参数的作用是什么?

    谢谢、

    卡盘

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这些参数在.cfg 中的 Swi.create 上提供(或者在 Swi_create 和 Swi_constructin 中提供以创建运行时)。 所以你可以为 Swi_getAttrs 提供一个空的参数来获得原始设置。 然后更改所需的参数(例如 arg0)、然后使用该参数结构调用 Swi_setAttrs。 只需确保满足 Swi_setAttrs 的约束条件(如上所示)。

    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为我现在已经很好地掌握了 swi 属性、但下面是我不确定的概念:如果我有一个被 SWI 调用的函数(swifnxn)、我用 Swi_setAttrs 设置的参数是否作为参数传递给 swifnxn?

    API 显示了以下内容:

    typedef void (* Swi_funcPtr)(UArg、UArg);

    传递给函数的两个 UARg 参数是否等于我使用 Swi_setAttrs 设置的两个参数? 如果不是、我需要知道 UArgs 是如何传入的。

    谢谢、
    卡盘
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Swi_Params 结构中的 arg0和 arg1字段是在调用 Swi 函数时传递到该函数的字段。