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:CAN#39;t 编译程序链接错误

Guru**** 2465890 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/663627/ccs-tm4c123gh6pm-can-t-compile-program-linking-error

器件型号:TM4C123GH6PM

工具/软件:Code Composer Studio

我目前 正在使用 Launchpad Tiva C 系列 TM4C123G 评估套件。 我正在尝试 连接 NC-SR04超声波设备。 我在行上找到了一些代码、我收到了链接错误、我已经清除了程序中的一些其他错误如果有人能提供帮助、那将会很好。 请参阅下面的程序。

当函数未链接时、我使用的是版本:7.4.0.00015的 CCS、我从程序中删除了所有函数、以查看 是否会链接、并使用它们进行编译。

计划:

#include
#include
#include "stdlib.h"
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_timer.h"
#include "inc/hw_UART.h"
#include "inc/hw_gpio.h"
#include "inc/hw_pwm.h"
#include "inc/hw_types.h"
#include "driverlib/pin_map.h"

#include "driverlib/timer.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/rom.h"
#include "driverlib/rom_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "driverlib/udma.h"
#include "driverlib/pwm.h"
#include "driverlib/ssi.h"
#include "driverlib/SysTick .h"
//#include "EK_TM4C123GXL.h"

#include "utils/uartstdio.h"
#include

//
//
//驱动程序库遇到错误时调用的错误例程。
//
//
#ifdef 调试
无效
_error__(char * pcFilename、uint32_t ui32Line)


#endif


void inputInt (void);
失效的资产再保险(无效);
void InitConsole (void);

//这是为了避免每次读取时都执行数学运算
CONST 双温度= 1.0/80.0;

//存储脉冲长度
volatile uint32_t puls=0;

//告诉主代码当前是否正在读取 A 脉冲
volatile uint8_t echoait=0;



