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.

[参考译文] TMS320F28377S:CLA 任务中的28xx CLA 函数调用

Guru**** 2468570 points
Other Parts Discussed in Thread: MATHLIB, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1249988/tms320f28377s-28xx-cla-function-call-in-cla-task

器件型号:TMS320F28377S
主题中讨论的其他器件:MATHLIBC2000WARE

我使用28377S。  在 CLA 任务中、我想调用 func0、然后在 func0中、我调用 func1-5。

__interrupt void Cla1Task1 ()

{

...

func0()

...

func0()

{

...

函数1 (a、b、c)

func2()

如果 func1有一个返回值 egg ,如果我 在 func0()中写入 a= func1func1(a,b,c) ,那么程序群。  为什么 CLA 中的函数不能具有返回值?

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

    请确认您使用的编译器的版本。 随着时间的推移、编译器得到了增强。 最新版本是 22.6.0.LTS。  

    编译器参考指南的 CLA 部分列出了所有限制和限制: www.ti.com/lit/spru514。

    此致

    洛里

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

    感谢 您的答复。

    我使用的是 CCS 8.3.1、我将 V18的编译器更改为 22.6.0.LTS。  它 仍然无法正常工作。 但它发出了几个警告(下面)

    在我的 clatask1 prog 中 ,它调用 VgPLLCal (&ALG_DATA_grid ,&VgPLL );该 prog 运行到 VgPLLCal (&ALG_DATA_grid ,&VgPLL ),但它车队  

    我将 pData->Vgab = 10X.0符号放置  到 prog 运行的位置、然后我可以看到 pData->Vgab = 103.0 (意味着它 在调用 abc_to_d (p->VGA_pu、p->Vg_pu、p->VGC_pu、p->Theta_grid、p->Vgrid_p>Vgpd)之前运行到该行;)

     

    考虑警告(与 sin cos sqrt ...  mathlib ), 和 abc_to_d() func 使用 sin cos func ,原因是否可能是使用 sin cos funs ,所以编程舰队?  如何解决与 mathlib (sin cos sqrt)相关的警告?

    希望得到您的回复。

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

    代码似乎正在调用 不被允许的 C28x 数学例程。 对于 CLA、在以下目录中有一个数学库:

    C:\ti\c2000\C2000Ware_ \libraries\math\CLAmath

    此致

    洛里

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

    是的、我使用 CLAsin cos 并包含 CLAmath.h、那么它可以正常工作。  n‘t func clAsqrt ()仍然不工作。  我打开 CLAmath.h 发现 sqrt ()没有一个表(只是 sqrt func 原型),与 sincos funcs 不同。   

    我参考了 docu   CLA Math 库 的用户指南、但 仍然无法处理。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但是 func clAsqrt ()仍然不能用n‘t。  [/报价]

    请提供有关其工作原理的更多详细信息。

    编译器是否发出错误/警告? 如果是、那么什么是错误/警告?

    或者结果是否错误?

    示例工程是否按预期工作?

    C:\ti\c2000\C2000Ware \libraries\math\CLAmath\c28\examples/sqrt\ccs

    我打开 CLAmath.h 发现 sqrt ()没有一个表(只是 sqrt func 原型)[/报价]

    CLAsqrt 例程不使用查找表。 您可以在源代码注释中查看算法。  

    C:\ti\c2000\C2000Ware \libraries\math\CLAmath\c28\source

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

    在 clatask1()中断函数中,我调用 VgPLLCal (),在 VgPLLCal  ()中,我使用 CLAsin\ Calcos 和 CLAsqrt,CLAsin\  Calcos 运行良好,但在调用  CLAsqrt 时,程序群。 在下面的 VgPLLCal ()中:

    我可以在观察表达式   pData->Vgab = 138.0中看到 、这证明了 prog 先运行到 Line1340、然后运行 fleet。 如果没有、如果运行到 L1342、则  pData->Vgab = 128.0

    构建项目时会出现警告(图别名1 ): clamath .h and lib used(fig below2) , cms file (图别名3)

     

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

    您好 Freeman、

    你是说"舰队"的意思是"顶部"吗?

    以下是一些调试建议。  

    1 -尝试提供的示例工程、然后查看它是否按预期工作

    • C:\ti\c2000\C2000Ware \libraries\math\CLAmath\c28\examples/sqrt\ccs

    2 -修改示例函数中的输入值、使其与您的值类似-它是否仍然有效?

    3 -将 CLA sqrt 函数的输入修改为某种简单的方式、以查看您的代码是否继续行  L1342。 这将有助于缩小问题范围。

    4 -在项目停止时查看 CLA PC 并在那个位置查看汇编。

    5 -单步执行 CLA sqrt 函数、以确定哪里出了问题。  

    此致

    洛里