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.

[参考译文] 将 float32_t 变量存储到寄存器中(非常基本)

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/947094/storing-a-float32_t-variable-into-a-register-very-basic

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

你好。 我是 C 语言编程的初学者。 我想使用 C2000Ware DCL PID 实现 PID 控制、请参阅图:  

我想将我的控制工作"u_k"放入寄存器中、请参阅下图:

如何以高效的方式将控制工作"u_k"转换为我可以放入该寄存器的内容? 我对浮点数等没有很好的了解。  

此致

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

    要将浮点控制信号转换为定点值、需要执行"缩放"。 根据 PID 控制器中的最大控制信号 u 定义、您想要将其映射到目标寄存器的满量程、然后进行数据转换。

    例如、如果您的 u 限制在0.0和1.0之间、并且输出介于0和65535之间、则可以将寄存器值设置为

    (uint16_t)(u_k * 65535.0)

    另一个提示:如果希望控制输出与 PWM 输出同步更新、则会重新连接以更新影子寄存器 RAMPMAXREF_Shdw、而不是直接更改寄存器。

    希望这能解决您的问题。

    韩文