初级会员

- 积分
- 58
- 金钱
- 58
- 注册时间
- 2016-1-27
- 在线时间
- 18 小时
|
2金钱
我发现只要在MPU6050里,只要加入一个delay函数,就会有获得不到DMP数据但是有6轴原始数据,这是怎么回事呢?只要把delay ms函数设定到327以上就有DMP没数据,这为什么呢?求大神看看~
*直接通过串口发送数据,波特率115200,MPU6050链接IIC2接口,A0脚悬空。
工程文件下载:http://pan.baidu.com/s/1IuLkU
main文件代码如下:
#include "delay.h"
#include "usart.h"
#include "mpu6050.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"
int main(void)
{
float pitch,roll,yaw; //欧拉角
short aacx,aacy,aacz; //加速度传感器原始数据
short gyrox,gyroy,gyroz; //陀螺仪原始数据
int16_t p,y,r;
uart_init(115200); //串口初始化为500000
delay_init(); //延时初始化
MPU_Init(); //初始化MPU6050
mpu_dmp_init(); //初始化DMP
while(1)
{
mpu_dmp_get_data(&pitch,&roll,&yaw); //得到DMP的姿态角
MPU_Get_Accelerometer(&aacx,&aacy,&aacz); //得到加速度传感器数据
MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz); //得到陀螺仪数据
p=(int)(pitch*100);
y=(int)(yaw*10);
r=(int)(roll*100);
printf("Pitch=%d\r\n",p);
printf("Roll=%d\r\n",r);
printf("Yaw=%d\r\n",y);
printf("AX=%d\r\n",aacx);
printf("AY=%d\r\n",aacy);
printf("AZ=%d\r\n",aacz);
printf("GX=%d\r\n",gyrox);
printf("GY=%d\r\n",gyroy);
printf("GZ=%d\r\n\r\n",gyroz);
// delay_ms(500);
}
}
|
|