STM32Cubemx结合Clion的MPU6050

本文档介绍了如何使用STM32CubeMX配置STM32F103C8t6微控制器,并结合Clion IDE实现MPU6050传感器的集成。内容包括时钟、GPIO、串口的配置,以及代码生成和Clion中的代码编写步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、STM32F103C8t6

本代码是基于STM32F103C8t6来实现的。

二、MPU6050

三、Cubemx的配置

1.时钟

 2.GPIO(两个引脚都要设置为开漏输出)

 3.串口的设置

 4.配置project

 

 5.然后生成代码

四、clion的中的部分代码

1.先加入MPU6050的DMP

2.main.c中加入:

    MPU_Init();			//MPU6050初始化
    mpu_dmp_init();		//dmp初始化




 HAL_Delay(500);
      while(mpu_dmp_get_data(&pitch, &roll, &yaw));	//必须要用while等待,才能读取成功
      MPU_Get_Accelerometer(&aacx,&aacy, &aacz);		//得到加速度传感器数据
      MPU_Get_Gyroscope(&gyrox, &gyroy, &gyroz);		//得到陀螺仪数据
      temp=MPU_Get_Temperature();						//得到温度信息
      sprintf((char *)str,"X:%.1f度  Y:%.1f度  Z:%.1f度  %.2f度C\r\n",roll,pitch,yaw,temp/100);//????1????????????
      HAL_UART_Transmit(&huart1,str,sizeof(str),10000);

 3.mpu6050.c

#include "stm32f1xx_hal.h"
#include "mpu6050.h"

//³õʼ»¯MPU6050
//·µ»ØÖµ:0,³É¹¦
//    ÆäËû,´íÎó´úÂë
uint8_t MPU_Init(void)
{
    uint8_t res;

    MPU_IIC_Init();//³õʼ»¯IIC×ÜÏß
    MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80);	//¸´Î»MPU6050
    delay_ms(100);
    MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00);	//»½ÐÑMPU6050
    MPU_Set_Gyro_Fsr(3);					//ÍÓÂÝÒÇ´«¸ÐÆ÷,¡À2000dps
    MPU_Set_Accel_Fsr(0);					//¼ÓËÙ¶È´«¸ÐÆ÷,¡À2g
    MPU_Set_Rate(50);						//ÉèÖòÉÑùÂÊ50Hz
    MPU_Write_Byte(MPU_INT_EN_REG,0X00);	//¹Ø±ÕËùÓÐÖжÏ
    MPU_Write_Byte(MPU_USER_CTRL_REG,0X00);	//I2CÖ÷ģʽ¹Ø±Õ
    MPU_Write_Byte(MPU_FIFO_EN_REG,0X00);	//¹Ø±ÕFIFO
    MPU_Write_Byte(MPU_INTBP_CFG_REG,0X80);	//INTÒý½ÅµÍµçƽÓÐЧ
    res=MPU_Read_Byte(MPU_DEVICE_ID_REG);
    if(res==MPU_ADDR)//Æ÷¼þIDÕýÈ·
    {
        MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X01);	//ÉèÖÃCLKSEL,PLL XÖáΪ²Î¿¼
        MPU_Write_Byte(MPU_PWR_MGMT2_REG,0X00);	//¼ÓËÙ¶ÈÓëÍÓÂÝÒǶ¼¹¤×÷
        MPU_Set_Rate(50);						//ÉèÖòÉÑùÂÊΪ50Hz
    } else return 1;
    return 0;
}
//ÉèÖÃMPU6050ÍÓÂÝÒÇ´«¸ÐÆ÷ÂúÁ¿³Ì·¶Î§
//fsr:0,¡À250dps;1,¡À500dps;2,¡À1000dps;3,¡À2000dps
//·µ»ØÖµ:0,ÉèÖóɹ¦
//    ÆäËû,ÉèÖÃʧ°Ü
uint8_t MPU_Set_Gyro_Fsr(uint8_t fsr)
{
    return MPU_Write_Byte(MPU_GYRO_CFG_REG,fsr<<3);//ÉèÖÃÍÓÂÝÒÇÂúÁ¿³Ì·¶Î§
}
//ÉèÖÃMPU6050¼ÓËÙ¶È´«¸ÐÆ÷ÂúÁ¿³Ì·¶Î§
//fsr:0,¡À2g;1,¡À4g;2,¡À8g;3,¡À16g
//·µ»ØÖµ:0,ÉèÖóɹ¦
//    ÆäËû,ÉèÖÃʧ°Ü
uint8_t MPU_Set_Accel_Fsr(uint8_t fsr)
{
    return MPU_Write_Byte(MPU_ACCEL_CFG_REG,fsr<<3);//ÉèÖüÓËÙ¶È´«¸ÐÆ÷ÂúÁ¿³Ì·¶Î§
}
//ÉèÖÃMPU6050µÄÊý×ÖµÍͨÂ˲¨Æ÷
//lpf:Êý×ÖµÍͨÂ˲¨ÆµÂÊ(Hz)
//·µ»ØÖµ:0,ÉèÖóɹ¦
//    ÆäËû,ÉèÖÃʧ°Ü
uint8_t MPU_Set_LPF(uint16_t lpf)
{
    uint8_t data=0;
    if(lpf>=188)data=1;
    else if(lpf>=98)data=2;
    else if(lpf>=42)data=3;
    else if(lpf>=20)data=4;
    else if(lpf>=10)data=5;
    else data=6;
    return MPU_Write_Byte(MPU_CFG_REG,data);//ÉèÖÃÊý×ÖµÍͨÂ˲¨Æ÷
}
//ÉèÖÃMPU6050µÄ²ÉÑùÂÊ(¼Ù¶¨Fs=1KHz)
//rate:4~1000(Hz)
//·µ»ØÖµ:0,ÉèÖóɹ¦
//    ÆäËû,ÉèÖÃʧ°Ü
uint8_t MPU_Set_Rate(uint16_t rate)
{
    uint8_t data;
    if(rate>1000)rate=1000;
    if(rate<4)rate=4;
    data=1000/rate-1;
    data=MPU_Write_Byte(MPU_SAMPLE_RATE_REG,data);	//ÉèÖÃÊý×ÖµÍͨÂ˲¨Æ÷
    return MPU_Set_LPF(rate/2);	//×Ô¶¯ÉèÖÃLPFΪ²ÉÑùÂʵÄÒ»°ë
}

