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:从无符号16位整数中逐位提取数据

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1277318/tms320f28379d-extracting-bit-wise-data-from-an-unsigned-16-bit-integer

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

您好!

是否有办法能够从 UINT16变量中逐位提取数据?  在 CCS 的"Expressions"窗口中查看 UINT16时、我可以看到二进制表示、但是否能够访问代码中的各个位(例如访问第3位)?

我可以编写自己的函数以从 UINT16转换为二进制、但我想有一种更简单的方法来实现这一点。

谢谢。
凯文

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

    Kevin 老师好!

    由于 C28x 器件使用16 位字、因此没有通过硬件提取单个位的内在方法。 可以使用位字段的原因是 C2000Ware 中对它们提供了库支持、但对普通整数变量没有类似的支持。 如果您希望能够从 uint16_t 变量中提取特定位、我认为您需要创建自己的函数、但是我会让编译器专家来确认。

    此致、

    阿米尔·奥马尔

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

    Omer:

    感谢您的答复。  您能否说明一下"可以使用位域的原因是 C2000Ware 中对它们的库支持"这一表述的含义。  C2000Ware 中是否有可用于提取位的库函数?

    谢谢。

    凯文

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

    尊敬的 Kevin:

    C2000Ware 中是否有库函数我可以用于提取位?

    这仅适用于器件上的外设、而不是整数(这使用结构来描绘位值、但它们仍然都是 UINT16数据类型)。 您可以在 C2000Ware 中的 C2000Ware_5_00_00_00\device_support\f28p65x\headers\include 目录下查找更多信息。

    此致、

    阿米尔·奥马尔