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工程下的某个.c文件封装成.lib文件或者是把某个函数封装起来,请各位专家有相应的方法或者可以参考的资料吗?请帮忙提供一下,谢谢!
那可能是CLA有限制,本身CLA调用lib库也有限制,比如
我找了一下编译出错的原因,发现和CLA_cfg.h中Cla1BackgroundTask()的函数声明有关,如图1红色圈中所示。初始时我们在CLA中用的是__attribute__((interrupt("background"))) void Cla1BackgroundTask(); 在生成.lib文件过程中编译会出错。我将其替换成__attribute__((interrupt)) void Cla1BackgroundTask();后编译可以通过,如图2所示。对于图1中的#if defined(__TMS320C28XX__)不明白是什么含义,可以帮忙解释一下吗?是不是我们之前在CLA中用的Cla1BackgroundTask()有问题?
图1
图2
你好,很抱歉的是,关于“__attribute__((interrupt("background"))) void Cla1BackgroundTask();”和“__attribute__((interrupt)) void Cla1BackgroundTask();”的区别我也不太清楚。
关于#if defined(__TMS320C28XX__)的话是一个宏定义,编译器手册中的官方解释是:Defined if target is C28x
你好,谢谢回复!我们用的是F280049,那应该要用__attribute__((interrupt)) void Cla1BackgroundTask()这个函数,请问我这么理解对吗?因为确实用了这个函数之后,用.cla文件生成.lib文件编译时就不会报错。只是比较奇怪的是,在原工程文件中即使用“__attribute__((interrupt("background"))) void Cla1BackgroundTask();”编译也不会报错。
我们用的是F280049,那应该要用__attribute__((interrupt)) void Cla1BackgroundTask()这个函数,请问我这么理解对吗?
我认为是的,不过原因的话我的猜测是,这段代码本来是给CLA用的,所以原工程用#else中的内容可以。而生成库的话编译器可能理解为是给C28核用的,所以要用__attribute__((interrupt)) void Cla1BackgroundTask()
不过只是猜测,没什么根据。