stm32标准库配置Mpu6050

目录

第一步:获取源码

第二步:修改代码


第一步:获取源码

首先我们需要一个示例代码:江协: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中都有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值