目录
第一步:获取源码
首先我们需要一个示例代码:江协:10-1的软件I2C读写MPU6050+MPU6050的代码库+sys的c和h文件
可以从我的百度网盘中下载:链接:百度网盘 请输入提取码 提取码:8888
下载完成后进入第二步
第二步:修改代码
①
点开江协10-1 软件I2C读取MPU6050文件,进入Hardware文件夹-->将我们下载的MPU6050的Mpu6050文件夹复制到这里,然后删除掉MPU6050.c,MPU6050.h,MPU6050_Reg.h这三个文件。
②
在System文件夹里面添加下载好的源码资料库的sys库的sys.c和sys.h进去
③现在可以点开工程进行下一步,
③
***现在右键Target 1,添加新的组(Add Groud),改名成MPU6050,并且添加已存在文件(将我们下载好放到Hardware里的MPU6050文件夹下的文件都放进去)
***然后再System文件下添加sys.c和sys.h文件。
***然后点击魔术棒的C++添加include Paths--->把Hardware下Mpu6050文件夹添加进去。
然后我们把main.c的代码改一下:
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "MPU6050.h"
#include "inv_mpu.h"
float Pitch, Roll, Yaw; //俯仰角,翻滚角,偏航角
int16_t ax,ay,az,gx,gy,gz; //加速度,陀螺仪角速度
u8 MPU_Get_Gyroscope(short *gx,short *gy,short *gz);
u8 MPU_Get_Accelerometer(short *ax,short *ay,short *az);
int main(void)
{
OLED_Init();
MPU6050_Init();
MPU6050_DMP_Init();
OLED_ShowString(1, 1, "ID:");
while (1)
{
MPU6050_DMP_Get_Data(&Pitch,&Roll,&Yaw);
MPU_Get_Gyroscope(&gx,&gy,&gz);
MPU_Get_Accelerometer(&ax,&ay,&gz);
OLED_ShowSignedNum(2, 1, Pitch, 3);//俯仰角
OLED_ShowSignedNum(3, 1, Roll, 3);//翻滚角
OLED_ShowSignedNum(4, 1, Yaw, 3);//偏航角
// OLED_ShowSignedNum(2, 8, gx, 5);
// OLED_ShowSignedNum(3, 8, gy, 5);
// OLED_ShowSignedNum(4, 8, gz, 5);
}
}
***最后在System下的Delay.c和Delay.h进行修改,因为没有定义delay_ms/s/us
#include "stm32f10x.h"
/**
* @brief 微秒级延时
* @param xus 延时时长,范围:0~233015
* @retval 无
*/
void Delay_us(uint32_t xus)
{
SysTick->LOAD = 72 * xus; //设置定时器重装值
SysTick->VAL = 0x00; //清空当前计数值
SysTick->CTRL = 0x00000005; //设置时钟源为HCLK,启动定时器
while(!(SysTick->CTRL & 0x00010000)); //等待计数到0
SysTick->CTRL = 0x00000004; //关闭定时器
}
/**
* @brief 毫秒级延时
* @param xms 延时时长,范围:0~4294967295
* @retval 无
*/
void Delay_ms(uint32_t xms)
{
while(xms--)
{
Delay_us(1000);
}
}
/**
* @brief 秒级延时
* @param xs 延时时长,范围:0~4294967295
* @retval 无
*/
void Delay_s(uint32_t xs)
{
while(xs--)
{
Delay_ms(1000);
}
}
void delay_us(uint32_t xus)
{
Delay_us(xus);
}
void delay_ms(uint32_t xms)
{
Delay_us(xms);
}
void delay_s(uint32_t xs)
{
Delay_ms(xs);
}
#ifndef __DELAY_H
#define __DELAY_H
void Delay_us(uint32_t us);
void Delay_ms(uint32_t ms);
void Delay_s(uint32_t s);
void delay_us(uint32_t xus);
void delay_ms(uint32_t xms);
void delay_s(uint32_t xs);
#endif
现在就编译运行就可以了,根据接线图进行连接硬件。注意之前删掉的.c.h文件记得在工程里也删掉。
如果你需要修改引脚,,则要在MPU6050_I2C.h里修改以下部分,GPIOA对应PAout,PAin
,这些在sys.h中都有。