//µÃµ½Î¶ÈÖµ
//·µ»ØÖµ:ζÈÖµ(À©´óÁË100±¶)
short MPU_Get_Temperature(void)
{
    uint8_t buf[2];
    short raw;
    float temp;
    MPU_Read_Len(MPU_ADDR,MPU_TEMP_OUTH_REG,2,buf);
    raw=((uint16_t)buf[0]<<8)|buf[1];
    temp=36.53+((double)raw)/340;
    return temp*100;;
}
//µÃµ½ÍÓÂÝÒÇÖµ(ԭʼֵ)
//gx,gy,gz:ÍÓÂÝÒÇx,y,zÖáµÄԭʼ¶ÁÊý(´ø·ûºÅ)
//·µ»ØÖµ:0,³É¹¦
//    ÆäËû,´íÎó´úÂë
uint8_t MPU_Get_Gyroscope(short *gx,short *gy,short *gz)
{
    uint8_t buf[6],res;
    res=MPU_Read_Len(MPU_ADDR,MPU_GYRO_XOUTH_REG,6,buf);
    if(res==0)
    {
        *gx=((uint16_t)buf[0]<<8)|buf[1];
        *gy=((uint16_t)buf[2]<<8)|buf[3];
        *gz=((uint16_t)buf[4]<<8)|buf[5];
    }
    return res;;
}
//µÃµ½¼ÓËÙ¶ÈÖµ(ԭʼֵ)
//gx,gy,gz:ÍÓÂÝÒÇx,y,zÖáµÄԭʼ¶ÁÊý(´ø·ûºÅ)
//·µ»ØÖµ:0,³É¹¦
//    ÆäËû,´íÎó´úÂë
uint8_t MPU_Get_Accelerometer(short *ax,short *ay,short *az)
{
    uint8_t buf[6],res;
    res=MPU_Read_Len(MPU_ADDR,MPU_ACCEL_XOUTH_REG,6,buf);
    if(res==0)
    {
        *ax=((uint16_t)buf[0]<<8)|buf[1];
        *ay=((uint16_t)buf[2]<<8)|buf[3];
        *az=((uint16_t)buf[4]<<8)|buf[5];
    }
    return res;;
}
//IICÁ¬ÐøÐ´
//addr:Æ÷¼þµØÖ·
//reg:¼Ä´æÆ÷µØÖ·
//len:дÈ볤¶È
//buf:Êý¾ÝÇø
//·µ»ØÖµ:0,Õý³£
//    ÆäËû,´íÎó´úÂë
uint8_t MPU_Write_Len(uint8_t addr,uint8_t reg,uint8_t len,uint8_t *buf)
{
    uint8_t i;
    MPU_IIC_Start();
    MPU_IIC_Send_Byte((addr<<1)|0);//·¢ËÍÆ÷¼þµØÖ·+дÃüÁî
    if(MPU_IIC_Wait_Ack())	//µÈ´ýÓ¦´ð
    {
        MPU_IIC_Stop();
        return 1;
    }
    MPU_IIC_Send_Byte(reg);	//д¼Ä´æÆ÷µØÖ·
    MPU_IIC_Wait_Ack();		//µÈ´ýÓ¦´ð
    for(i=0; i<len; i++)
    {
        MPU_IIC_Send_Byte(buf[i]);	//·¢ËÍÊý¾Ý
        if(MPU_IIC_Wait_Ack())		//µÈ´ýACK
        {
            MPU_IIC_Stop();
            return 1;
        }
    }
    MPU_IIC_Stop();
    return 0;
}
//IICÁ¬Ðø¶Á
//addr:Æ÷¼þµØÖ·
//reg:Òª¶ÁÈ¡µÄ¼Ä´æÆ÷µØÖ·
//len:Òª¶ÁÈ¡µÄ³¤¶È
//buf:¶ÁÈ¡µ½µÄÊý¾Ý´æ´¢Çø
//·µ»ØÖµ:0,Õý³£
//    ÆäËû,´íÎó´úÂë
uint8_t MPU_Read_Len(uint8_t addr,uint8_t reg,uint8_t len,uint8_t *buf)
{
    MPU_IIC_Start();
    MPU_IIC_Send_Byte((addr<<1)|0);//·¢ËÍÆ÷¼þµØÖ·+дÃüÁî
    if(MPU_IIC_Wait_Ack())	//µÈ´ýÓ¦´ð
    {
        MPU_IIC_Stop();
        return 1;
    }
    MPU_IIC_Send_Byte(reg);	//д¼Ä´æÆ÷µØÖ·
    MPU_IIC_Wait_Ack();		//µÈ´ýÓ¦´ð
    MPU_IIC_Start();
    MPU_IIC_Send_Byte((addr<<1)|1);//·¢ËÍÆ÷¼þµØÖ·+¶ÁÃüÁî
    MPU_IIC_Wait_Ack();		//µÈ´ýÓ¦´ð
    while(len)
    {
        if(len==1)*buf=MPU_IIC_Read_Byte(0);//¶ÁÊý¾Ý,·¢ËÍnACK
        else *buf=MPU_IIC_Read_Byte(1);		//¶ÁÊý¾Ý,·¢ËÍACK
        len--;
        buf++;
    }
    MPU_IIC_Stop();	//²úÉúÒ»¸öÍ£Ö¹Ìõ¼þ
    return 0;
}
//IICдһ¸ö×Ö½Ú
//reg:¼Ä´æÆ÷µØÖ·
//data:Êý¾Ý
//·µ»ØÖµ:0,Õý³£
//    ÆäËû,´íÎó´úÂë
uint8_t MPU_Write_Byte(uint8_t reg,uint8_t data)
{
    MPU_IIC_Start();
    MPU_IIC_Send_Byte((MPU_ADDR<<1)|0);//·¢ËÍÆ÷¼þµØÖ·+дÃüÁî
    if(MPU_IIC_Wait_Ack())	//µÈ´ýÓ¦´ð
    {
        MPU_IIC_Stop();
        return 1;
    }
    MPU_IIC_Send_Byte(reg);	//д¼Ä´æÆ÷µØÖ·
    MPU_IIC_Wait_Ack();		//µÈ´ýÓ¦´ð
    MPU_IIC_Send_Byte(data);//·¢ËÍÊý¾Ý
    if(MPU_IIC_Wait_Ack())	//µÈ´ýACK
    {
        MPU_IIC_Stop();
        return 1;
    }
    MPU_IIC_Stop();
    return 0;
}
//IIC¶ÁÒ»¸ö×Ö½Ú
//reg:¼Ä´æÆ÷µØÖ·
//·µ»ØÖµ:¶Áµ½µÄÊý¾Ý
uint8_t MPU_Read_Byte(uint8_t reg)
{
    uint8_t res;
    MPU_IIC_Start();
    MPU_IIC_Send_Byte((MPU_ADDR<<1)|0);//·¢ËÍÆ÷¼þµØÖ·+дÃüÁî
    MPU_IIC_Wait_Ack();		//µÈ´ýÓ¦´ð
    MPU_IIC_Send_Byte(reg);	//д¼Ä´æÆ÷µØÖ·
    MPU_IIC_Wait_Ack();		//µÈ´ýÓ¦´ð
    MPU_IIC_Start();
    MPU_IIC_Send_Byte((MPU_ADDR<<1)|1);//·¢ËÍÆ÷¼þµØÖ·+¶ÁÃüÁî
    MPU_IIC_Wait_Ack();		//µÈ´ýÓ¦´ð
    res=MPU_IIC_Read_Byte(0);//¶ÁÈ¡Êý¾Ý,·¢ËÍnACK
    MPU_IIC_Stop();			//²úÉúÒ»¸öÍ£Ö¹Ìõ¼þ
    return res;
}

