[mw_shl_code=c,true]void SYS_INIT(void)
{
LED_Init();
delay_init();
Nvic_Init();
NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
Uart_Init(9600);
Tim3_Init(1000); //1000=1MS,500=0.5MS
MPU_Init();
// mpu_dmp_init();
delay_us(50);
printf("\r\n飞控系统初始化完成...\r\n");
// LED_Flash();
}
// float *pitch, *roll, *yaw; //欧拉角
int main(void)
{
// float pitch, roll, yaw; //欧拉角
// short aacx,aacy,aacz; //加速度传感器原始数据
// short gyrox,gyroy,gyroz; //陀螺仪原始数据
// short temp;
SYS_INIT();
while(1)
{
// mpu_PC_Attitude();
// mpu_dmp_init();
MPU_Get_Accelerometer(&aacx,&aacy,&aacz); //得到加速度传感器数据
printf("加速度: %8d %8d %8d \r\n",aacx,aacy,aacz);
MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz); //得到陀螺仪数据
printf("陀螺仪: %8d %8d %8d \r\n",gyrox,gyroy,&gyroz);
axh = MPU_Read_Byte(MPU_ACCEL_XOUTH_REG);
axl = MPU_Read_Byte(MPU_ACCEL_XOUTL_REG);
aax = axh|axl;
ayh = MPU_Read_Byte(MPU_ACCEL_YOUTH_REG);
ayl = MPU_Read_Byte(MPU_ACCEL_YOUTL_REG);
aay = ayh|ayl;
azh = MPU_Read_Byte(MPU_ACCEL_ZOUTH_REG);
azl = MPU_Read_Byte(MPU_ACCEL_ZOUTL_REG);
aaz =azh|azl;
}
}[/mw_shl_code]
这是我的主函数,这是原子哥的例程:
[mw_shl_code=c,true]//得到陀螺仪值(原始值)
//gx,gy,gz:陀螺仪x,y,z轴的原始读数(带符号)
//返回值:0,成功
// 其他,错误代码
u8 MPU_Get_Gyroscope(short *gx,short *gy,short *gz)
{
u8 buf[6],res;
res=MPU_Read_Len(MPU_ADDR,MPU_GYRO_XOUTH_REG,6,buf);
// res=MPU_Read_Len(MPU_ADDR,MPU_GYRO_YOUTH_REG,6,buf);
if(res==0)
{
*gx=((u16)buf[0]<<8)|buf[1];
*gy=((u16)buf[2]<<8)|buf[3];
*gz=((u16)buf[4]<<8)|buf[5];
}
return res;;
}
//得到加速度值(原始值)
//gx,gy,gz:陀螺仪x,y,z轴的原始读数(带符号)
//返回值:0,成功
// 其他,错误代码
u8 MPU_Get_Accelerometer(short *ax,short *ay,short *az)
{
u8 buf[6],res;
res=MPU_Read_Len(MPU_ADDR,MPU_ACCEL_XOUTH_REG,6,buf);
// res=MPU_Read_Len(MPU_ADDR,MPU_ACCEL_YOUTH_REG,6,buf);
// res=MPU_Read_Len(MPU_ADDR,MPU_ACCEL_ZOUTH_REG,6,buf);
if(res==0)
{
*ax = ((u16)buf[0]<<8)|buf[1];
*ay = ((u16)buf[2]<<8)|buf[3];
*az = ((u16)buf[4]<<8)|buf[5];
}
return res;;
}[/mw_shl_code]
从主函数里面你们可以看到我用原子哥的例程得出aacx,aacy,aacz,gyrox,gyroy,gyroz这六个值,而其他变量是我
通过直接读寄存器的结果,仿真如下:
然而问题来了,我搞了几天也搞不明白,为什么寄存器明明有值了,而原子的函数就是无法正常显示,里面I2C也是用了
原子的例程的,所以就是搞不明白问题出在哪,恳请原子哥和各路大神赐教,谢谢。。。有遇到同样问题想要交流的可以联系我QQ
3六05零25七八
|