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.

82335浮点数格式问题求助



做82335和上位机串口通讯,发送单精度浮点数,ccs中定义位float类型,想着DSP内部每4个连续字节存储一个浮点数,于是就按一下程序发送:

int i;
char *temp;
float testData=123.456;

float *curd=&testData;


temp=(char *)curd;

for(i=0;i<4;i++)
{
scic_xmit((int)(*temp));
temp++;
}

上面收到的数据不对。经过测试发现是直接读取连续4个字节这种方式出错。问:82335是按照4个连续字节存一个浮点数吗?刚才翻了翻以前的帖子介绍说内部的浮点有效数据只有24位。到底是怎么回事呢?

谢谢您的帮助

  • C2000的数据类型是比较复杂的     还有转换数据类型时是不是出问题了

    请看 下图说明

  • 谢谢您和回复。先前的确没想到int 和 char 类型数据长度不一样。而且float 每个存储单元为16bits.修改了一下程序:

    int i;
    Uint16 *temp;
    float testData=123.456;
    float *curd=&testData;
    temp=(Uint16 *)curd;

    for(i=0;i<2;i++)
    {

    scic_xmit((*temp)>>8);
    scic_xmit(*temp);
    temp++;

    }

    接收端的数据仍然是错误的,我就很郁闷了。

    思路很简单:temp取得testData的地址,然后发送4次。请您帮我看看,问题出在哪里?谢谢啊

  • 比对一下,发送端与接收端的四个字节数据,看看是不是字节在接收端的组合顺序有问题