mpu6050.h

#ifndef __MPU6050_H
#define __MPU6050_H
#include "IIC.h"


#define delay_ms				HAL_Delay
#define MPU_IIC_Init			IIC_GPIO_Init
#define MPU_IIC_Start			IIC_Start
#define MPU_IIC_Stop			IIC_Stop
#define MPU_IIC_Send_Byte		IIC_Send_Byte
#define MPU_IIC_Read_Byte		IIC_Read_Byte
#define MPU_IIC_Wait_Ack		IIC_Wait_Ack

//#define MPU_ACCEL_OFFS_REG		0X06	//accel_offs¼Ä´æÆ÷,¿É¶ÁÈ¡°æ±¾ºÅ,¼Ä´æÆ÷ÊÖ²áδÌáµ½
//#define MPU_PROD_ID_REG			0X0C	//prod id¼Ä´æÆ÷,ÔڼĴæÆ÷ÊÖ²áδÌáµ½
#define MPU_SELF_TESTX_REG		0X0D	//×Ô¼ì¼Ä´æÆ÷X
#define MPU_SELF_TESTY_REG		0X0E	//×Ô¼ì¼Ä´æÆ÷Y
#define MPU_SELF_TESTZ_REG		0X0F	//×Ô¼ì¼Ä´æÆ÷Z
#define MPU_SELF_TESTA_REG		0X10	//×Ô¼ì¼Ä´æÆ÷A
#define MPU_SAMPLE_RATE_REG		0X19	//²ÉÑùƵÂÊ·ÖÆµÆ÷
#define MPU_CFG_REG				0X1A	//ÅäÖüĴæÆ÷
#define MPU_GYRO_CFG_REG			0X1B	//ÍÓÂÝÒÇÅäÖüĴæÆ÷
#define MPU_ACCEL_CFG_REG			0X1C	//¼ÓËٶȼÆÅäÖüĴæÆ÷
#define MPU_MOTION_DET_REG		0X1F	//Ô˶¯¼ì²â·§ÖµÉèÖüĴæÆ÷
#define MPU_FIFO_EN_REG			0X23	//FIFOʹÄܼĴæÆ÷
#define MPU_I2CMST_CTRL_REG		0X24	//IICÖ÷»ú¿ØÖƼĴæÆ÷
#define MPU_I2CSLV0_ADDR_REG		0X25	//IIC´Ó»ú0Æ÷¼þµØÖ·¼Ä´æÆ÷
#define MPU_I2CSLV0_REG			0X26	//IIC´Ó»ú0Êý¾ÝµØÖ·¼Ä´æÆ÷
#define MPU_I2CSLV0_CTRL_REG		0X27	//IIC´Ó»ú0¿ØÖƼĴæÆ÷
#define MPU_I2CSLV1_ADDR_REG		0X28	//IIC´Ó»ú1Æ÷¼þµØÖ·¼Ä´æÆ÷
#define MPU_I2CSLV1_REG			0X29	//IIC´Ó»ú1Êý¾ÝµØÖ·¼Ä´æÆ÷
#define MPU_I2CSLV1_CTRL_REG		0X2A	//IIC´Ó»ú1¿ØÖƼĴæÆ÷
#define MPU_I2CSLV2_ADDR_REG		0X2B	//IIC´Ó»ú2Æ÷¼þµØÖ·¼Ä´æÆ÷
#define MPU_I2CSLV2_REG			0X2C	//IIC´Ó»ú2Êý¾ÝµØÖ·¼Ä´æÆ÷
#define MPU_I2CSLV2_CTRL_REG		0X2D	//IIC´Ó»ú2¿ØÖƼĴæÆ÷
#define MPU_I2CSLV3_ADDR_REG		0X2E	//IIC´Ó»ú3Æ÷¼þµØÖ·¼Ä´æÆ÷
#define MPU_I2CSLV3_REG			0X2F	//IIC´Ó»ú3Êý¾ÝµØÖ·¼Ä´æÆ÷
#define MPU_I2CSLV3_CTRL_REG		0X30	//IIC´Ó»ú3¿ØÖƼĴæÆ÷
#define MPU_I2CSLV4_ADDR_REG		0X31	//IIC´Ó»ú4Æ÷¼þµØÖ·¼Ä´æÆ÷
#define MPU_I2CSLV4_REG			0X32	//IIC´Ó»ú4Êý¾ÝµØÖ·¼Ä´æÆ÷
#define MPU_I2CSLV4_DO_REG		0X33	//IIC´Ó»ú4дÊý¾Ý¼Ä´æÆ÷
#define MPU_I2CSLV4_CTRL_REG		0X34	//IIC´Ó»ú4¿ØÖƼĴæÆ÷
#define MPU_I2CSLV4_DI_REG		0X35	//IIC´Ó»ú4¶ÁÊý¾Ý¼Ä´æÆ÷

