ZHCU876Z July 2001 – October 2023 SM320F28335-EP
CLA 的 C 语言具有几个附加限制。
由于 CLA 代码是在中断驱动的环境中执行的,因此没有 C 系统引导序列。因此,必须在程序执行期间,通过 C28x 驱动程序代码或在 CLA 函数内执行全局/静态数据初始化。
可以对定义为常量的变量进行全局初始化。编译器创建名为 .const_cla 的初始化数据段来保留这些变量。
CLA 编译器支持大多数 GCC 扩展。默认情况下,C 和 CLA 编译器都启用了 GCC 扩展。有关更多信息,请参阅节 6.14.3中的 --relaxed_ansi 选项和节 6.15中的 GCC 语言扩展列表。
只要不在中断属性中包含任何参数,节 6.9.15中介绍的中断函数属性就可以与 CLA 中断结合使用。CLA 编译器也支持 INTERRUPT pragma。例如,支持以下用法:
__attribute__((interrupt))
void interrupt_name(void) {...}
#pragma INTERRUPT(interrupt_name);
void interrupt _name(void) {...}
对于 CLA2 后台任务,“BACKGROUND”参数指定这是后台任务,而不是常规中断。支持以下用法。
__attribute__((interrupt("BACKGROUND")))
void task_name(void) {...}
#pragma INTERRUPT(task_name, "BACKGROUND");
void task_name(void) {...}
CLA 编译器不允许在后台任务中进行函数调用。允许使用内联函数,因此可以改用此类函数。