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.

[参考译文] 编译器/TMS320F28379D:C 级饱和加法

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/866843/compiler-tms320f28379d-saturated-addition-on-c-level

器件型号:TMS320F28379D
主题中讨论的其他器件:C2000WARE

工具/软件:TI C/C++编译器

您好!
我对 TMS320F28379的饱和功能有疑问。 通过将 ST0寄存器中的 OVM 位置位、可以使用饱和特性。 在汇编器源代码中、此功能易于使用。

但我想在 C 源代码级别使用饱和加法功能。

控制器是否具有内在函数来完成 C 级编程语言上的饱和加法(或减法)。

非常感谢
Ralf

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

    您好、Ralf、

    没有内在函数可实现此目的。  在定点中、我认为大多数 C2000编程器都将使用 IQmath 库、并使用 IQsat 内在函数来处理溢出的可能性。  如果存在溢出的可能性、您可以将操作数移动到较低的 Iq 格式、执行加法、饱和、然后将结果移回所需的格式。  随附 IQmath 库用户指南中的一个页面、其中说明了该技术。  IQMath 包含在 C2000Ware 中的\libraries\math\IQmath 下。

    此致、

    Richard

    e2e.ti.com/.../IQsat.pdf

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

    尊敬的 Richard:
    非常感谢您的回答。 我将检查 IQmath 库的可能性。

    我还有一个问题。 是否允许更改 st0寄存器中 OVM、SXM 和 PM 位的状态(使用 ASM 内联汇编器指令)、或者这会破坏 C 运行时环境?

    此致
    Ralf

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

    尊敬的 Ralf:

    我会避免在 C 环境中操纵这些位。 编译器用户指南中有一个关于使用内联汇编和 C 优化的警告注释(第3.9.1节)。 在我看来、编写一个外部汇编例程、并且如果你需要修改这些标志的话、保存和恢复 st0会更安全。

    有关此主题的相关帖子有几个:
    e2e.ti.com/.../245988
    e2e.ti.com/.../149342

    此致、

    Richard