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.

[参考译文] LAUNCHXL-F280049C:生成2个.c 文件或多个.c 文件、使用仅生成1个.out 文件进行构建

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1204006/launchxl-f280049c-build-2-files-of-c-or-multiple-c-files-getting-it-built-with-production-of-only-1-out-file

器件型号:LAUNCHXL-F280049C
主题中讨论的其他器件: C2000WARETMS320F2810、TMS320F28377S

大家好、  

你好。 我是代表客户发布此查询的。

我使用的是 LAUNCHXL-F280049C
让我们通过各种示例学到了很多
我的查询使用 LED 闪烁示例、创建了2 .c、即2个源文件、用于编程使2个 LED 闪烁、延迟为50us
如何构建这2个源文件?
只有1个包含 main (void)的源文件正在进行构建、而其他源文件未进行构建?
有哪些设置? 如何使用多个.c 或源文件构建项目?

我的查询非常简单

1.在 LAUNCHXL-F280049C 中导入了 LED 闪烁示例
2.LED1闪烁时可以很好地工作
3.已复制与.c 文件相同的文件并修改为使 LED2闪烁
4.只要存在第一个.c 文件、它就不会进行编译
5.另外、在第一个.c 文件中添加了 LED2以使其闪烁、这也可以正常工作
6.我需要的是获取.c 的构建2文件或多个.c 文件、将其通过仅生产1 .out 文件构建到目标中
7.这是一个示例、我之所以尝试、是因为在我的旧工程中有几个.c 文件、并要求使用1个.out 文件进行构建。

