STM32F103ZET6 编写 MPU6050代码 (HAL库、DMP代码)

STM32 HAL库移植 mpu6050 DMP库

一、生成 stm32 代码

需要的东西:

  • I2C
  • 串口

1、时钟设置
在这里插入图片描述
2、调试设置
在这里插入图片描述
3、I2C 设置
在这里插入图片描述
4、串口设置
在这里插入图片描述
5、生成代码
不截图了占空间

二、文件放置和配置

1、文件放置 (文件放在 Drivers 下面 )
在这里插入图片描述
2、头文件导入
在这里插入图片描述
3、添加文件组
在这里插入图片描述
3、设置 printf 输出函数
这里懒得粘贴图片了,设置 printf 如果不会就参考以下链接:
STM32 HAL库使用 printf 输出

4、导入头文件

#include "mpu6050.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"

代码位置:
在这里插入图片描述

5、定义接收变量

float pitch, roll, yaw;

代码位置:
在这里插入图片描述

6、读取状态

/* USER CODE BEGIN 2 */
  printf("-- Mpu6050 Project Start -- \r\n");
	HAL_Delay(1000);
	/*
   *DMP��ʼ��
   */
	while (mpu_dmp_init())
  {
    HAL_Delay(200);
  }
	printf("Successfully initialized!\r\n");
	
	/*
   *iic��ȡ����ID
   */
	printf ("Ready to read the ID\r\n");
  uint8_t recv = 0x00;
  HAL_I2C_Mem_Read(&hi2c1, (0x68 << 1), 0x75, I2C_MEMADD_SIZE_8BIT, &recv, 1, 0xfff);
  if (recv == 0x68)
  {
    printf("mpu6050 ID Read: OK at 0x68\r\n");
  }
  else
  {
    printf("Err mpu id:0x%x\r\n", recv);
  }
  /* USER CODE END 2 */

代码位置:
在这里插入图片描述

7、读取数值

/* USER CODE END WHILE */
    while(mpu_dmp_get_data(&pitch, &roll, &yaw) != 0){}
	printf("data: %f,%f,%f\r\n", pitch, roll, yaw); 
	HAL_Delay(500);
/* USER CODE BEGIN 3 */

代码位置:
在这里插入图片描述
8、代码串口输出效果
在这里插入图片描述

三、总结

代码参考以下链接修改而来,如需要源码可以去他的 网页下载(我使用的是 F4 源码修改的):
链接: STM32F4/STM32F1手把手移植MPU6050欧拉角(HAL库,带源码)

今天改了一天,终于把他弄出来了!累,顺便写个记录!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值