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.

[参考译文] TMS320F2800157:CCS 位左移

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1266149/tms320f2800157-ccs-bit-left-shift

器件型号:TMS320F2800157

您好!

我在 CCS 中刚刚面临一个问题、在该问题中、我必须将移位位保留15个以上的位置、并且它只是将它们完全丢弃。

我附加了一个图像、其中显示了代码和变量值。 我需要移动这些位、因为参考手册中  

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

    您好!

    我假设问题在于变量在表达式视图中的显示方式。

    当我下星期星期二能够访问时、我将用我的 F2800157目标在本地尝试这种解决方案。 请注意,周一为当地假日。

    谢谢

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

    您好!

    很抱歉我迟到的回复,星期六和太阳是当地的假期为我们。

    它不仅仅是变量在表达式视图中的显示方式、当我将值推送到寄存器时、 它与表达式视图中显示的值相同、外设无法按预期工作

    谢谢  

    马纳斯

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

    感谢您提供更多详细信息。 明天回到办公室时、我会仔细观察一下。

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

    问题是这个表达式...

    (uint32_t)(1 << 31)

    ... 不像预期的那样工作。  常量值的类型 1 内部 。  在 C2000编译器中、 内部 宽度为16位。  在 C 语言中、如果移位量大于或者等于左操作数的宽度、此运行状态为未定义。  C2000编译器发出类似于...的诊断

    "file.c", line 5: warning: shift count is too large

    ... 然后将表达式更改为0。  重写...

    (1L << 31)
     

    常量的后缀 1 将类型更改为 。  该类型 宽度为32位。  工作正常。

    谢谢。此致、

    -乔治