#define MPU_I2CMST_STA_REG		0X36	//IICÖ÷»ú״̬¼Ä´æÆ÷
#define MPU_INTBP_CFG_REG			0X37	//ÖжÏ/ÅÔ·ÉèÖüĴæÆ÷
#define MPU_INT_EN_REG			0X38	//ÖжÏʹÄܼĴæÆ÷
#define MPU_INT_STA_REG			0X3A	//ÖжÏ״̬¼Ä´æÆ÷

#define MPU_ACCEL_XOUTH_REG		0X3B	//¼ÓËÙ¶ÈÖµ,XÖá¸ß8λ¼Ä´æÆ÷
#define MPU_ACCEL_XOUTL_REG		0X3C	//¼ÓËÙ¶ÈÖµ,XÖáµÍ8λ¼Ä´æÆ÷
#define MPU_ACCEL_YOUTH_REG		0X3D	//¼ÓËÙ¶ÈÖµ,YÖá¸ß8λ¼Ä´æÆ÷
#define MPU_ACCEL_YOUTL_REG		0X3E	//¼ÓËÙ¶ÈÖµ,YÖáµÍ8λ¼Ä´æÆ÷
#define MPU_ACCEL_ZOUTH_REG		0X3F	//¼ÓËÙ¶ÈÖµ,ZÖá¸ß8λ¼Ä´æÆ÷
#define MPU_ACCEL_ZOUTL_REG		0X40	//¼ÓËÙ¶ÈÖµ,ZÖáµÍ8λ¼Ä´æÆ÷

