解决陀螺仪代码中float精度不够的问题

问题:

陀螺仪通电后长时间不动会发生如下变化:

①Vx、Vy的数量级达到10^38,V的数量级达到10^19

②X_del和Y_del一直等于0

③将KAL_filter函数的第二个入口参数直接改成0,发现对应的Vx/Vy/Vw变成0

解决陀螺仪代码中float精度不够的问题

 

解决:

多次debug并修改代码测试后发现OSTime增加到一定值(0x02000000)后ticks值可能溢出(float精度不够),导致有些位数读取不了。将强制类型转化的操作提前一步即可解决该问题。

修改前代码:

解决陀螺仪代码中float精度不够的问题

修改后代码:

解决陀螺仪代码中float精度不够的问题

 

待解决:

X_del变量等于0代入KAL_filter函数与数值0直接代入该函数得到的结果为什么不同?

上一篇:MTK 解决拔掉usb时功耗比较大的问题


下一篇:前端开发之异常捕获技巧