TI中文支持网
TI专业的中文技术问题搜集分享网站

cla 强制类型转换

请怎么在cla程序中将 unsigned int 型的数据转换成 float型,用的是 .cla 文件。

尝试用c语言中强制类型转换的方式: value_float = (float) value_un_int;  结果不正确。

Hank Zhao:

结果是什么,CLA并不完是全支持C语言,可能跟这有关。

请怎么在cla程序中将 unsigned int 型的数据转换成 float型,用的是 .cla 文件。

尝试用c语言中强制类型转换的方式: value_float = (float) value_un_int;  结果不正确。

Zhihua Ge:

回复 Hank Zhao:

谢谢Hank Zhao的回复。

原因找到了,我最初的目的是将adc的结果 (unsigned int adc_result[ ]) 在cla中转换为float型,并进行相应的计算。

unsigned int adc_result[ ] 是在main.c中定义,为16bit数据。

而在“.cla”文件中,unsigned int型的数据却是32bit(TMS320C28x Optimizing C/C++ Compiler v6.4 User's Guide.pdf  第10章CLA Compiler 有讲到),char或short型的数据才是16bit的。

因此,在“.cla”文件中操作adc_result[ ],实际上是对一个32bit的数据在操作,其中只有16bit是确知的,另外16bit不确定,得到的结果自然是错误的。

解决方法:在“.cla”文件中

      typedef union{

                              unsigned int * p_32_cla;

                              char * p_16_cla;

        } type_convert_cla;

       type_convert_cla   p_middle;

       char * adc_result_cla ;

       p_middle.p_32_cla = adc_result;

       adc_result_cla = p_middle.p_16_cla;

  这样,在“.cla”文件中对adc_result_cla[ ] 进行强制类型转换就可以了。

——————————————————————————————————

以上代码部分只为表述对以应的方法,不保证无语法错误^-^。

所用的方法与http://processors.wiki.ti.com/index.php/C2000_CLA_C_Compiler中“Dealing with Pointers”部分介绍的方法类似。

  

请怎么在cla程序中将 unsigned int 型的数据转换成 float型,用的是 .cla 文件。

尝试用c语言中强制类型转换的方式: value_float = (float) value_un_int;  结果不正确。

囧:

CLA的C编译器不支持直接的强制转换,但是你把整型变量赋值给浮点型的时候就会自动转换成浮点型数据,

赞(0)
未经允许不得转载:TI中文支持网 » cla 强制类型转换
分享到: 更多 (0)