#define MPU_TEMP_OUTH_REG			0X41	//ζÈÖµ¸ß°Ëλ¼Ä´æÆ÷
#define MPU_TEMP_OUTL_REG			0X42	//ζÈÖµµÍ8λ¼Ä´æÆ÷

#define MPU_GYRO_XOUTH_REG		0X43	//ÍÓÂÝÒÇÖµ,XÖá¸ß8λ¼Ä´æÆ÷
#define MPU_GYRO_XOUTL_REG		0X44	//ÍÓÂÝÒÇÖµ,XÖáµÍ8λ¼Ä´æÆ÷
#define MPU_GYRO_YOUTH_REG		0X45	//ÍÓÂÝÒÇÖµ,YÖá¸ß8λ¼Ä´æÆ÷
#define MPU_GYRO_YOUTL_REG		0X46	//ÍÓÂÝÒÇÖµ,YÖáµÍ8λ¼Ä´æÆ÷
#define MPU_GYRO_ZOUTH_REG		0X47	//ÍÓÂÝÒÇÖµ,ZÖá¸ß8λ¼Ä´æÆ÷
#define MPU_GYRO_ZOUTL_REG		0X48	//ÍÓÂÝÒÇÖµ,ZÖáµÍ8λ¼Ä´æÆ÷

