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.

[参考译文] MSP-EXP430FR2433:编译器链接错误

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1125815/msp-exp430fr2433-compiler-link-error

器件型号:MSP-EXP430FR2433
主题中讨论的其他器件:MSP430WAREMSP430FR2433MSPWARE

我已加载 并安装 MSP430Ware_3_80_14_01。

我创建 了一个空项目  BlinkLED_MSP430FR2433 、并从 C:\ti\MSP430Ware_3_80_14_01\examples\boards\MSP-EXP430FR2433\MSP-EXP430FR2433_Software_Examples\Firmware\Source\BlinkLED_MSP430FR2433添加了 main.c 文件

我在编译器包含路径中添加了文件夹 C:\ti\MSP430Ware_3_80_14_01\examples\boards\MSP-EXP430FR2433\MSP-EXP430FR2433_Software_Examples\Firmware\Source\BlinkLED_MSP430FR2433\driverlib\MSP430FR2xx_4xx、以便可以找到 driverlib.h 文件。

我收到几个链接错误、例如...未解析的符号 GPIO_setAsOutputPin、首先在./main.obj 中引用

这是 CCS 生成的文件搜索路径

您是否能够帮助我解决链接器错误?

谢谢、

维克多

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

    尊敬的 Victor:

    我有点困惑、您是否只是尝试运行闪烁的 LED 示例代码?

    您使用的是 CCS 还是 IAR IDE?

    您能否仔细检查您是否已执行以下步骤: https://software-dl.ti.com/ccs/esd/documents/users_guide/index_overview.html

    此致、  

    Henok

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

    我正在使用 CCS 构建和运行两个闪烁示例代码。

    在 CCS 中、您可以为新项目选择  

    它会生成以下代码、这些代码会进行编译、链接和运行。

    #include <msp430.h>
    
    void main(void) {
        WDTCTL = WDTPW | WDTHOLD;               // Stop watchdog timer
        PM5CTL0 &= ~LOCKLPM5;                   // Disable the GPIO power-on default high-impedance mode
                                                // to activate previously configured port settings
        P1DIR |= 0x01;                          // Set P1.0 to output direction
    
        for(;;) {
            volatile unsigned int i;            // volatile to prevent optimization
    
            P1OUT ^= 0x01;                      // Toggle P1.0 using exclusive-OR
    
            i = 10000;                          // SW Delay
            do i--;
            while(i != 0);
        }
    }
    

    您还可以使用 CCS 构建空项目。

    并从 MSP430Ware 中添加 main.c、该文件将进行编译、但不会链接。

    #include <driverlib.h>
    
    int main(void) {
    
        volatile uint32_t i;
    
        // Stop watchdog timer
        WDT_A_hold(WDT_A_BASE);
    
        // Set P1.0 to output direction
        GPIO_setAsOutputPin(
            GPIO_PORT_P1,
            GPIO_PIN0
            );
    
        // Disable the GPIO power-on default high-impedance mode
        // to activate previously configured port settings
        PMM_unlockLPM5();
    
        while(1)
        {
            // Toggle P1.0 output
            GPIO_toggleOutputOnPin(
                GPIO_PORT_P1,
                GPIO_PIN0
                );
    
            // Delay
            for(i=10000; i>0; i--);
        }
    }
    

    两者的链接器文件搜索路径相同

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

    尊敬的 Victor:  

    您能否在文件存储库中共享已安装 MSP430Ware 的位置?  

    您还可以尝试导入与上述 main.c 代码最相似的 driverlib 示例吗? 通常、我们建议从预先存在的示例开始、并根据需要进行修改。

    此致、  

    Henok

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

    您好、Henok、

    感谢你的帮助。

    让我来为您提供一个 TivaWare 系列中的工作示例。

    我使用位于 TivaWare 外设驱动程序库中的 API 函数调用 GPIOIntEnable。

    在工程属性中、我添加了 driverlib.lib 的路径、其中所有内容都可以编译并链接而不会出现错误。

    如果我删除了 driverlib.lib 的路径、链接器会生成错误。

    如果我搜索 TivaWare 安装、我会找到这些文件。

    现在适用于 MSPWare。

    我使用 API 调用 GPIO_setAsOutputPin、如 《适用于 MSP430FR2xx_4xx 器件的 MSP430 DriverLib 用户 指南》中所示

     在项目属性的文件搜索路径中没有对 driverlib.lib 的引用。

    链接器会生成错误。

    如果我在 MSPWare 中搜索 driverlib.lib、我会得到以下结果。

    没有 MSP430和 FR4333的列表。

     在哪里可以找到 MSP430或 FR4333的 driverlib.lib?

     

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

    尊敬的 Victor:  

    我相信我知道问题是什么、让我在我的身边做一些测试、我将很快告诉您如何解决这个问题。  

    此致、  

    Henok

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

    尊敬的 Victor:  

    让我们尝试直接从 msp430Ware 导入空的 driverlib 示例。  

    1.单击项目选项卡并转至"import CCS projects...(导入 CCS 项目...)"

    2.单击右上角的浏览  

    3.找到 msp430Ware 并按照以下目录顺序操作:msp430Ware --> driverlib--> examples --> MSP430FR2xx_4xx --> 00_EmptyProject

    4.现在选择文件夹并重试、您现在应该会在工作区的这个项目下看到一个 driverlib 文件夹

    请告诉我这是否可行。  

    另一个想法是选择一个有效的 msp430Ware 示例、然后将 driverlib 文件夹直接复制到您的项目中

    以下是之前的 E2E、其中显示了以下内容: MSP430F5438A:如何将 driverlib 包含在我的现有 CCS 项目中? - MSP 低功耗微控制器论坛- MSP 低功耗微控制器- TI E2E 支持论坛

    此致、  

    Henok