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.

[参考译文] CCS/TMS570LS0914:无法理解 HAL 生成的某些代码

Guru**** 2601915 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/742582/ccs-tms570ls0914-some-of-the-code-generated-by-hal-is-not-understood

器件型号:TMS570LS0914

工具/软件:Code Composer Studio

我想了解代码的构成、但我不太了解这些部分。

例如,代码的 MSK 部分“0x00000333U”  是我在 HAL 的 messagebox,“0x0000007FF”中设置的,因为我设置了标准 CAN。

但我不理解0xC0000000U 的含义、并向左移动18。

我希望您的回答能解决我的疑问。谢谢。 我祝大家万圣节快乐。

CANREG1->IF1MSK = 0xC0000000U |(UINT32)((UINT32)((UINT32) 0x00000333U &(UINT32) 0x000007FFU)<<(UINT32) 18U);
CANREG1->IF1ARB =(uint32) 0x8000000000U |(uint32) 0x000000000000 U |(uint32) 0x000000000000 U |(uint32)(((uint32) 0x1U &(uint32) 0x000007FFU)<<(uint32) 18U);
CANREG1->IF1MCTL = 0x00001000U |(UINT32) 0x00000400U |(UINT32) 0x00000000U |(UINT32) 0x00000000U |(UINT32) 8U;

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

    [引用 user="tsukikikiko ]但我不理解0xC0000000U 的含义、并向左移动18。我同意、从发布的 HAL 生成代码中、没有任何注释解释"魔数"。 通过查看 TMS570LS09x/07x 16/32位 RISC 闪存微控制器技术参考手册(修订版 A) :

    1见 表24-22。 IF1/IF2屏蔽寄存器字段说明 值 0xC0000000U 表示 屏蔽扩展标识符(MXtd)和 屏蔽消息方向(MDir)位被置位。

    2.从 表24-2. 消息对象字段说明  11位("标准")标识符位存储在 ID[28:18]位中、这说明了向左移动18。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的慷慨帮助,祝您万圣节快乐!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢切斯特!

    此致、
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉、我有一个新问题、就像上面的 IF1MSK 部分一样、为什么必须用3个段落来描述它
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,你好,你好,
    您是指:canREG1->IF1MSK = 0xC0000000U |(uint32)((uint32)((uint32) 0x00000333U &(uint32) 0x000007FFU)<<(uint32) 18U);?
    您可以将其设置为一个数字、但更难遵循设置的内容并在需要时进行更正。

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