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/TM4C123GH6PM:CCS 7和 Keil uVision5中的工程编译失败

Guru**** 2466670 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/668636/ccs-tm4c123gh6pm-project-compilation-failure-in-ccs-7-and-keil-uvision5

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

工具/软件:Code Composer Studio

您好!

我是一名比较不熟悉使用 C 语言对 TM4C123GH6PM 板进行编程的学生(我之前使用的是汇编语言)。  在类中、我们使用 Keil uVision 4、我编写的所有代码都可以编译并加载到电路板上、一切正常。  在我的个人笔记本电脑上、我最初下载了 Keil uVision 5和 Code Composer Studio 7、但两者都不会编译我的代码(我使用的代码在 Keil 4中工作正常)。  我检查了以确保每个项目中包含了适当的启动文件(以及 tm4c123ghp6.h 的副本、我不确定默认情况下是否包含此文件)、但在两个程序中、我在编译时不断遇到相同的错误、即:  

标识符"sysctl"未定义           线性关系        sysctl->RCGCGPIO |= 0x20;

标识符"GPIOF"未定义            线性关系       GPIOF->DIR = 0x0E;

以及随后的其他示例。  将这些行注释掉可使程序编译正常(因为我目前还没有在代码中执行任何初始化以外的操作)。  显然、问题在于它不能像 Keil 4那样识别这些程序的定义、我对 C 语言或这些程序的了解不够、无法确切地理解原因。  我很乐意在教室外的个人计算机上获得编码体验、因此任何帮助都将不胜感激!

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

    您好 Kerry、

    您似乎正在尝试使用基于直接寄存器操作(DRM)调用的代码。 我强烈建议不要这样做。 您应该改为使用我们的 TivaWare 库、该库可从 http://www.ti.com/tool/SW-TM4C 下载

    我们不支持 DRM 固件、因为我们构建了 TivaWare、以消除所有 TM4C 用户依赖 DRM 调用复杂性的需求。 我们已经完成了所有的工作和努力、发明了一个适合我们设备的轮子、因此我们不会试图重新发明我们已经完成的任务。

    如果您的班级需要其他方式、我只能祝您好运、并给您一个良好的指示/提示、说明您遇到的问题可能是由于缺少需要#include 到项目中的文件而导致的 (因此、您可能需要比较 Keil 4项目用于 Includes 的用途)。

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

    "sysctl->RCGCGPIO |= 0x20;"

    您使用的是 CMSIS 风格的编程方法-我也很喜欢这种方法。

    在此处下载支持文件: github.com/.../CMSIS-framework-for-TM4-devices

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

    这种"编程方法"可能 不是 CMSIS 独有的!    不是海报的故障代码 "sysctl->RCGCGPIO |= 0x20;"- "DRM"的"基于指针"版本?    虽然海报的代码避开了(通常)"HW_REG 宏"(将地址值转换为 C 指针)-效果(完全)相同。    请注意、 "引用的每个寄存器都必须定义为指针。"

    Ralph 对海报的"DRM"方法的识别-似乎很可能 -因为 如果 CMSIS 的使用被证明是独占的、则必须部署多个特殊的"CMSIS"文件。    (希望海报的讲师会注意 CMSIS 提出的要求!)  

    现在、我们的公司采用了 IAR IDE (与海报的 Keil 非常相似)、并且添加 了"CMSIS"这一功能得到了极大的简化。    (如下所示-请勿闪烁!)

    我们的海报"错过了"一个(类似)复选框-在 Keil -和(那)-是否都缺少?    我们希望!

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

     预计海报的"课堂上"成功源于与"Keil uVision 4"一起使用"供应商提供的项目"。

    您注意到的错误(我希望这些错误最多代表一个"非常大"冰山的"小费")与供应商的 Ralph 所说的一样、很可能是由于缺少"包括"而导致的。   (可能 缺少 CMSIS 要求的内容和"CMSIS 复选框"(假定可用)!)

    通常情况下、由于用户未能使用"供应商提供的项目"而导致此类结果、而是试图"创建自己的项目"。   (我闻起来有烟味!)   从不正确的想法-除非"IDE Maven "压倒了您对"计划成功-今年!"的渴望

    如果您已将您的代码"添加到建议的"供应商提供的项目"(理想情况下、这一项目与您的需求比较接近)-并且这些错误仍然存在-建议: "即使是 Windows 搜索"-当前"driverlib"中的所有文件-可能 "精确定位  "每个/每个"的位置缺失标识符..."

    为了最好地确认这一点-返回到您的旧版 Keil -并通过 "突出显示"标识符-您应该启用快速/简化的方法-来发现 "每个标识符的驻留位置!"   具有此知识的武装-您可以 "再次搜索-这次在更新的 Keil 版本下-并确定过去的位置-(仍然)是否包含"黄金"。

    [编辑] 我搜索了 TM4C 和 LX4F driverlib -关键字"sysctl 和 GPIOF"无法显示!    它们是否 出现 CMSIS 实施下?    海报必须 检查和评论...  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    以下是在这些器件上编写代码时使用 CMSIS 样式方法的一些示例:

    TM4C123: github.com/.../TM4C_LM4F120
    TM4C129: github.com/.../TM4C129
    LM3S: github.com/.../LM3S

    我想我为 MSP432编写了一组类似风格的驱动程序-同样可以为某些(大多数较新) MSP430完成此操作。