Part Number:TMDSCNCD28388DOther Parts Discussed in Thread:C2000WARE
您好,我在复现一个官方的例程(led_ex1_blinky),我首先新建了一个C28x的工程,然后将例程中的文件全部copy到了新的工程中,并按照例程的工程属性,修改了新工程属性的include option,predefined symbol和file search path。然后进行编译,编译的时候报错declaration is incompatible with "void __error__(const char *, uint32_t)" (declared at line 51 of "D:\ti\c2000\C2000Ware_4_01_00_00\driverlib\f2838x\driverlib\debug.h") device.h /led_c28x_test/device line 487 C/C++ Problem,具体错误情况如下图所示:
此外我发现直接将driverlib拷贝到工程目录下也会报错。不知道是不是我再配置工程属性的时候漏了哪一部还是存在别的问题。
非常感谢您能为我提供一些帮助。
Yale Li:
您好,请问您使用的是这个路径下的例程吗:C:\ti\c2000\C2000Ware_4_01_00_00\driverlib\f2838x\examples\c28x\led
,
yeyuan zhu:
嗯,是这个路径下的例程
,
Yale Li:
刚开始不推荐您使用这种方式新建/导入工程。
您打开CCS以后,project–>import CCS project,在弹出的窗口中:
然后直接编译后就可以调试运行。
,
yeyuan zhu:
我是打算复现一个官方的例程的环境,学习一下新建工程有哪些注意事项,在这个过程中遇到了这个报错,并不是使用例程。
,
Yale Li:
您是初学者的话强烈不建议您这样做。我们更推荐的是在已有的例程上进行修改,没有必要自己新建。
新建工程看一下这个链接:
https://software-dl.ti.com/ccs/esd/documents/users_guide_zh/ccs_getting-started.html#creating-a-new-ccs-project
还有这两个链接也可以参考一下:
https://blog.csdn.net/weixin_44500751/article/details/109570872
https://www.dazhuanlan.com/winter-z/topics/1142595
报错的字面意思就是,同一个声明在不同文件中声明了两次,且不一样,所以报了冲突。
,
yeyuan zhu:
非常感谢您的分享,报错的问题已经解决啦,现在自己新建的工程已经可以点亮led了。原因大致如下:这个_ERROR_的函数在device.c中定义,在driverlib/debug.h和device.h中声明。但我把这几个文件从官方例程复制到我的新工程后,driverlib/debug.h中对于_ERROR_函数的声明发生了变化。如下如所示。我把新工程中对于这个函数声明参数类型定义的char改成const char后编译通过了(这里只能将char改成const char,若是删掉多出来的const依然会报错)。
至于为什么复制粘贴后发生了变化,我暂时也没搞清楚为什么。我的CCS版本式11.0.0,电脑中有两个版本的C2000Ware分别为4_00_00_00和4_01_00_00.
,
yeyuan zhu:
我看了下4_00_00_00版本的debug.h函数和4_01_00_00版本的debug.h函数,发现不一样,又看了下我新建工程属性中include path选的是4_01版本的而复制的官方例程的头文件和源文件都是4_00版本的。问题全部解决了。
,
Yale Li:
很高兴您能解决问题,也非常感谢您的分享!