资讯详情

stm32f103c8t6与mpu6050模块的初见

**

最近焊了一块mpu6050,听说这个东西是用来平衡车的,我也打算做一辆平衡车。先计划熟悉一下,因为这个模块踩的坑很多,忙了一两天就能跑,但是有bug.有时可以通过串口打印,有时半天没有结果。发送问题和代码,帮助查看问题。 首先,直接拉出正点原子代码。我们只通过串口打印角度,所以删除不必要的代码。mpu6050年有很多寄存器,我不能一个接一个地理解它们。在这里,我参考其他人的代码。我唯一不明白的是为什么温度传感器需要在这里使用,所以我解释了它。知道它有什么用的人可以告诉我。

#include "sys.h" #include "usart.h"   #include "delay.h"  #include "mpu6050.h"   #include "inv_mpu.h" #include "inv_mpu_dmp_motion_driver.h"     int main(void)  { 
          float pitch,roll,yaw;   //欧拉角  short aacx,aacy,aacz;  ///加速度传感器原始数据  short gyrox,gyroy,gyroz; //陀螺仪原始数据 // short temp; //温度   uart_init(115200);  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  delay_init();       //延迟函数初始化   MPU_Init();  while(mpu_dmp_init()!=0){ 
        }         while(1)  { 
              while(mpu_dmp_get_data(&pitch,&roll,&yaw)!=0) { 
        }     // temp=MPU_Get_Temperature(); //获得温度值    MPU_Get_Accelerometer(&aacx,&aacy,&aacz); ///获得加速度传感器数据    MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz); //获取陀螺仪数据     printf("roll:%d pitch:%d yaw:%d\r\n",(int)(roll*100),(int)(pitch*100),(int)(yaw*100));							
			delay_ms(500);
	}
}



同时还要修改iic定义的sdl和scl,正点原子mni版原来的代码用的是PC11和PC12,在f103板子上找个半天没有,所以将源代码定义接口修改

#define MPU_SDA_IN() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8<<12;}
#define MPU_SDA_OUT() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;
//IO操作函数 
#define MPU_IIC_SCL PBout(12) //SCL
#define MPU_IIC_SDA PBout(11) //SDA 
#define MPU_READ_SDA PBin(11) //

正点原子的mini版代码非常完善,我们只需要修改很少的部分,基本上只需要将main函数里面的稍微修改一下就可以拿回来用。至此,代码修改完毕。代码中while里面函数的判断至于有用,什么大家可以继续百度,由于我也是懵懵懂懂就不给介绍了 完成代码以后连接硬件,串口无法打印hello world,一片白。网上介绍说是模块坏了,于是火速又买了一个,但是但是,在我要关闭调试窗口时,代码竟然动了… 在这里插入图片描述 跑完这三行就不动了,很迷惑。然后就是拔掉usb重插,代码重新编译下载。多次实验发现,模块在某些位置可以运行成功 实验到这里每一个问题都搞得我精疲力尽,但是我们怎么能停下来呢,到这里就要开始找原因了,首先换着花样的注释第一个和第三个while,毕竟程序跑不通他俩责任占一大半,但结果还是一样,有时候能跑出来欧拉角都为0的信息有时候根本打印不出来,这时候换个思路,第一第三个while后面跟着一个空括号,作用是等待dmp开始启动,我在这里打印错误信息可以知道运行情况。 可以看到错误显示既有错误1和错误2,说明程序在第一个while和第三个while都有问题

继续调整模块至某个位置,在错误2和成功初始化之间来回摆动,至此可以基本确定是硬件问题导致代码无法正常运行。 实际上在这个模块上我犯下的错误远比上述的要多,最后还是得到了一个结果,同时希望学习的小伙伴们永不放弃。最后附上百度云链接,以供大家参考 链接:https://pan.baidu.com/s/18-wUaB2TelK1MoVXwmatoA 提取码:l36k

标签: t6n温度传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台