主题中讨论的其他器件:C2000WARE
工具/软件:TI C/C++编译器
您好!
我对 TMS320F28379的饱和功能有疑问。 通过将 ST0寄存器中的 OVM 位置位、可以使用饱和特性。 在汇编器源代码中、此功能易于使用。
但我想在 C 源代码级别使用饱和加法功能。
控制器是否具有内在函数来完成 C 级编程语言上的饱和加法(或减法)。
非常感谢
Ralf
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.
工具/软件:TI C/C++编译器
您好!
我对 TMS320F28379的饱和功能有疑问。 通过将 ST0寄存器中的 OVM 位置位、可以使用饱和特性。 在汇编器源代码中、此功能易于使用。
但我想在 C 源代码级别使用饱和加法功能。
控制器是否具有内在函数来完成 C 级编程语言上的饱和加法(或减法)。
非常感谢
Ralf
您好、Ralf、
没有内在函数可实现此目的。 在定点中、我认为大多数 C2000编程器都将使用 IQmath 库、并使用 IQsat 内在函数来处理溢出的可能性。 如果存在溢出的可能性、您可以将操作数移动到较低的 Iq 格式、执行加法、饱和、然后将结果移回所需的格式。 随附 IQmath 库用户指南中的一个页面、其中说明了该技术。 IQMath 包含在 C2000Ware 中的\libraries\math\IQmath 下。
此致、
Richard
尊敬的 Ralf:
我会避免在 C 环境中操纵这些位。 编译器用户指南中有一个关于使用内联汇编和 C 优化的警告注释(第3.9.1节)。 在我看来、编写一个外部汇编例程、并且如果你需要修改这些标志的话、保存和恢复 st0会更安全。
有关此主题的相关帖子有几个:
e2e.ti.com/.../245988
e2e.ti.com/.../149342
此致、
Richard