其他分享
首页 > 其他分享> > 移植正点原子mpu6050代码,总是MPU6050初始化失败解决

移植正点原子mpu6050代码,总是MPU6050初始化失败解决

作者:互联网

移植正点原子mpu6050代码,总是MPU6050初始化失败解决

首先观察正点原子MPU6050代码,发现它在读取MPU6050数据的同时,还将数据通过串口发送给上位机进行调试,而我们移植mpu6050,只是单纯的想读取MUP6050的数据,不需要串口部分,问题就出在串口发送数据这。下面我将详细的讲解:(库函数)
我们在移植代码的时候,只移植MPU6050的代码,这样当然没什么问题,我也是这样移植的,移植之后再修改主函数,将串口及LCD显示的一些函数给删掉,删掉之后的代码我就用我的主函数作为示例,我使用的是oled进行显示,示例如下:

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "mpu6050.h" 
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h" 
#include "oled.h"

char oledBuf[20];
 	
 int main(void)
 {	 
	float pitch,roll,yaw; 		//欧拉角
	short aacx,aacy,aacz;		//加速度传感器原始数据
	short gyrox,gyroy,gyroz;	//陀螺仪原始数据	 
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	delay_init();	//延时初始化 
	LED_Init();		  			//初始化与LED连接的硬件接口
	KEY_Init();					//初始化按键 
	MPU_Init();					//初始化MPU6050
	while(mpu_dmp_init())
    {
    }
    OLED_Init();			//初始化OLED  
    OLED_Clear(); 
 	while(1)
	{	
		while(mpu_dmp_get_data(&pitch,&roll,&yaw)==0)
		{		
			MPU_Get_Accelerometer(&aacx,&aacy,&aacz);	//得到加速度传感器数据
			MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz);	//得到陀螺仪数据
        }
		delay_ms(100);       
        sprintf(oledBuf,"%d",gyrox);
        OLED_ShowString(0,4,(u8*)oledBuf,16);
        sprintf(oledBuf,"%d",gyroy);
        OLED_ShowString(48,4,(u8*)oledBuf,16);
        sprintf(oledBuf,"%d",gyroz);//得到陀螺仪数据
        OLED_ShowString(96,4,(u8*)oledBuf,16);
        sprintf(oledBuf,"%.1lf",pitch);
        OLED_ShowString(0,6,(u8*)oledBuf,16);
        sprintf(oledBuf,"%.1lf",roll);
        OLED_ShowString(48,6,(u8*)oledBuf,16);
        sprintf(oledBuf,"%.1lf",yaw);
        OLED_ShowString(96,6,(u8*)oledBuf,16);//得到欧拉角数据			
	} 	
}

在修改主函数之后,将程序烧录进自己的板子,发现程序不执行,显示屏无显示。
经过筛查之后,发现mpu_dmp_init()这个函数中的mpu_init()这个函数初始化失败。
在mpu_init()这个函数中,将蓝颜色方框的代码屏蔽掉,问题自然就解决了。
在这里插入图片描述

标签:初始化,ShowString,正点,MPU6050,OLED,mpu,mpu6050,include,oledBuf
来源: https://blog.csdn.net/qq_53859658/article/details/120242425