请帮助提供建议。 感谢您的支持。
此致、  
Marvin 酒店
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您能问一下他们为 LED2做了哪些更改吗? 请查看修改后的代码。

    此致、Santosh

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

    尊敬的 Santosh:  

    感谢您的快速响应。 请查看客户的附件。

    e2e.ti.com/.../led_5F00_ex1_5F00_LED2.ce2e.ti.com/.../2630.led_5F00_ex1_5F00_blinky.c

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

    尊敬的 Marvin:

    我只是测试了这个。 就表示工作正常。

    //#############################################################################
    //
    // FILE:   led_ex1_blinky.c
    //
    // TITLE:  LED Blinky Example
    //
    //! \addtogroup driver_example_list
    //! <h1> LED Blinky Example </h1>
    //!
    //! This example demonstrates how to blink a LED.
    //! If using LaunchPad, select build configuration for LAUNCHXL.
    //!
    //! \b External \b Connections \n
    //!  - None.
    //!
    //! \b Watch \b Variables \n
    //!  - None.
    //!
    //
    //#############################################################################
    //
    //
    // $Copyright:
    // Copyright (C) 2023 Texas Instruments Incorporated - http://www.ti.com/
    //
    // Redistribution and use in source and binary forms, with or without 
    // modification, are permitted provided that the following conditions 
    // are met:
    // 
    //   Redistributions of source code must retain the above copyright 
    //   notice, this list of conditions and the following disclaimer.
    // 
    //   Redistributions in binary form must reproduce the above copyright
    //   notice, this list of conditions and the following disclaimer in the 
    //   documentation and/or other materials provided with the   
    //   distribution.
    // 
    //   Neither the name of Texas Instruments Incorporated nor the names of
    //   its contributors may be used to endorse or promote products derived
    //   from this software without specific prior written permission.
    // 
    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    // $
    //#############################################################################
    
    //
    // Included Files
    //
    #include "driverlib.h"
    #include "device.h"
    
    //
    // Main
    //
    void main(void)
    {
        //
        // Initialize device clock and peripherals
        //
        Device_init();
    
        //
        // Initialize GPIO and configure the GPIO pin as a push-pull output
        //
        Device_initGPIO();
        GPIO_setPadConfig(DEVICE_GPIO_PIN_LED1, GPIO_PIN_TYPE_STD);
        GPIO_setDirectionMode(DEVICE_GPIO_PIN_LED1, GPIO_DIR_MODE_OUT);
    
        GPIO_setPadConfig(DEVICE_GPIO_PIN_LED2, GPIO_PIN_TYPE_STD);
        GPIO_setDirectionMode(DEVICE_GPIO_PIN_LED2, GPIO_DIR_MODE_OUT);
    
        //
        // Initialize PIE and clear PIE registers. Disables CPU interrupts.
        //
        Interrupt_initModule();
    
        //
        // Initialize the PIE vector table with pointers to the shell Interrupt
        // Service Routines (ISR).
        //
        Interrupt_initVectorTable();
    
        //
        // Enable Global Interrupt (INTM) and realtime interrupt (DBGM)
        //
        EINT;
        ERTM;
    
        //
        // Loop Forever
        //
        for(;;)
        {
            //
            // Turn on LED
            //
            GPIO_writePin(DEVICE_GPIO_PIN_LED1, 0);
            GPIO_writePin(DEVICE_GPIO_PIN_LED2, 1);
    
            //
            // Delay for a bit.
            //
            DEVICE_DELAY_US(500000);
    
            //
            // Turn off LED
            //
            GPIO_writePin(DEVICE_GPIO_PIN_LED1, 1);
            GPIO_writePin(DEVICE_GPIO_PIN_LED2, 0);
    
            //
            // Delay for a bit.
            //
            DEVICE_DELAY_US(500000);
        }
    }
    
    //
    // End of File
    //
    

    此致、Santosh

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

    尊敬的 Santosh:  

    感谢您的答复。 请查看客户的反馈。

    我的查询非常简单........

    1.我需要构建包含2个源文件的项目、1个源文件。 led_ex1_blinky.c 和2. LED_ex1_LED2.c
    2.第一个是从 TI 提供的使 LED1闪烁的示例导入的
    3.在同一文件中,如果我添加一个函数(另外)使 LED2闪烁,则表示工作正常。
    4.现在、假设我们不是只在一个源文件中添加函数来使2个 LED 闪烁、而是将相同的功能拆分为两个不同的分离源文件、就像前面2个源文件一样。
    5.为此、我创建了第一个文件的副本并使用更改的名称文件粘贴到工程目录中

    6.由于第二个源文件不能包含 main (void)、因此更改为了 venka (void)并更改 LED2名称。
    7.此第二个文件未生成。
    8.如果我"排除在构建中"第一个文件,然后第二个文件在更改 venka (void)到 main (void)后得到构建。
    9.这意味着第二个源文件在功能上是正确的。
    10。现在、如果我针对第一个文件从构建中删除 exclude、那么第一个文件只会获得构建过程中使 LED1闪烁
    11.现在,我的查询是如何添加第二个文件的构建。 这就是允许多个.c 文件在一个项目中生成编译文件的方式。
    12.什么是设置等或什么过程或单击项目中的某些设置,以便第二个或多个.c 文件也得到构建?
    13.在 CCS 版本12中、我需要构建一个大小适中的单一.c 文件吗?
    14.如何设计 CCS? 这个问题只能由 TI 来回答。
    15.需要一个包含设置或程序或说明的答复。 但这绝对不是我已经宣布的一个可行的答案

    请帮助提供建议。 感谢您的支持。
    此致、  
    Marvin 酒店
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Marvin、

    如果第二个文件位于同一文件夹中、则应进行构建。  我会好奇地看到他的项目。 您能实现他的项目吗?

    我按照前面提到的步骤、将其放入一个项目中。 请让他看一看这个项目。 导入项目、他应该会看到两个.c 文件。

    e2e.ti.com/.../5808.led_5F00_ex1_5F00_blinky.zip

    如果他遇到任何问题、请告诉我。

    此致、Santosh

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

    Marvin、

    请告诉我它是否可以解决客户问题?

    此致、Santosh

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

    尊敬的 Santosh:  

    感谢您的答复。 请查看我们的客户的反馈。

    "感谢您的反馈。

    下面是我的注释:
    1.请查看附件中包含两个.c 源文件的我的项目(ex4_leed_ex1_blinky)。 当开始构建时、LED1会闪烁。 但是、LED2并未构建完成。 然而、在 LED1 .c 源文件中、在删除//即注释行之后、两个 LED 即 LED1和 LED2开始闪烁。 我需要的是、在第二个.c 文件中保留类似功能后、同样的功能也必须使 LED2闪烁。 这不是由于提供了 Proj。 如何在同一项目中构建第二个具有第一个.c 文件且 LED1闪烁的.c 文件和第二个具有 LED2闪烁的.c 文件。 这是因为我有3.3 CCS 中的旧项目、有多个.c 文件。 有兴趣通过更换较旧的 TI 器件来使用较新的 TI 器件在12 CCS 中构建我的旧项目。
    2.请找到由 TI 发出的项目日志文件,其中同样有一些错误在控制台的日志文件中突出显示。
    3.同时,请找到相关的控制台屏幕快照"

    e2e.ti.com/.../ex4_5F00_led_5F00_ex1_5F00_blinky.zip

    e2e.ti.com/.../BuildLog_5F00_11Mar2023.txt

    请帮助提供建议。 感谢您的支持。
    此致、  
    Marvin 酒店
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Marvin、

    在我回答问题之前、我想检查客户是否尝试过我的项目?

    • 他们是否能够编译并运行我提供的项目?
    • 他们是否能够确认 CCS 可以编译多个.c 文件?
    • 他们是否能够确认 LED1由 main.c 文件切换、而 LED2在其他.c 文件中切换

    客户之前希望确保 CCS 可以编译多个.C 文件且功能可以拆分为多个.c 文件。

    一旦我得到确认、我就可以回答有关 客户项目的进一步说明。

    此致、Santosh

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

    尊敬的 Santosh:  

    感谢您的答复。 请查看我们的客户的反馈。

    他们是否能够编译并运行我提供的项目?
    不可以、TI 提供的工程无法生成、但我之前的回复中提供了更多的日志文件错误。

    他们是否能够确认 CCS 可以编译多个.c 文件?
    否、我无法编译多个.c 文件。 我的项目是在我之前的答复中提供的。

    他们是否能够确认 LED1由 main.c 文件切换、而 LED2在另一个.c 文件中切换?
    是的、LED1由 main.c 文件切换、而 LED2不会在另一个.c 文件中切换(这是根据我在之前的响应中提供的项目而进行的)。 实际上、LED2 .c 文件未进行构建、因此未进行构建。 它不会进行切换。 因此、请求了一个解决方案来如何在 CCS 版本12中构建或编译这两个.c 文件。

    再次附加在早期响应中提供的所有文件/项目。 这4个文件为1。 Log File、Console 的屏幕截图、整个 CCS 的屏幕截图、我的项目中显示两个.c 文件。

    e2e.ti.com/.../ex4_5F00_led_5F00_ex1_5F00_blinky-_2800_1_2900_.zip

    e2e.ti.com/.../BuildLog_5F00_11Mar2023-_2800_1_2900_.txt

    请帮助提供建议。 感谢您的支持。
    此致、  
    Marvin 酒店
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Marvin、

    您能要求客户安装最新的 C2000Ware SDK 吗? 缺少的文件是 C2000Ware 4.03.00.00的一部分。 客户使用的是4.02.00.00 SDK。

    可从此处下载最新的 C2000Ware SDK:

    https://www.ti.com/tool/C2000WARE

    安装 C2000Ware 4.03.00.00后、请重新导入工程并进行构建。

    此致、Santosh

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

    尊敬的 Santosh:

    感谢您的答复。 请查看我们的客户的反馈。

    "是的、加载 C2000Ware 4.03.00.00后、工程会工作。 谢谢!

    现在、请澄清这一点与我的旧工程相关联、其中包含用于旧器件 TMS320F2810到新器件 TMS320F28377S 的几个.c 文件..........
    1.是否需要将 main 和 basic .c 文件保留为"void main(void)"?
    2.我是否需要在 main.c 文件中添加名为"extern void Config_My_LED2 ();"的函数,就像在 LED 示例中完成的那样?
    3.在随后的其他.c 文件中,我需要将函数添加为"void Config_My_LED2 ()"和相关函数。

    此外,正如其他专家所建议的那样,是否有任何方法可以链接多个.c 文件?

    无论如何,基于这种新的支持和学习,我的结论是,修改 main .c 文件为"extern void ...();",然后在其他.c 文件中添加相关函数为"void ... ()"

    请确认以上内容、以便将我的旧项目最终化为新 CCS 版本12。

    主要查询的进一步解析..........

    请说明下一个在我的旧项目的能力.......

    我是否需要从旧工程中复制函数、并将所有函数的有效性比较到较新的器件、即 TMS320F28377S?

    请指导我从旧项目迁移到更新的器件。 对于快速迁移至具有旧器件中所有可用功能的较新器件、是否有任何应用手册或技巧?

    请查找随附的带 TI 器件 TMS320F2810的旧工程。 请建议我们如何将这几个.c 文件转换为更新的 TI 器件 TMS320F28377S。 此外、还建议我们选择其他备选器件来代替旧器件 TMS320F2810。"

    e2e.ti.com/.../smadsp.zip

    请帮助提供建议。 感谢您的支持。
    此致、  
    Marvin 酒店
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Marvin、

    我很高兴这对他们有用。 因此、我们回答了发布在该主题上的原始问题。

    让我总结一下这些内容。

    • 项目文件夹中的任何.c 文件都将由 CCS 编译
    • 有一些基本的 C  语言编程、任何有关 C 语言编程的书籍都将对此进行介绍。 客户应参考。
    • 只有一个带有 main()函数的文件。
    • 其他.c 文件中定义的函数必须由控制流调用。 例如_LED2.c、必须在 main 函数中调用它。 否则、编译器不会将其编译为优化的一部分。
    • 这里应该有一个头文件、该文件必须定义函数签名、而且您需要包含该函数。 如果没有头文件、则可以像我在提供的示例工程中那样将其声明为 extern。

    在我的项目中、_LED2.c 中有两个函数

    CONFIG_MY_LED2 (){=>这个函数只配置 GPIO,这就是在初始化期间调用它的原因

    TOGGLE_MY_LED2 () =>此函数切换 GPIO,以便在 while 循环中调用它

    因为没有头文件、所以我在_LED1.c 中用 extern 定义了函数。

    客户应使用我的项目作为基准、并缓慢地处理他们的文件。 这将必须自行解决。

    此致、Santosh

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

    尊敬的 Santosh:

    感谢您的答复。 请查看我们的客户的反馈。

    "谢谢!

    "应该有一个必须定义函数签名的头文件,你需要包括该函数。 如果没有头文件、那么你可以声明为 extern、就像我在我提供的示例工程中所做的那样。"

    我是否可以请求分享一个示例、以添加定义函数签名的头文件、从而避免使用 extern?

    四、. 和..........

    请基于我作为"smadsp"与 TI 器件 TMS320F2810共享的旧工程。 请告知我们如何使用头文件将这些几个.c 文件转换为更新的 TI 器件 TMS320F28377S。 至少提供1个示例、展示如何为 dac.c 文件添加头文件、该文件是"smadsp"项目的一部分。 我可以尝试建立自己。

    我们将非常感谢您的帮助。"

    请帮助提供建议。 感谢您的支持。

    此致、  

    Marvin 酒店

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

    Marvin、

    我可以请求分享一个示例,添加一个定义函数签名的头文件来避免 extern,请吗?

    请查看 C2000Ware 中的任何.h 文件作为参考。

    e2e.ti.com/.../led_5F00_ex1_5F00_blinky.h

    请基于我的旧项目作为"smadsp"与 TI 器件 TMS320F2810共享。 请告知我们如何使用头文件将这些几个.c 文件转换为更新的 TI 器件 TMS320F28377S。 至少提供1个示例、展示如何为 dac.c 文件添加头文件、该文件是"smadsp"项目的一部分。 休息我可以尝试建立自己。

    C2000Ware SDK 中应存在特定于器件的文件、只需使用这些文件即可。 您不需要迁移它。  

    很遗憾、如果这特定于您的应用、您需要手动连接。

    c:/ti/c2000/C2000Ware_4_03_00_00/device_support/f2837xd

    此致、Santosh

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

    尊敬的 Santosh:

    感谢您的答复。 请查看我们的客户的反馈。

    "我有点困惑,没有清楚和完整的细节。

    作为一个初学者......
    我需要一个给定的示例来将此文件包括在 TI 提供的 LED 项目中。 在研究了任何.h 文件后、LED 项目文件 device.h 文件和"led_ex1_blinky.h"的内容有很大差异。

    Santosh 说:

    " C2000Ware SDK 中应存在特定于器件的文件、只需使用这些文件即可。 您不需要迁移它。
    遗憾的是、如果这特定于您的应用、您需要手动连接它。
    C:/ti/c2000/C2000Ware_4_03_00_00/device_support/f2837xd

    在 C2000Ware SDK 中的何处查找特定文件???
    是的、我不需要迁移。
    那么、如何手动移植它??? 请逐步向我们提供应用手册或程序或说明。

    最好的方式是…

    给我们一个工作条件良好的可读示例、以便继续进行我们的项目、其中我们需要使用更新版本的 TI DSP f2827S 中的相同函数。"

    请帮助提供建议。 感谢您的支持。

    此致、  

    Marvin 酒店

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

    Marvin、

    由于这个线程的最初目标(编译多个.c 文件)已经完成、让我们关闭这个线程。 创建有关迁移的新主题。 我们将向正确的资源学习。

    此致、Santosh