375芯片一写浮点数,就当机。

len = sprintf( mCmdParam.ByteWrite.mByteBuffer, "%f\xd\xa",sbno); /* 将二制制数据格式为一行字符串 */ mCmdParam.ByteWrite.mByteCount = (unsigned char)len; /* 指定本次写入的字节数,不能超过MAX_BYTE_IO,否则另用缓冲区分多次写入 */ i = CH375ByteWrite( ); /* 以字节为单位向文件写入数据,单次读写的长度不能超过MAX_BYTE_IO */ mStopIfError( i );

如果换成下面写十进制就没有问题。 len = sprintf( mCmdParam.ByteWrite.mByteBuffer, "%02d\xd\xa",sbno); /* 将二制制数据格式为一行字符串 */ mCmdParam.ByteWrite.mByteCount = (unsigned char)len; /* 指定本次写入的字节数,不能超过MAX_BYTE_IO,否则另用缓冲区分多次写入 */ i = CH375ByteWrite( ); /* 以字节为单位向文件写入数据,单次读写的长度不能超过MAX_BYTE_IO */ mStopIfError( i );

CH375不会区分是不是浮点数的,对CH375来说仅仅只是数据而已。 你看一下len是多少,另外看一下mCmdParam.ByteWrite.mByteBuffer数据内容是什么。看看长度是否超过了MAX_BYTE_IO 。另外看看死机到底是死在哪里?确定不是sprintf死机? 如果测试时CH375ByteWrite( );死机,那你采用复制的方式而不用 sprintf看看又是什么效果?你详细测试一下,可能就能找出规律了。如果len超过了MAX_BYTE_IO则RAM溢出。


只有登录才能回复,可以选择微信账号登录