请怎么在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编译器不支持直接的强制转换,但是你把整型变量赋值给浮点型的时候就会自动转换成浮点型数据,