91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 45KB
    文件類型: .zip
    金幣: 2
    下載: 1 次
    發布日期: 2021-05-21
  • 語言: 其他
  • 標簽: mpu6050??dmp??eMD??

資源簡介

MPU6050的官方DMP移植到stm32f407zgt6上,本文件為已移植完成直接在.h文件里找到函數即可使用

資源截圖

代碼片段和文件信息

#include“mpu6050.h“
#include“myiic.h“
#include“delay.h“

void?MPU_Init(void)
{
//u8?res; //用來返回程序是否執行成功
IIC_Init(); //初始化IIC
MPU_WriteOne_Byte(MPU_PWR_MGMT1_REG0x80); //復位MPU6050
??delay_ms(100);
MPU_WriteOne_Byte(MPU_PWR_MGMT1_REG0x00); //喚醒MPU6050?
MPU_WriteOne_Byte(MPU_GYRO_CFG_REG0x18); //陀螺儀量程配置±2000dps
MPU_WriteOne_Byte(MPU_ACCEL_CFG_REG0x00); //加速度傳感器±2g

MPU_WriteOne_Byte(MPU_INT_ENABLE_REG0X00); //中斷使能寄存器關閉所有中斷
MPU_WriteOne_Byte(MPU_USER_CTRL_REG0x00); //I2C主模式關閉
MPU_WriteOne_Byte(MPU_FIFO_EN_REG0x00); //FIFO關閉
MPU_Set_SRD(100); //設置陀螺儀采樣率分頻寄存器100Hz自動設置DLPF

MPU_WriteOne_Byte(MPU_PWR_MGMT1_REG0x01); //設置CLKSELPLL?X軸為參考
MPU_WriteOne_Byte(MPU_PWR_MGMT2_REG0x00); //使能加速度與陀螺儀,關閉喚醒


}

//得到陀螺儀的原始數據(帶符號)
//返回值:0設置成功
u8?MPU_Get_Gyroscope(short?*gxshort?*gyshort?*gz)
{
u8?buf[6]; //儲存XHXLYHYLZHZL的6個8位原始數據
u8?res; //用來返回程序是否執行成功
res=MPU_ConRead_Len(MPU_ADDRMPU_GYRO_XOUTH_REG6buf);
if(res==0)
{
*gx=(?(u16)buf[0]<<8?)|(?(u16)buf[1]?);
*gy=(?(u16)buf[2]<<8?)|(?(u16)buf[3]?);
*gz=(?(u16)buf[4]<<8?)|(?(u16)buf[5]?);
}
return?res;
}



//得到加速度的原始數據(帶符號)
//返回值:0設置成功
u8?MPU_Get_Accelerometer(short?*axshort?*ayshort?*az)
{
u8?buf[6]; //儲存XHXLYHYLZHZL的6個8位原始數據
u8?res; //用來返回程序是否執行成功
res=MPU_ConRead_Len(MPU_ADDRMPU_ACCEL_XOUTH_REG6buf);
if(res==0)
{
*ax=(?(u16)buf[0]<<8?)|(?(u16)buf[1]?);
*ay=(?(u16)buf[2]<<8?)|(?(u16)buf[3]?);
*az=(?(u16)buf[4]<<8?)|(?(u16)buf[5]?);
}
return?res;
}





//設置陀螺儀采樣率分頻寄存器
//DLPF被禁用時(DLPF_CFG=0或7)陀螺儀輸出速率=8kHz;使能時1kHz
//因為使能了DLPF所以Fs=1000Hz又1000/2^8=4
//采樣頻率rate=4~1000Hz
//返回值:0設置成功
u8?MPU_Set_SRD(u16?rate)
{
u8?data;
if(rate>1000) rate=1000;
if(rate<4) rate=4;
data=1000/rate-1;
MPU_WriteOne_Byte(MPU_SMPRT_DIV_REGdata); //設置采樣頻率分頻器
return?MPU_Set_DLPF(rate/2); //自動設置DLPF為采樣率的一半

}



//設置數字低通濾波器
//dlpf:數字低通濾波頻率(Hz)
//返回值:0設置成功
u8?MPU_Set_DLPF(u16?dlpf) //必須要用u16因為rate/2的最大值為500
{
u8?data=0; //用來設置DLPF_CFG
if(dlpf>188) data=1;
else?if(dlpf>98) data=2;
else?if(dlpf>42) data=3;
else?if(dlpf>20) data=4;
else?if(dlpf>10) data=5;
else?data=6;
return?MPU_WriteOne_Byte(MPU_CONFIG_REGdata); //設置數字低通濾波器
}


//得到溫度值
//返回值:溫度值(擴大了100倍)
short?MPU_Get_Temperature(void)
{
u8?buf[2];?
short?raw;
float?temp;
MPU_ConRead_Len(MPU_ADDRMPU_TEMP_OUTH_REG2buf);?
raw=((u16)buf[0]<<8)|buf[1];??
temp=36.53+((double)raw)/340;??
return?temp*100;;
}


//IIC連續寫
//add:器件地址?
//reg_add:寄存器地址
//len:寫入長度
//buf:數據區
//返回值:0正常
u8?MPU_ConWrite_Len(u8?addu8?reg_addu8?lenu8?*buf) //連續寫
{
u8?i;
IIC_Start();
IIC_Send_Byte(?(add<<1)|0?); ////發送器件地址+0寫命令
if(IIC_Wait_Ack()) //等待ACK
{
IIC_Stop();
return?1;
}

IIC_Send_Byte(reg_add);//寫寄存器地址

if(IIC_Wait_Ack()) //等待ACK
{
IIC_Stop();
return?1;
}

for(i=0;i {
IIC_Send_Byte(buf[i]); //發送數據
if(IIC_Wait_Ack()) //等待ACK
{
IIC_S

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-04-26?22:01??MPU6050\
?????目錄???????????0??2018-04-26?22:01??MPU6050\eMPL\
?????文件???????19342??2012-12-14?11:16??MPU6050\eMPL\dmpKey.h
?????文件????????6765??2012-12-14?11:16??MPU6050\eMPL\dmpmap.h
?????文件???????84352??2018-04-26?12:28??MPU6050\eMPL\inv_mpu.c
?????文件????????4662??2018-04-15?20:00??MPU6050\eMPL\inv_mpu.h
?????文件???????58396??2018-04-15?20:17??MPU6050\eMPL\inv_mpu_dmp_motion_driver.c
?????文件????????3538??2012-12-14?11:16??MPU6050\eMPL\inv_mpu_dmp_motion_driver.h
?????文件????????5553??2018-04-21?18:51??MPU6050\mpu6050.c
?????文件????????2321??2018-04-21?18:43??MPU6050\mpu6050.h
?????文件????????8672??2018-04-18?12:27??MPU6050\mpu_dmp_use.c
?????文件?????????156??2018-04-17?18:50??MPU6050\mpu_dmp_use.h

評論

共有 條評論