资源简介

STM32单片机,使用keil4编写的MPU6050加速度计和陀螺仪驱动代码,经过测试,代码遵守燕骏编程规范v3.0(已上传CSDN)

资源截图

代码片段和文件信息

/*
***********************************************************************
*                YanJunFly V1.0 - Copyright (c) 2017
* All rights reserved.More information please browse www.yanjuntech.cn
*                  燕骏智控——以极客技术推进工程教育
*             手把手教你,如何从头开始做一个电子设计类项目。
* 我们将以 四轴飞行器 为项目载体,带领大家进行项目式学习做出属于自己的四旋翼。
*
* 文件名称:mpu6050.c mpu6050.h
* 文件摘要:mpu6050数据读取,需要时调用读取函数,必须放在磁力计初始化前
* 注意事项:必须放在磁力计初始化前
*
* 当前版本:v1.0
* 当前作者:YJ_王洪志
* 完成日期:2018年1月21日 15:12:17
* 改动说明:创建文件
*
* 取代版本:无
* 原 作 者:YJ_王洪志
* 完成日期:2018年1月21日 15:12:17
************************************************************************
*/

#include “./Mpu6050/mpu6050.h“

/*
***********************************************************************
*函数名称:ErrorStatus xMPU6050_WriteReg(uint8_t uc_RegAddr uint8_t uc_Data)
*函数功能:向MPU6050写入数据
*
*使用说明:无
*入口参数:uc_RegAddr:寄存器地址  uc_Data:数据
*返 回 值:SUCCESS:成功 ERROR:失败
*
*函数作者:王洪志
*创建日期:2018年1月20日 11:10:42
***********************************************************************
*/

ErrorStatus xMPU6050_WriteReg(uint8_t uc_RegAddr uint8_t uc_Data)
{
if(xI2C_Write(MPU6050_SLAVE_ADDRESS uc_RegAddr &uc_Data 1) == SUCCESS)
{
return SUCCESS;
}
else
{
return ERROR;
}
}

/*
***********************************************************************
*函数名称:ErrorStatus xMPU6050_ReadReg(uint8_t uc_RegAddr uint8_t *ucp_Data uint8_t uc_Length)
*函数功能:从MPU6050读取一个数据
*
*使用说明:无
*入口参数:uc_RegAddr:寄存器地址 ucp_Data:储存数据的地址 uc_Length:数据长度
*返 回 值:SUCCESS:成功 ERROR:失败
*
*函数作者:王洪志
*创建日期:2018年1月20日 11:12:19
***********************************************************************
*/

ErrorStatus xMPU6050_ReadReg(uint8_t uc_RegAddr uint8_t *ucp_Data uint8_t uc_Length)
{
if(xI2C_Read(MPU6050_SLAVE_ADDRESS uc_RegAddr ucp_Data uc_Length) == SUCCESS)
{
return SUCCESS;
}
else
{
return ERROR;
}
}

/*
***********************************************************************
*函数名称:ErrorStatus xMPU6050_Init(void)
*函数功能:初始化MPU6050
*
*使用说明:无
*入口参数:无
*返 回 值:SUCCESS:初始化成功  ERROR:初始化失败
*
*函数作者:王洪志
*创建日期:2018年1月20日 11:12:37
***********************************************************************
*/

ErrorStatus xMPU6050_Init(void)
{
uint8_t uc_ID;
int i = 0 j = 0;
/*延时等待上电完成*/
for(i = 0; i < 1000; i++)
{
for(j = 0; j < 1000; j++)
{
}
}
vMPU6050_ReadID(&uc_ID);
if(uc_ID == MPU6050_ID)
{
/*配置电源管理寄存器 唤醒芯片*/
xMPU6050_WriteReg(MPU6050_PWR_MGMT_1 0x00);
/*配置采样率分频值,设定输出速率为1k*/
xMPU6050_WriteReg(MPU6050_SMPRT_DIV 0x00);
/*配置低通滤波器带宽21Hz 延时8.5ms*/
xMPU6050_WriteReg(MPU6050_CONFIG 0x04);
/*配置陀螺仪不自检,量程 ±500°/S*/
xMPU6050_WriteReg(MPU6050_CYRO_CONFIG 0x08);
/*配置加速度计不自检,量程±2g*/
xMPU6050_WriteReg(MPU6050_ACCEL_CONFIG 0x00);
/*把MPU6050的外部IIC总线设置成 直接连接 模式 ,就是直接连接到 MPU6050 的IIC总线上*/
xMPU6050_WriteReg(MPU6050_INT_PIN_CFG ((uint8_t)(1 << 1)));
return SUCCESS;
}
else
{
return ERROR;
}
}

/*
********************************

评论

共有 条评论