#define MPU_I2CSLV0_DO_REG		0X63	//IIC´Ó»ú0Êý¾Ý¼Ä´æÆ÷
#define MPU_I2CSLV1_DO_REG		0X64	//IIC´Ó»ú1Êý¾Ý¼Ä´æÆ÷
#define MPU_I2CSLV2_DO_REG		0X65	//IIC´Ó»ú2Êý¾Ý¼Ä´æÆ÷
#define MPU_I2CSLV3_DO_REG		0X66	//IIC´Ó»ú3Êý¾Ý¼Ä´æÆ÷

#define MPU_I2CMST_DELAY_REG		0X67	//IICÖ÷»úÑÓʱ¹ÜÀí¼Ä´æÆ÷
#define MPU_SIGPATH_RST_REG		0X68	//ÐźÅͨµÀ¸´Î»¼Ä´æÆ÷
#define MPU_MDETECT_CTRL_REG		0X69	//Ô˶¯¼ì²â¿ØÖƼĴæÆ÷
#define MPU_USER_CTRL_REG			0X6A	//Óû§¿ØÖƼĴæÆ÷
#define MPU_PWR_MGMT1_REG			0X6B	//µçÔ´¹ÜÀí¼Ä´æÆ÷1
#define MPU_PWR_MGMT2_REG			0X6C	//µçÔ´¹ÜÀí¼Ä´æÆ÷2
#define MPU_FIFO_CNTH_REG			0X72	//FIFO¼ÆÊý¼Ä´æÆ÷¸ß°Ëλ
#define MPU_FIFO_CNTL_REG			0X73	//FIFO¼ÆÊý¼Ä´æÆ÷µÍ°Ëλ
#define MPU_FIFO_RW_REG			0X74	//FIFO¶Áд¼Ä´æÆ÷
#define MPU_DEVICE_ID_REG			0X75	//Æ÷¼þID¼Ä´æÆ÷

//Èç¹ûAD0½Å(9½Å)½ÓµØ,IICµØÖ·Îª0X68(²»°üº¬×îµÍλ).
//Èç¹û½ÓV3.3,ÔòIICµØÖ·Îª0X69(²»°üº¬×îµÍλ).
#define MPU_ADDR					0X68


ÒòΪģ¿éAD0ĬÈϽÓGND,ËùÒÔתΪ¶ÁдµØÖ·ºó,Ϊ0XD1ºÍ0XD0(Èç¹û½ÓVCC,ÔòΪ0XD3ºÍ0XD2)
//#define MPU_READ    0XD1
//#define MPU_WRITE   0XD0

uint8_t MPU_Init(void); 								//³õʼ»¯MPU6050
uint8_t MPU_Write_Len(uint8_t addr,uint8_t reg,uint8_t len,uint8_t *buf);//IICÁ¬ÐøÐ´
uint8_t MPU_Read_Len(uint8_t addr,uint8_t reg,uint8_t len,uint8_t *buf); //IICÁ¬Ðø¶Á
uint8_t MPU_Write_Byte(uint8_t reg,uint8_t data);				//IICдһ¸ö×Ö½Ú
uint8_t MPU_Read_Byte(uint8_t reg);						//IIC¶ÁÒ»¸ö×Ö½Ú

uint8_t MPU_Set_Gyro_Fsr(uint8_t fsr);
uint8_t MPU_Set_Accel_Fsr(uint8_t fsr);
uint8_t MPU_Set_LPF(uint16_t lpf);
uint8_t MPU_Set_Rate(uint16_t rate);
uint8_t MPU_Set_Fifo(uint8_t sens);


short MPU_Get_Temperature(void);
uint8_t MPU_Get_Gyroscope(short *gx,short *gy,short *gz);
uint8_t MPU_Get_Accelerometer(short *ax,short *ay,short *az);

#endif

由于代码太多,就不一一展示了。

代码源码:STM32cubemx+Clion实现MPU6050stm32f103c8t6-单片机文档类资源-优快云文库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值