移植正点原子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()这个函数中,将蓝颜色方框的代码屏蔽掉,问题自然就解决了。
在这里插入图片描述

版权声明:本文为CSDN博主「车厘子﹌」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_53859658/article/details/120242425

生成海报
点赞 0

车厘子﹌

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

HC-05主从模式自动连接配置

HC-05蓝牙模块主要用于短距离的数据无线传输领域。可以方便的和 PC蓝牙设备相连,也可以两个模块之间的数据互通。避免繁琐的线缆连接,能直接替代串口线。采用英国CSR公司BlueCore4-Ext 芯片&#xff0c

基于stm32的自平衡小车

引言 1、系统概述 1.1、设计任务 利用stm32做一辆自平衡小车 1.2、设计要求 利用IIC和MPU6050、OLED12864进行通信,使用pid算法到自平衡,熟练掌握PID算法 2、方案设计与论

蓝牙模块 HC-06

HC-06蓝牙模块视图 使用TCL转串口使蓝牙模块进入AT指令模式 使用STM32cubemx配置串口模块,一般HC-06默认115200波特率来进行串口传输。并且要开启串口中断,目的是用来处理手机发送到蓝牙模块的

嵌入式作业9

一、关于I2C总线 1.简介 I2C是Inter-Integrated Circuit的简称,读作:I-squared-C。由飞利浦公司于1980年代提出,为了让主板、嵌入式系统或手机用以连接低速周