内部
MAIN ()


 //将系统时钟设置为80MHz
 SysCtlClockSet (SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHz);

 //配置 UART
 InitConsole();

 //配置计时器
 Capturetit();


 //配置触发引脚
 SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
 SysCtlDelay(3);
 GPIOPinTypeGPIOOutput (GPIO_Porta_base、GPIO_PIN_3);

 //配置回显引脚
 SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
 SysCtlDelay(3);
 GPIOPinTypeGPIOInput (GPIO_Porta_base、GPIO_PIN_2);
 GPIOIntEnable (GPIO_Porta_base、GPIO_PIN_2);
 GPIOIntTypeSet (GPIO_Porta_base、GPIO_PIN_2、GPIO_Bot_Edges);
 GPIOIntRegister (GPIO_Porta_base、inputInt);


 while (1)
 {

   //检查是否正在读取脉冲
   if (echowait!= 1){
     //所需的10us 脉冲
     GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、GPIO_PIN_3);
     SysCtlDelay (266);
     GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、~GPIO_PIN_3);

     /*
       这会使代码等待读取完成
       如果您希望代码不分块、则可以省略此部分
       只有当 echoait=0时、读取才准备就绪。
     *
     while (echowait!= 0);

     //将计数器值转换为 cm。
     PULSE =(uint32_t)(temp * PULSE);
     脉冲=脉冲/58;

     //打印出测量的距离。
     UARTprintf ("距离=%2dcm \n",脉冲);
   }
     //等待大约10ms 直到下一个读数。
     SysCtlDelay (400000);


 }


无效
InputInt (空)

 //清除中断标志。 因为我们仅在这方面启用了就足够了
 GPIOIntClear (GPIO_Porta_base、GPIO_PIN_2);

 /*
   如果是上升沿、则将定时器设置为0
   它处于周期模式、因此它具有一些随机值
 *
 if (GPIOPinRead (GPIO_PORta_base、GPIO_PIN_2)== GPIO_PIN_2){
   HWREG (TIMER2_base + TIMER_O_TAV)= 0;//将值0加载到计时器中。
   TimerEnable (TIMER2_base、TIMER_A);
   echowait=1;
 }
 /*
   如果检测到下降沿、则获取计数器的值
 *
 否则{
   脉冲= TimerValueGet (TIMER2_base、TIMER_A);//记录值
   TimerDisable (TIMER2_base、timer_A);
   echowait=0;
 }




无效
Capturreinit(作废)

 /*
   将计时器设置为周期性。
 *
 SysCtlPeripheralEnable (SYSCTL_Periph_TIMER2);
 SysCtlDelay(3);
 TimerConfigure (TIMER2_base、TIMER_CFG_PERIODIC_UP);
 TimerEnable (TIMER2_base、TIMER_A);


无效
InitConsole (空)

   //
   //启用用于 UART0引脚的 GPIO 端口 A。
   // TODO:将其更改为您正在使用的 GPIO 端口。
   //
   SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
   SysCtlDelay(3);

   //
   //为端口 A0和 A1上的 UART0功能配置引脚复用。
   //如果您的器件不支持引脚复用、则无需执行此步骤。
   // TODO:更改此选项以选择您正在使用的端口/引脚。
   //
   GPIOPinConfigure (GPIO_PA0_U0RX);
   GPIOPinConfigure (GPIO_PA1_U0TX);

   //
   //启用 UART0以便我们可以配置时钟。
   //
   SysCtlPeripheralEnable (SYSCTL_Periph_UART0);

   //
   //使用内部16MHz 振荡器作为 UART 时钟源。
   //
   UARTClockSourceSet (UART0_BASE、UART_CLOCK_PIOSC);

   //
   //为这些引脚选择替代(UART)功能。
   // TODO:更改此选项以选择您正在使用的端口/引脚。
   //
   GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);

   //
   //初始化控制台 I/O 的 UART
   //
   UARTStdioConfig (0、115200、16000000);

链接错误

****项目 HC-SR04-Ultrasonic 的配置调试构建****

"C:\\ti\\ccsv7\\utils\\bin\\gmake"-k -j 4 all -O
 
'生成文件:"../HC-SR04.c"
'调用:ARM 编译器'
"c:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.6.LTS/bin/armcl -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me -O2 --fp_mode=relaxed --include_path="E:/TiArm/HC-SR04-UltraSonic /ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.6.LTS/include --include_path="C:/ti/TivaWare_C_Series-2.1.4.178 --include_path="C:--include_path="C:/ti/TivaWare_C_Series-2.1.4.178/utils --include_path="C:ccs_pred=ccs_ecuration="ccs_ecure-ctrab-g-code.come-ccs_ecuration=g-ecrand_decuration="ctrab-ecure-ccs_ecure-ctrab-ecure-ctrab-g-ecuration="-g-ecuration="ccs_guide-ctrab-g-ecure-ctrab-g-ctrab-ecure-ctrab-g-come-ccs_guide-com  
'完工建筑:"../HC-SR04.c"
 
"建筑目标:"HC-SR04-Ultrasonic .out"
'调用:ARM 链接器'
"c:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.6.LTS/bin/armcl "-mv7M4 -code_state=16 -float_support=FPv4SPD16 -me -O2 -fp_mode=relaxed -define=ccs"-define=part_TM4C123GH6PM -g -gcc -diag_warning=225 ---cmp_wrap_ex-mspectric_atic"-m4mspectric_atic"-m_ram_overview-region-m_ature-m-r-r-msp.htm-aturbs.htm#-at_display-m_aturbi-display-r.htm#-rfrom-r.htm#-status-r.htm#-r.htm#-status_display-r.htm#-status_display-r.htm#-time-time-status-r.htm#-r.htm#-status_display-r.htm#-status_display-rfrom-r.htm#-status.htm#-status.htm#-status.micro-/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.6.LTS/include /ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.6.LTS/lib  


 未定义              的首次引用
 符号                         
 ------               --------
 GPIOIntClear           ./HC-SR04.obj   
 GPIOIntEnable          ./HC-SR04.obj   
 GPIOIntRegister        ./HC-SR04.obj   
 GPIOIntTypeSet         ./HC-SR04.obj   
 GPIOPinConfigure       ./HC-SR04.obj   
 GPIOPinRead            ./HC-SR04.obj   
 GPIOPinTypeGPIOInput   ./HC-SR04.obj   
 GPIOPinTypeGPIOOutput  ./HC-SR04.obj   
 GPIOPinTypeUART        ./HC-SR04.obj   
 GPIOPinWrite           ./HC-SR04.obj   
 SysCtlClockSet         ./HC-SR04.obj   
 SysCtlDelay            ./HC-SR04.obj   
 SysCtlPeripheralEnable ./HC-SR04.obj   
 SysCtlPeripheralPresent ./uartstdio.obj
 TimerConfigure         ./HC-SR04.obj   
 TimerDisable           ./HC-SR04.obj   
 TimerEnable            ./HC-SR04.obj   
 TimerValueGet          ./HC-SR04.obj   
 UARTCharGet            ./uartstdio.obj
 UARTCharPut            ./uartstdio.obj
 UARTClockSourceSet     ./HC-SR04.obj   
 UARTConfigSetExpClk    ./uartstdio.obj
 UARTEnable             ./uartstdio.obj

错误#10234-D:未解析的符号仍然存在
错误#10010:链接期间遇到错误;未构建"HC-SR04-Ultrasonic .out"

>>编译失败
Makefile:143:目标'HC-SR04-Ultrasonic .out'的配方失败
gmake.1]:***[HC-SR04-Ultrasonic .out]错误1.
gmake:***[全部]错误2.
Makefile:139:目标'all'的配方失败

****构建完成****

问题

说明   资源   路径   位置   类型
#10010 null:链接期间遇到错误;"HC-SR04-Ultrasonic .out"未构建   HC-SR04-Ultrasonic          C/C++问题
"="">processors.wiki.ti.com/.../10234"> null:未解析的符号仍为   HC-SR04-Ultrasonic          C/C++问题
Gmake:***[All]错误2   HC-SR04-Ultrasonic          C/C++问题
gmake.1]:***[HC-SR04-Ultrasonic .out]错误1   HC-SR04-Ultrasonic          C/C++问题
未解析的符号 GPIOIntClear、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 GPIOIntEnable、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 GPIOIntRegister、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 GPIOIntTypeSet、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 GPIOPinConfigure、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 GPIOPinRead、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 GPIOPinTypeGPIOInput、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 GPIOPinTypeGPIOOutput、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 GPIOPinTypeUART、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 GPIOPinWrite、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析符号 SysCtlClockSet、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析符号 SysCtlDelay、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析符号 SysCtlPeripheralEnable、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析符号 SysCtlPeripheralPresent、首先在./uartstdio.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 TimerConfigure、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 TimerDisable、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 TimerEnable、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 TimerValueGet、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 UARTCharGet、首先在./uartstdio.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 UARTCharPut、首先在./uartstdio.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 UARTClockSourceSet、首先在./HC-SR04.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 UARTConfigSetExpClk、首先在./uartstdio.obj   HC-SR04-Ultrasonic 中引用          C/C++问题
未解析的符号 UARTEnable、首先在./uartstdio.obj   HC-SR04-Ultrasonic 中引用          C/C++问题


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

    大家好、Gordon、

    您看到的问题往往是由于项目设置不当造成的。 有时、解决该问题的最简单方法是放弃项目并重新制作新项目。 也就是说、为了尝试并帮助您确定当前项目中可能缺少的内容、我需要 CCS Project Properties 中以下菜单的屏幕截图:

    • Project Properties -> Build -> ARM Compiler -> Include Options
    • Project Properties -> Build -> ARM Linker -> File Search Path
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    链接。

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

    请参阅随附...根据您的请求感谢您的帮助。 我要继续使用此文件的原因是、它将使我更好地了解 CCS 的工作方式、并尝试使现有程序正常工作。 我知道链接器未找到 文件或文件夹

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

    大家好、Gordon、

    啊、我认为我看到了您的问题。 您没有将 driverlib.lib 文件链接到您的 ARM 连接器->文件搜索路径树。 它位于"Include library file or command file as input"下。 我们在 TivaWare 上使用的链接是 "${SW_ROOT}/driverlib/ccs/Debug/driverlib.lib "、但这取决于 SW_ROOT 解析到 C:\ti\TivaWare_C_Series-2.1.4.178文件夹。 因此、根据您的项目需要对其进行调整。

    我认为、除此之外、您应该对其他人满意、但如果您在链接 driverlib 时仍有构建错误、请告诉我。

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

    谢谢 Ralph、您的帮助很好。 TI 应提供快速入门指南、让您了解编译程序所需的文件以及指向的位置。 如果 您是 TI MCU 的新用户、可以节省大量时间...再次感谢您的耐心和耐心...