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.

[参考译文] 错误#10234-D:未解析的符号仍然存在

Guru**** 2524460 points
Other Parts Discussed in Thread: TM4C1294NCPDT, TM4C129ENCPDT

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/988180/error-10234-d-unresolved-symbols-remain

主题中讨论的其他器件:TM4C1294NCPDTTM4C129ENCPDT

大家好
在使用以下代码时、我尝试使用 CAN 协议通信两个 tm4c1294ncppdt 卡、但我收到错误#10234-D:未解析的符号仍然存在"错误。

这是我的代码:(此处引用: Ohm.ninja/.../ )

/*
* CAN 总线 LED 控制器主固件
*为 TI Tiva TM4C1294NCPDT 编写
*

#include
#include
#include

#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_ca.h"
#include "inc/hw_ints.h"
#include "driverlib/CAN.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/uart.h"
#include "driverlib/pin_map.h"

#include "utils/uartstdio.h"

#define PI 3.14159265359f

易失性 bool 错误标志= 0;//传输错误标志
unsigned int sysClock;//时钟速度,单位为 Hz

void delay (unsigned int milliseconds){
SysCtlDelay ((sysClock / 3)*(毫秒/ 1000.0f));

// CAN 中断处理程序
void CANIntHandler (void){

无符号长整型状态= CANIntStatus (CAN1_base、CAN_INT_STS_CAUST);//读取中断状态

if (status =CAN_INT_INTID_STATUS){//控制器状态中断
状态= CANStatusGet (CAN1_base、CAN_STS_CONTROL);//读回错误位,对它们执行什么操作?
错误标志= 1;
}否则、如果(status ==1){//消息对象1
CANIntClear (CAN1_base、1);//清除中断
错误标志= 0;//清除任何错误标志
}否则{//永远不会发生
UARTprintf ("意外的 CAN 总线中断\n");

int main (void){

tCANMsgObject msg;// CAN 报文对象
unsigned int msgData;//消息数据长度为四个字节,我们可以将其分配为 int32
unsigned char * msgDataPtr =(unsigned char *)&msgData;//创建指向 msgData 的指针,以便我们可以访问各个字节

//从 PLL 以120MHz 运行。
SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_main | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);

//设置调试 UART
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);//启用 UART0 GPIO 外设
SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
GPIOPinConfigure (GPIO_PA0_U0RX);
GPIOPinConfigure (GPIO_PA1_U0TX);
GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
UARTStdioConfig (0、115200、sysClock);// 115200波特

//设置 CAN1
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);//启用 CAN1 GPIO 外设
GPIOPinConfigure (GPIO_PB0_CAN1RX);
GPIOPinConfigure (GPIO_PB1_CAN1TX);
GPIOPinTypeCAN (GPIO_PORTB_BASE、GPIO_PIN_0 | GPIO_PIN_1);
SysCtlPeripheralEnable (SYSCTL_Periph_CAN1);
CANInit (CAN1_base);
CANBitRateSet (CAN1_base、sysClock、50000);
CANIntRegister (CAN1_base、CANIntHandler);//使用动态矢量表分配
CANIntEnable (CAN1_base、CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);
IntEnable (INT_CAN1);
CANEnable (CAN1_base);

//设置 msg 对象
msgData = 0;
MSG.ui32MsgID = 1;
MSG.ui32MsgIDMask = 0;
MSG.ui32Flags = MSG_OBJ_TX_INT_ENABLE;
MSG.ui32MsgLen = sizeof (msgDataPtr);
MSG.pui8MsgData = msgDataPtr;

unsigned int t = 0;//循环计数器
float freq = 0.3;//频率分频器

while (1){

//设置下一个颜色(缩放正弦(0-1)到0-255)
msgDataPtr[0]=(0.5 + 0.5*sinf (t*freq))* 0xFF;
msgDataPtr[1]=(0.5 + 0.5*sinf (t*freq +(2*PI/3)))* 0xFF;// 120度异相
msgDataPtr[2]=(0.5 + 0.5*sinf (t*freq +(4*PI/3)))* 0xFF;// 240度异相
msgDataPtr [3]= 128;//强度为50%

UARTprintf ("发送颜色\tr:%d\TG:%d\TB:%d\n"、msgDataPtR[0]、msgDataPtR[1]、msgDataPtR[2]);//将颜色写入 UART 以进行调试
CANMessageSet (CAN1_base、1、&msg、MSG_OBJ_TYPE_TX);//作为 msg 对象1发送

延迟(100);//等待100ms

if (errFlag){//检查错误
UARTprintf ("CAN 总线错误"n);

T++;//溢出正常

 返回0;

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

此处显示了错误:

这包括选项(我在这些路径中包含了所有头文件、我的代码中提到了这些文件。):


尽管所有必需的头文件都可用并已定义、但该错误从未得到解决。  如果有人能帮助我、那将是完美的。  

谢谢。

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

    您好!

     我认为您的链接器中缺少 driverlib.lib。 请参阅下面的内容。 我建议您使用现有 TivaWare 示例开始您的项目、例如"hello"或"blinky"示例。 这些示例将已经使用正确的包含搜索路径和库设置 CCS 项目。  

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

    Charles、您好、感谢您的关注

    我从零开始、就像您说的那样。 打开 hello world 示例并添加这些头文件、以查看是否会发生任何错误。

    #include
    #include
    #include

    #include "inc/hw_memmap.h"
    #include "inc/hw_types.h"
    #include "inc/hw_ca.h"
    #include "inc/hw_ints.h"
    #include "driverlib/CAN.h"
    #include "driverlib/interrupt.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/gpio.h"
    #include "driverlib/uart.h"
    #include "driverlib/pin_map.h"

    #include "utils/uartstdio.h"

    /**
    * hello.c
    *
    int main (空)

    printf ("Hello World!\n");

    返回0;

    --------------------------------------------------

    现在:

    >>编译失败
    subdir_rules.mk:9:目标'hello.obj'的配方失败
    "./hello.c"、第5行:致命错误#1965:无法打开源文件"inc/hw_memmap.h"
    1在编译"../hello.c"时检测到灾难性错误。
    编译已终止。
    gmake:***[hello.obj]错误1.
    编译文件:"../tm4c129encpdt_startup_ccs.c"
    调用:ARM 编译器
    "c:/ti/ccs1020/ccs/tools/compiler/ti-cgt-arm_20.2.2.LTS/bin/armcl -mv7M4 -code_state=16 --float_support=FPv4SPD16 -me --include_path="C:/Users/Batuhan mete/workspace_v10/hello"--include_path="C:/ti/ccs1020/ccs/tools/compiler/ti-cgt-arm_20.2.2.LTS/include --define=ccs="ccs"--define_TM4C12_trendation="ccs_pred_copy_display_support=ccs_tradaptive-regulation_decuration="-ination_decuration="-ecuration_decont_regulation="caption_ination="caption_ecuration_decuration="caption_ecuration_decuration="-ination_decuration_decuration="caption_ecuration="caption_ecuration="caption_ecuration="caption_ecuration_decont
    完成构建:"../tm4c129encpdt_startup_ccs.c"

    gmake:目标"全部"不会由于错误而重新生成。

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

    --------------------------------------------------

    程序从未看到"inc、driverlib、utils"文件夹。

    通过添加 SW_ROOT 的方法、正如您所说的、但有警告:SW_ROOT 无法解析。

    您是否知道为什么会发生这种情况?

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

    你好。 我已解决将#include "utils/uartstdio.c"添加到代码中的头文件问题。 我还将 driverlib、utils 和 inc 文件夹粘贴到"C:\ti\ccs1020\ccs\tools\compiler\ti-cgt-arm_20.2.LTS \include"文件夹中。