mpu6050 HAL库 简单读取角度

用到的通信手段:I2C,串口

用到的模块:陀螺仪mpu6050,蓝牙模块HC-05(用这个是因为我电脑抽风了,识别不到串口,明明arduino就可以串口下载的……所以用手机当上位机)

用到的单片机:stm32f103rct6;

用到的驱动库:(mpu6050)链接:https://pan.baidu.com/s/1hXgFjKHruVZ0s-BogRg7Sg?pwd=8888 

 提取码:8888

烧录方式:st-link;

话不多说,开整!

硬件连接图:

 

stm32cubemx配置:

        配置调试器~

        配置时钟源~

 

配置I2C~

 

配置串口~

        配置时钟频率~ 

 

         完善项目名,开发工具,以及自动生成.h选项~

 

        最后生成代码~

 

然后打开项目所在文件夹

· 

到这一步,前面盘里面的mpu6050驱动库就派上用场了。

我们把mpu6050驱动库里面的.c文件夹的东西复制黏贴到cubemx生成的Src文件夹里面,把驱动库里面的.h文件夹的东西复制黏贴到cubemx生成的 inc 文件夹里面。

然后就是keil5的事情了。

打开文件,先编译一遍,确保生成的文件没问题。

然后添加刚刚加进去的驱动库。

 编译一遍,然后如果出现这个问题,就去把mpu6050.c文件里面的hi2c1改成你开启的i2cx

在main.c里面添加头文件

#include "mpu6050.h"
#include "inv_mpu.h"
#include <stdio.h>

 

 在主函数的循环前添加下面这段代码,相当于开启mpu6050

while(mpu_dmp_init()){
	HAL_Delay(200);
}

 

然后就是定义变量,要想读取角度值我们需要找到对应的原函数,然后在主函数里面写出来

原函数在inv_mpu.c的最后面,有相应的文字注释。

是一个float型+指针作为输入的函数,所以我们要定义的变量也应该是float型。

另外,我们再定义个字符串来存储返回来的形参的值。

	float pitch,roll,yaw;
	uint8_t date[20];

在主函数里面添加读取角度的函数

 并掏出我们的sprintf把反馈回来的值打印在字符串date里面

并用串口发送给上位机

翻译过来也就是下面几行代码:

		mpu_dmp_get_data(&pitch,&roll,&yaw);
		sprintf((char*)date,"pitch :%.2f\n",pitch);
		HAL_UART_Transmit(&huart2,date,sizeof(date),1000);
		sprintf((char*)date,"pitch :%.2f\n",roll);
		HAL_UART_Transmit(&huart2,date,sizeof(date),1000);
		sprintf((char*)date,"pitch :%.2f\n",yaw);
		HAL_UART_Transmit(&huart2,date,sizeof(date),1000);
		HAL_Delay(1000);

写在主函数里面

编译保存~接着就是打开手机连接蓝牙(电脑就是直接打开串口助手调好波特率)

烧录,按复位键

(温馨提示:运行前拜一拜单片机有奇效哦~(滑稽脸))

 最终效果,就是这个样子了。

感谢各位观看,如果文章有错误还请大家斧正(○| ̄|_,orz,囧rz);

VID_20220810_210422

 好累_(´ཀ`」 ∠)_ ,第一次写,感觉比写程序还要费脑细胞……

让本来就不多的脑细胞更雪上加霜了……

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值