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.

[参考译文] TM4C123GH6PM:是否修复了直接寄存器访问和 Tivaware 混合使用的问题?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/618384/tm4c123gh6pm-will-mixing-direct-register-access-and-tivaware-be-fixed

器件型号:TM4C123GH6PM
主题中讨论的其他器件:TM4C123

您好!

我不时需要将编程的"直接寄存器访问"风格与 Tivaware 函数混合在一起。 通常、这是因为我需要一些 Tivaware 中未包含的功能。 例如、现在我想使用环回模式探索 TM4C123 Launchpad 上的 CAN 控制器、同时等待原型硬件和 CAN 收发器到达。 就我所能说的、无法从 Tivaware 启用 CAN 回路、因此我需要为此功能执行"直接寄存器"访问。

与 Tivaware 文档中公布的情况相反、将这两个模型组合在一起并不是很好:包括器件专用头文件(例如、tm4c123gh6pm)以获得器件寄存器定义会导致大量宏重新定义错误。 因此、我需要1)将寄存器定义复制粘贴到我自己的源文件中、或者2)我需要将所有"直接寄存器访问"代码分离到单独的源文件中。 这两个都不是真正的"干净"解决方案。 选项1是我当前正在做的、它是有效的、但我真的不应该这样做。

过去曾对这个问题进行过一些讨论。 在该主题中、问题得到了确认、有人说 TI 将采取措施来最终解决。但该线程已使用了一年多、且当前版本的 Tivaware 仍然存在此问题。 那么、我想问、TI 有什么计划来解决这个问题? 我们是否很快就会看到修复?

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

    请注意、对于这种特殊用途、仅使用单独的模块进行环回并不是很重要的拼版。

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

    我正在修改 使用 Tivaware / driverlib 的 SW-TM4C-2.1.4.178/examples/peripheral/CAN 中的 simple_TX.c 文件。

    以下是我所做的修改:

    //从 tm4c123ghp6.h 复制:
    #define CAN0_TST_R (*((volatile uint32_t *) 0x40040014)
    #define CAN0_CTL_R (*((volatile uint32_t *) 0x4000000)
    
    
    //... 添加到初始化代码
    CAN0_CTL_R |= CAN_CTL_TEST;
    CAN0_TST_R |= CAN_TST_LBACK; 

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

    您是否尝试过此处概述的方法(e2e.ti.com/.../381060)?

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的建议。 这种方法比我上面概述的任何一种方法都要好一点、尽管它看起来不必要地冗长...

    一般来说、我喜欢 Tivaware、但我无法理解为什么直接访问器件寄存器会被视为特殊操作。 我没有遇到任何其他固件库、就是这种情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Oliver Doublas69">感谢您的建议。 这种方法比我上面概述的任何一种方法都要好一点、尽管它看起来不必要地冗长...

    非常受欢迎。 也不能说、因为我对符号也很感兴趣。 但是、它有一个优势。 请注意、 由于它使用外设基址、因此、如果它需要支持不同的外设(同时比结构定义更便于移植)、只需将基址设设为变量即可轻松修改为单个外设开发的任何代码。

    [报价用户="Oliver Doubleglas69"]在这种情况下,我没有遇到任何其他固件库。[/quot]

    您只是没有使用足够的库:)

    TIVAWare 是我使用过的第一个库、它实际上是可用的。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的帖子,“不是**喜欢**?” 深入支持您的立场-历史背景-一个"链接示例"-和幽默-所有这些都无缝整合在一起。 (换言之、最近不需要的论坛升级(声称)的所有内容都不是!)