注册 登录
查看: 530|回复: 7

一个BUG不知道哪里有问题,望山外哥解答,有图有真相

[复制链接]
发表于 2014-4-6 19:34:09 | 显示全部楼层 |阅读模式
本帖最后由 HunterLee 于 2014-4-6 19:46 编辑

  //计算融合后的角度
    QingHua_AngleCalaulate(angle_offset_vertical,Gyro_Now);                 //清华角度滤波方案
    Kalman_Filter(angle_offset_vertical,Gyro_Now);

    /*****************************串口看波形(选择使用)****************************/
#if 0                       //宏条件编译 选择是否使用 虚拟示波器
    OutData[0] = ENC03;
    OutData[1] = MMA7361;//Gyro_Now;
    OutData[2] = angle_offset_vertical ;
    OutData[3] = g_fCarAngle;
    OutPut_Data();
#elif 1
    OutData[0] = angle_dot;
    OutData[1] = Gyro_Now;
    OutData[2] = angle_offset_vertical ;
    OutData[3] = angle;
    OutPut_Data();



我这里如果用卡尔曼滤波算法,上面那个清华角度滤波都必须要才可以到虚拟示波器显示,如果把    QingHua_AngleCalaulate(angle_offset_vertical,Gyro_Now);                 //清华角度滤波方案
这一行给注释了,虚拟示波器就不会显示了,而且打印输出printf都会乱码,只有这一函数执行,printf才可以正常使用,我把printf修改为串口0输出,OUTPUT_Data也是串口0输出,难道是这里有问题???
真的无法理解,只有用清华了这个角度滤波,串口printf打印输出才不会乱,卡尔曼也才可以用,根本没办法理解啊!!这个BUG是怎么回事啊??
下面给一个直观点的图,
没有注释掉时:




注释掉后:
全部代码只改了这里





希望山外哥帮帮想想,是编译器的BUG??



















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-4-6 20:00:42 | 显示全部楼层
排除法,看看 QingHua_AngleCalaulate 里面的哪些语句影响了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-7 21:47:27 | 显示全部楼层
微粒子 发表于 2014-4-6 20:00
排除法,看看 QingHua_AngleCalaulate 里面的哪些语句影响了

根本想不明白,里面的和打印的都没有什么关系,居然会这样
回复 支持 反对

使用道具 举报

发表于 2014-4-7 22:28:49 | 显示全部楼层
HunterLee 发表于 2014-4-7 21:47
根本想不明白,里面的和打印的都没有什么关系,居然会这样

这问题,我也觉得奇怪。不过,建议你逐步屏蔽代码,排除法看看问题
回复 支持 反对

使用道具 举报

发表于 2014-4-12 13:31:26 | 显示全部楼层
走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2014-5-2 08:39:39 | 显示全部楼层
直立做的咋样了。
回复 支持 反对

使用道具 举报

发表于 2014-5-21 10:29:46 | 显示全部楼层
我感觉可能是你的窗口设置有问题,频率设置9600和程序对应吗?是不是要改成115200
回复 支持 反对

使用道具 举报

发表于 2014-5-21 10:31:35 | 显示全部楼层
uart_init (UART0,115200);看看你的程序里面这个是多少,串口助手频率设置要和这个一致
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部