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.

cla 强制类型转换

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

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

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

  • 谢谢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 有讲到),charshort型的数据才是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的C编译器不支持直接的强制转换,但是你把整型变量赋值给浮点型的时候就会自动转换成浮点型数据,