【CubeMX配置STM32驱动MPU6050】

news/2024/11/30 12:36:47/

CubeMX配置STM32驱动MPU6050(包含DMP)并且在0.96寸OLED上显示

一、使用CubeMX进行相关配置

1、配置OLED的IIC接口

在这里插入图片描述
OLED的具体使用方法我就不细说了,我前面的文章里面有讲OLED的,如果有需要可以去看看。

2、配置MPU6050的接口

我用MPU6050使用的是软件IIC(其实是只找到软件IIC的驱动),所以我们只需要配置两个GPIO口就可以实现对MPU6050的控制了。
在这里插入图片描述

在这里插入图片描述
这里我使用的是PB8、9,这里特别注意的是在User Label那儿需要将两个引脚分别设置为MPU6050_SCLMPU6050_SDA,因为这里涉及到驱动函数里面的宏定义,这样设置之后方便以后驱动函数的移植。
在这里插入图片描述
我使用的是C8T6,时钟树我就是配置的最常见的72MHZ。

二、使用keil 5 进一步开发

1、引入OLED和MPU6050的驱动文件

OLED的文件在我前面的文章里面给出来了,我这儿就只给出MPU6050的文件了:
资源上传了,因为里面是直接包括DMP的直接下载比较方便,原本我打算下面把所有的文件将代码的方式给出来的,但是都要写完了才发现篇幅太长了是发不出来的,而且越写到后面字数多了浏览器就很卡,所以你们还是直接下载吧。
然后将驱动文件加到keil里面,记得添加路径
在这里插入图片描述
具体的函数在OLED和MPU6050的驱动文件里面都有说明。

2、引入头文件、定义变量

/* USER CODE BEGIN Includes */
#include "stdio.h"
//mpu6050文件
#include "IIC.h"
#include "mpu6050.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"
//
#include "oled.h"
/* USER CODE END Includes */
/* USER CODE BEGIN 0 */
float pitch,roll,yaw; 		    //欧拉角
short aacx,aacy,aacz;			//加速度传感器原始数据
short gyrox,gyroy,gyroz;		//陀螺仪原始数据
float temp;					    //温度
/* USER CODE END 0 */

示例:

int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_I2C1_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */OLED_Init();OLED_Clear();MPU_Init();mpu_dmp_init();if(MPU_Init()==0&&mpu_dmp_init()==0){printf("mpu6050初始化成功\r\n");//我是串口和OLED都设置了显示的,所以这儿多了//                               一个printf,下面那个printf也是OLED_ShowString(0,0,"successfully",16);}/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){
//		OLED_ShowNum(24,2,a,3,16);
//		HAL_Delay(100);
//		a++;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();						//得到温度信息printf("X:%.1f  Y:%.1f  Z:%.1f  %.2f℃ \r\n",roll,pitch,yaw,temp/100);//串口1输出采集信息OLED_ShowString(0,2,"roll:",16);OLED_ShowDecimal(40,2,roll,16);OLED_ShowString(0,4,"pitch:",16);OLED_ShowDecimal(48,4,pitch,16);OLED_ShowString(0,6,"yaw:",16);OLED_ShowDecimal(32,6,yaw,16);/* USER CODE END WHILE *//* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

效果图如下:
在这里插入图片描述
对了,上面的显示小数那个函数在我前面的OLED的介绍里面没有,是后面自己加上去的,需要自己重新加一下,不过这个函数还有点问题,就是小数点后面的显示位数那儿,我设置为两位但有时候是现实三位;设置为一位又有时会显示两位。我还没有找到原因,如果有知道的可以联系我帮我讲讲这个。谢谢啦

//显示小数,小数点前三位,小数点后两位
void OLED_ShowDecimal(uint8_t x,uint8_t y,float num,uint8_t size)
{float a=0;if(num>=0){a=10*(num-(int)num);OLED_ShowNum(x,y,(int)num,3,size);OLED_ShowChar(x+24,y,'.',size);OLED_ShowNum(x+32,y,(int)a,1,size);}else{num=0-num;OLED_ShowChar(x,y,'-',size);a=10*(num-(int)num);OLED_ShowNum(x+8,y,(int)num,3,size);OLED_ShowChar(x+32,y,'.',size);OLED_ShowNum(x+40,y,(int)a,1,size);}
}

如果有什么错误欢迎各位指正哦。


http://www.ppmy.cn/news/739846.html

相关文章

版本不匹配||Loaded runtime CuDNN library: 7.4.2 but source was compiled with: 7.6.0. CuDNN library major

一、问题描述 环境配置:Win10 MX130 CUDA 10.0 cuDNN 7.4.2 Python3.6 TensorFlow-GPU2.0.0 运行简单的神经网络报错:Loaded runtime CuDNN library: 7.4.2 but source was compiled with: 7.6.0. CuDNN library major and minor version needs t…

TensorFlow||Win10下TensorFlow-GPU版的安装(MX130+CUDA 10.0+cuDNN 7.4.2+Python3.6+TensorFlow-GPU2.0.0)

前言: 最近博主在做毕设,需要用到TensorFlow深度学习框架,之前有在Anaconda环境下安装过TensorFlow的CPU版本,详情见下方Anaconda||(踩坑无数,含泪总结!!!)An…

MX130+python3.7.6+CUDA 10.0+CUDNN 7.4.2+TensorFlow-gpu安装

MX130CUDA 10.0CUDNN 7.6.1TensorFlow-gpu安装 一、CUDA安装二、CUDNN安装三、tensorflow-gpu安装 环境:GeForce MX130(支持CUDA) python版本:3.7.6 首先确定好需要下载的tensorflow-gpu版本,以及对应的python、CUDA、CUDNN版本。…

mx130+tensorflow2 gpu版+python3.7+windows10版 安装指导

最近刚刚在学tensorflow2,因为自己的显卡不很渣是mx130的,但是又想跑gpu,从官网上找了一下CUDA 发现没有自己的显卡型号,瞬间感觉凉凉,但是又不死心又从官网上找了一下MX130自己的相关信息,发现他支持CUDA&…

部分抓包测试

linux下使用tcpdump抓包&#xff0c;生成pcap格式文件&#xff0c;利用wireshark打开&#xff0c;进行数据包分析 tcpdump常用选项&#xff1a; -a&#xff1a;尝试将网络和广播地址转换成名称&#xff1b; -c<数据包数目>&#xff1a;收到指定的数据包数目后&#xff0…

Vue3使用Markdown编辑器并显示

安装markdown-it npm i kangc/v-md-editornext -S 在main.js中全局注册 import { createApp } from vueimport VueMarkdownEditor from kangc/v-md-editor; import kangc/v-md-editor/lib/style/base-editor.css; import vuepressTheme from kangc/v-md-editor/lib/theme/vu…

苹果手机怎么验证app_苹果序列号查询 未验证怎么办?

如下所示&#xff0c;查询时遇到查询结果没有详细信息&#xff0c;而在有效购买日期这一栏显示未验证 则需要到苹果官网https://checkcoverage.apple.com 进行购买日期验证 输入序列号 点击更新购买日期 在验证完购买日期以后&#xff0c;重新查询即可。

iphonex 序列号_iPhoneX如何查看手机序列号?三种查看方法全教给你!

对于后续准备入手iPhoneX的果粉来说&#xff0c;很多朋友拿到真机之后都想知道自己买到是不是正品、水货之类的。其实一般情况下除了通过外观真机、配件之外去辨别之外&#xff0c;我们还可以通过iPhoneX序列号去查看。对于那些新手朋友来说&#xff0c;iPhoneX序列号在哪或iPh…