OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4892|回复: 5

想问一下原子的MPU6050实验程序无法调试的问题

[复制链接]

1

主题

5

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2017-2-2
在线时间
2 小时
发表于 2017-2-2 21:56:04 | 显示全部楼层 |阅读模式
1金钱
程序是好使的,但是我用ST-Link的SW接口去调试的时候出现了问题,提示:
Access Port fault.Check the access port selection and ensure it fits the debugging context
下面附几个图片(前3张图) 1QTHXC}OA5L%L%L{ODUA55U.png 2_7H0E)NFT~3TL{`G08FJG3.png YOSQTTR5XU3CZ$H$JCXS[95.png


另外,我将网上的一个姿态解算的算法放到了程序里,想用姿态解算的结果与DMP的结果对比一下,又出现了问题,姿态解算函数声明如下
#include "IMU.h"
#include <math.h>

#define Kp 2.0f                     
#define Ki 0.005f         
#define halfT 0.5f            

float q0 = 1, q1 = 0, q2 = 0, q3 = 0;   
float exInt = 0, eyInt = 0, ezInt = 0;        

void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az, float *pitchttt,float *yawttt,float *rollttt)
{
        float norm;
        float vx, vy, vz;
        float ex, ey, ez;         
      
        norm = sqrt(ax*ax + ay*ay + az*az);      
        ax = ax / norm;
        ay = ay / norm;
        az = az / norm;      

        vx = 2*(q1*q3 - q0*q2);
        vy = 2*(q0*q1 + q2*q3);
        vz = q0*q0 - q1*q1 - q2*q2 + q3*q3;

        ex = (ay*vz - az*vy);
        ey = (az*vx - ax*vz);
        ez = (ax*vy - ay*vx);
         
        exInt = exInt + ex*Ki;
        eyInt = eyInt + ey*Ki;
        ezInt = ezInt + ez*Ki;
         
        gx = gx + Kp*ex + exInt;
        gy = gy + Kp*ey + eyInt;
        gz = gz + Kp*ez + ezInt;

        q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT;
        q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT;
        q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT;
        q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT;  
         

        norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3);
        q0 = q0 / norm;
        q1 = q1 / norm;
        q2 = q2 / norm;
        q3 = q3 / norm;
   
    *pitchttt=asin(q0*q2-q1*q3);
    *yawttt=atan2(2*q0*q3+2*q1*q2,1-2*q2*q2-2*q3*q3);
    *rollttt=atan2(2*q0*q1+2*q2*q3,1-2*q1*q1-2*q2*q2);
}
然后我在原子的main.c中添加了一个使用这个函数的语句,然后把LCD显示的语句改了一个(见第四张图)
E0XXYLZH6GP}$VDKJVLH68E.png
结果LCD屏幕就没有数据显示了(没有编译错误),求原因

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-2-6 19:05:42 | 显示全部楼层
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2017-2-2
在线时间
2 小时
 楼主| 发表于 2017-2-7 16:04:34 | 显示全部楼层
正点原子 发表于 2017-2-6 19:05
是我们的板子么?

是的,精英板
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2017-2-2
在线时间
2 小时
 楼主| 发表于 2017-2-7 16:41:52 | 显示全部楼层
现在无法显示数据的问题解决了,但是貌似结果不对0.0

[img=110,0][/img]
主程序(一部分)如下

IMUupdate()函数基本没变。。
关于无法调试的问题,我看了一下原子的代码(mpu6050.c),里边注释写道要禁止JTAG,从而PA15可以做普通IO,所以我用的是STlink的SW调试,然后就会出现我一楼说的问题。是不是SW调试用的也是PA15所以会出问题呢?如果是的话应该怎么解决?感觉不能调试的话很难解决上边说的数据的问题。。
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2017-2-2
在线时间
2 小时
 楼主| 发表于 2017-2-7 16:43:06 | 显示全部楼层
本帖最后由 zhang960303 于 2017-2-7 16:48 编辑

刚才图没发出来,我再发一次
IMG_20170207_160009.jpg

22.png
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2017-2-2
在线时间
2 小时
 楼主| 发表于 2017-2-7 17:20:35 | 显示全部楼层
zhang960303 发表于 2017-2-7 16:43
刚才图没发出来,我再发一次

补充一下:改变板子的姿态Roll始终不变,Pitch和Yaw在小范围内波动
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 23:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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