新手入门
- 积分
- 14
- 金钱
- 14
- 注册时间
- 2017-2-2
- 在线时间
- 2 小时
|
1金钱
程序是好使的,但是我用ST-Link的SW接口去调试的时候出现了问题,提示:
Access Port fault.Check the access port selection and ensure it fits the debugging context
下面附几个图片(前3张图)
另外,我将网上的一个姿态解算的算法放到了程序里,想用姿态解算的结果与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显示的语句改了一个(见第四张图)
结果LCD屏幕就没有数据显示了(没有编译错误),求原因
|
|