请问STM8S的long转float

2019-07-19 20:41发布

最近做MPU6050陀螺仪,用的是STM8S003,使用网上 catluoq 朋友的DMP程序,可以读取数据,但飘动很大,仿真发现

float getdmplong(uchar address)
{
long dmptempl;
float fff;
  dmptempl = dmpdatas[address];
  dmptempl <<= 8;
  dmptempl |= dmpdatas[address+1];
  dmptempl <<= 8;
  dmptempl |= dmpdatas[address+2];
  dmptempl <<= 8;
  dmptempl |= dmpdatas[address+3];
  fff = (float)dmptempl;
  return (fff);
}
void getquaternion(void)
{
  quartf[0] = getdmplong(0)/1073741824.0;
  quartf[1] = getdmplong(4)/1073741824.0;
  quartf[2] = getdmplong(8)/1073741824.0;
  quartf[3] = getdmplong(12)/1073741824.0;
}


getquaternion 调用 getdmplong 函数时,返回的 dmptempl 隐形转换为 float ,数据错误

1.jpg 如果断点把 fff 改为 1593835520 则监视窗口显示是正确的
2.jpg
错误时的内存是 5F 00 00 00
3.jpg
哪位高手指点下,是怎么回事?
如果 dmptempl  小于10位数,则转换为 fff 是正确的,大于 10位数,则错误

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
qzwfeng
1楼-- · 2019-07-20 02:17
自己顶一下,感觉这里不是很热闹,都没人理睬俺的问题
850637704
2楼-- · 2019-07-20 07:18
你好~~   最近我也在做类似的, 我发现如果我用DMP的话  003根本就装不下   要用105K6才行    请问你是怎么做到了?
xwlf0727
3楼-- · 2019-07-20 10:17
 精彩回答 2  元偷偷看……

一周热门 更多>