1 //BUF[0] BUF[1] 是传感器采集回来的值 无符号char型,ACCSUM是int型数据,目的是为了把采集回来的值放到一个变量中,然后取平均滤波,从而得到一个相对准确的数值。 2 //采集回来的数据在0左右跳动。 3 // 4 //后来发现这样得到的数据完全不对,这样做是完全行不通的。 5 //原因:左值的数据类型无法确定(实际是short型,但芯片无法还确认),直接赋值给一个int型数据会出现错误,例如负数-1(FFFF FFFF) 赋值后等于OOOO 0000 FFFF FFFF (正数) 6 ACCSUM +=((BUF[0]<<8)|BUF[1]); 7 // 8 // 9 //正确的做法是定义一个short型变量 ACCTEMP 10 //先把采集回来的16位数据存放在ACCTEMP中,在将ACCTEMP赋值给ACCSUM。这样既不会溢出也不会出现数据类型转换错误。 11 // 12 // 13 // 14 // 15 //
时间: 2024-10-08 05:47:27