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.

[参考译文] RTOS/TM4C1294NCPDT:ti RTOS 中的全局变量

Guru**** 2473260 points
Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/680670/rtos-tm4c1294ncpdt-global-variables-in-ti-rtos

器件型号:TM4C1294NCPDT

工具/软件:TI-RTOS

尊敬的先生,

我正在尝试通过 修改 uartecho_EK_TM4C1294XL_TI_TivaTM4C1294NCPDT (TI-RTOS)项目将 proface HMI 连接到 tm4c1294ncpdt。 我已经在这个项目中添加了两个名为 proface.h 和 proface.c 的文件。 我尝试将数据从 uartecho.c 文件传递到 proface.c、反之亦然。 但存在一些误差。 我已将 proface.h 文件包含在其余两个文件中。

在第一种情况 下,如果我在 proface.c 文件中定义变量,则会为 uartecho.c (未定义的符号)文件提供错误。

2.在第二种情况下,如果我在 uartecho.c 文件中定义变量,则 会为 proface.c (未定义的符号)文件提供错误。

3.在第三种情况下,如果我在 proface.h 文件中定义变量,它会给出错误,如所附的 snap 中所示。

那么、如何在 TI-RTOS 中定义全局变量呢?

此致、

Digvijay

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

    您好 Digvijay、

    当您需要在多个文件之间使用相同的全局变量时、只有一个文件应该具有标准全局变量定义(应该是您希望它源自的文件) 所有具有该变量的其他文件都应使用'extern '关键字将该变量声明为可用于该文件的变量。

    因此、在其中一个文件中、您需要定义变量、例如:

    uint16_t g_ui16MyVarible; 

    然后、对于所有需要使用它的文件、您可以使用'extern '关键字将该变量声明为可用变量:

    extern uint16_t g_ui16MyVarible; 

    这将使您能够在两个文件中正确定义全局变量。

    同样的特性也可应用于函数、例如我们的 TivaWare 示例如何将主文件中的 ISR 函数与中断矢量表的 startup_ccs.c 文件共享。 虽然通常用于声明函数的头文件是跨文件共享函数的更传统用例、但在诸如 startup_ccs.c 文件等有意义的情况下、可以使用 extern。

    以下也是 stackoverflow 提供的有关此内容的有用线程、以防您想进一步阅读 :https://stackoverflow.com/questions/1433204/how-do-i-use-extern-to-share-variables-between-source-files

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

    尊敬的先生,

    但是、为什么我无法在 proface.h 文件中声明变量、然后将此文件包含在我想要的任何文件中??  定义每个文件中的每个变量(使用和不使用 extern)不是一种好的编程方法。 我要做的是将工程所需的所有变量放入一 个.h 文件中、然后将该文件包含在我要使用这些变量的任何位置。 但这会产生误差、如上面的捕捉所示。 那么、我是否实现了这个目标??

    此致、

    Digvijay

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

    我相信您可以通过在头文件中使用 extern 来执行您所寻求的操作。 参考我在第一篇帖子中提供的 stackoverflow 帖子、它比我可以了解的更详细的关于你所寻求的事情的做和不做的事情。 从它听起来像是.h 文件中的 extern 功能也将为您提供所需的内容。 我只是习惯了我描述的方法(这似乎是一种常见的 TI 方法?)。