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.

[参考译文] 编译器/TM4C1294NCPDT:全新安装 CCS6.2后编译期间出错

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/938261/compiler-tm4c1294ncpdt-errors-during-compilation-after-fresh-install-of-ccs6-2

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

工具/软件:TI C/C++编译器

尊敬的所有人:  

我们已从 CCS V5.x 迁移到 CCS6.2。 我提到这一点是因为我还不知道这是否与我在编译期间遇到的错误有关。  

解决了除一个错误之外的大多数错误:它似乎是链接器错误、并且很可能是由于缺少搜索路径。  

编译器无法在双磁盘驱动程序的 Fatfs 库中找到宏定义、该驱动程序已从 TI 网站上提供的示例库中修改。  

我正在附加编译过程中遇到的错误的屏幕截图... 以及我的一些设置。  

如果有任何帮助,将不胜感激。  

此致

Aniruddha

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

    您好!

     是否包含 rom.h 头文件? 请将其包含在调用 ROM_SysCtlClockGet ()的文件中。  

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

      [引用用户="Charles Tsaa"]

    您好!

     是否包含 rom.h 头文件? 请将其包含在调用 ROM_SysCtlClockGet ()的文件中。  

    [/报价]

    您好、Charles、  

    感谢你的答复。  

    最后取得一些进展。 我是按照您的建议做的。 但误差仍然存在。  

    然后我检查了 rom.h 文件本身以查看 ROM_SysCtlClockGet 宏是否已定义。  

    这里有一些关于向后兼容性的指令。 我们确实从 Tivaware 2.0.1转到 TivaWare 2.2.095、这可能是导致问题的原因

    我发现、在 Project 属性中定义的符号是"target_is_Snowflake_RA0"、但我们真正需要的是将其定义为"target is blizzard_RA1"、另一方面 ROM_SysCtlClockGet 不会被解析。

    请提供有关下一步的建议。 我正在附加相关的图像文件。 感谢你的帮助。

    此致

    Aniruddha   

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

    您好!

     原因是 SysCtlClockSet()和 SysCtlClockGet ()只是 TM4C123器件的 API、而不是 TM4C129的 API。 您不能将这两个 API 用于 Snowflake 器件。 请参阅以下摘录。 您将需要使用 SysCtlClcokFreqSet()的返回值来获得当前的处理器频率。  

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

    您好、Charles、  

    感谢你的帮助。

    但是、误差仍然存在... 我比以前更接近解决这个问题。 。  

    有一个名为 map_SysCtlClockGet 的宏、该宏在 dual_disk_driver.c 文件中被调用。 这个宏是对 ROM_SysCtlClockGet 的唯一引用。

    如果处理器是 TM4C123x、这个宏被设定为 ROM_SysCtlClockGet 宏、而如果处理器是 TM4C129x、这个宏被设定为 SysCtlClockGet 宏。 Snowflake 指令将其设置为正确的处理器。  一切看起来都像它应该的那样... 但我不断得到误差。  

    我还需要查找什么? 或者我在哪里查找误差源。  

    此致

    Aniruddha  

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

    您好!

     正如我在之前的答复中解释的那样、你不能为一个 TM4C123 MCU 调用 MAP_SysCtlClockGet、ROM_SysCtlClockGet 或 SysCtlClockGet。 请参阅 rom.h 文件中定义的以下宏。 您可以看到 ROM_SysCtlClockGet 只是一个 API、如果器件是 TM4C123、则可以调用该 API。                        

    #if defined (target_IS_TM4C123_RA1)|| \
    已定义(TARGET_IS_TM4C123_RA3)|| \
    已定义(TARGET_IS_TM4C123_RB1)|| \
    已定义(TARGET_IS_TM4C123_RB2)
    #define ROM_SysCtlClockGet \
    (((uint32_t (*)(void)) rom_SYSCTLTABLE[24])
    #endif 

    对于 TM4C129 MCU、您需要执行如下示例所示的操作。 因此、  在使用 SysCtlClockFreqSet()配置时钟后、请用 ui32SysClock 返回的值替换 SysCtlClockGet ()的所有位置。

    //
    //从 PLL 以120MHz 运行。
    //
    ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
    SYSCTL_OSC_MAIN |
    SYSCTL_USE_PLL |
    SYSCTL_CFG_VCO_480)、120000000);

    MAP_SysCtlDelay (ui32SysClock/3);

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

    您好、Charles、  

    非常感谢!! 它很有效!

    此致

    Aniruddha