CCS编写F28335定时器0测试程序报错unresolved symbols remain error解决方法

博客作者在使用CCS编写F28335定时器程序时遇到了链接错误,经过排查发现是缺少DSP2833x_CpuTimers.c文件导致。在添加该文件到工程目录后,问题得以解决。作者强调了理解软件特性和工程目录结构的重要性,并分享了逐步定位和解决问题的过程,提醒读者在学习过程中要注意结合各种资源。
摘要由CSDN通过智能技术生成

CCS编写F28335定时器程序,普中开发板,出现如下报错

error #10234-D: unresolved symbols remain
error #10010: errors encountered during linking; “8.0_Timer_Interrupt_Led.out” not built

在这里插入图片描述

报错解决方法:

此错误原因是工程要使用定时器但没向工程中自用的Libraries库目录中添加DSP2833x_CpuTimers.c代码文件,

工程中自用的Libraries库
在这里插入图片描述
在这里插入图片描述

添加后编译通过。只需要复制到工程文件目录即可,CCS软件会自动更新软件中的列表和文件目录一致,这一点个人觉得比Keil MDK好用。

报错原因:

按照开发板教程,本工程由外中断拷贝修改而来,要向工程中的Libraries库目录中添加DSP2833x_CpuTimers.c代码文件。
该过程是普中开发板定时器例程建工程时的一个必要步骤,但视频教程中只在介绍定时器配置时简单提及此.c文件,说是前期教程已有介绍,并让看开发攻略。然而我学到这里已经忘了前面相关教程的内容了,翻看前面的视频费时间就没看。
在这里插入图片描述
本节教程我只看了视频教程没看开发攻略,回看开发攻略发现在里面有这一句介绍。以后还是要结合视频和开发攻略一起学习。
在这里插入图片描述

因为缺少DSP2833x_CpuTimers.c而DSP2833x_CpuTimers.h存在(所有外设.h文件被DSP2833x_Device.h文件统一包含进了工程),导致.c中的一个结构体对象CpuTimer0只有.h中的extern声明却没有.c文件的定义来申请内存空间。这些问题进一步导致了工程编译不报错,但在链接时报错!
在这里插入图片描述
在这里插入图片描述
如图,结构体对象CpuTimer0本应在DSP2833x_CpuTimers.c中定义,在DSP2833x_CpuTimers.h中进行extern声明。

问题解决经历:

出现错误后在网上查了很多方法但均不适用,于是自己解决。
首先是锁定问题位置,因为此报错是在链接时产生的,在之前的编译中没有任何报错,只能通过控制编译的代码部分反复尝试。
1.使用普中的定时器驱动替换后发现程序可通过编译,问题锁定到定时器驱动。
2.使用有问题的定时器驱动,将初始化函数注释后可通过编译,问题范围缩小到初始化函数中。
3.如此一步一步缩小问题范围,最终发现问题在以下3条代码上,注释后编译通过:

在这里插入图片描述
综合分析3行代码发现都含有CpuTimer0结构体对象,查找定义后只能追踪到DSP2833x_CpuTimers.h文件中的extern语句,却不知道是在哪定义的这个结构体。在工作空间共用库目录DSP2833x_Libraries中搜索到了这个头文件的同名.c文件。

在这里插入图片描述
在这里插入图片描述
注意:这里虽有.c文件但工程没使用,因为这是工作空间目录,在工程目录之外,而且工程没有设置任何引用外部.c文件。

此时将此.c文件拷贝到工程目录下的Libraries目录中。问题即可解决。

而我由于不熟悉CCS软件特性和工作空间目录结构,折腾了很久才偶然发现需要拷贝这个.c文件到工程目录中。本来解决了问题还是对整个过程一头雾水,写完本文发现头脑茅塞顿开,豁然开朗。看来还是需要多总结。感谢阅读,希望能帮到遇到同样问题的同志们!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值