STM32
直播中

李兰英

7年用户 206经验值
私信 关注
[问答]

MPU6050温度计算double的强制类型转换是什么原理

各位大虾,小弟在看MPU6050的温度计算程序时, 对如下一句不太懂, 请大家指教。
short MPU_Get_Temperature(void)
{
    u8 buf[2];
    short raw;
float temp;
MPU_Read_Len(MPU_ADDR,MPU_TEMP_OUTH_REG,2,buf);
    raw=((u16)buf[0]<<8)|buf[1];  
    temp=36.53+((double)raw)/340;  
    return temp*100;;
}
temp=36.53+((double)raw)/340;  这个double的强制类型转换这里是怎样一个原理啊?请大家赐教

回帖(6)

刘建军

2019-1-11 12:40:51
如果不加,就变成整数了。
你改成float/double都可以。
举报

曹光辉

2019-1-11 12:57:36
恩恩, 了解了,多谢原子哥
举报

谭怡宁

2019-1-11 13:02:47
原子哥,关于这一段
temp=36.53+((double)raw)/340;  
温度的范围手册上写的是 -40°~85° ,那不需要减去相应的值吗??比如说0/340 应该是-40°
还有一个问题就是,我读MPU6050温度寄存器的时候,读出来是600XX,按照这个公式算出来就不对了,
读出来的数据这么大是因为零漂吗?需要校准吗?我用手放上去读出来的数字是640XX了,说明温度传感器是工作的。
举报

张茜

2019-1-11 13:13:58
不用。你用我们代码试试。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分