stm32f103 MPU6050利用DMP进行姿态解算(硬件iic,hal库)
最近在捣鼓平衡车,需要用到MPU6050进行姿态解算,参考了一些文章,也自己解决了一些问题
参考:
由于在移植的时候用的DMP是官网下载,所以和视频的讲解有些许不同的地方,如果所有资料都是按照视频中来的话,理论上是不需要额外的改动的.视频中自定义的MPU6050代码也会放在文章后面:
本文主要讲解如何移植DMP库,cubemx请自行配置
MotionDriver_V6.1下载:
下载后会得到一个基于MSP430的工程,主要需要移植以下文件:
需要将红框中的文件添加进工程,motion_driver_test.c为测试程序,不需要添加,不过可以仿照其编写自己的测试程序。
首先是inv_mpu.h大概31行的位置
只保留void *arg
接着打开inv_mpu.h
将27-161行代码全部删除,替换如下: (本文的行数都是修改前原文件的行数)
在大约774行的地方 ,删除ifndef中的代码
接着利用ctrl+f搜索hw,改一下器件地址
有两个,保险起见还是都改掉把
接着打开inv_mpu_dmp_motion_driver.c,删除35-76行代码
替换为下面的代码
然后再大概635行的位置
__no_operation修改为__NOP();
原视频到这里就开始在主函数里面验证了,但是官网下载的文件还是不能正常运行,在我调试的时候发现卡在MPU6050.c自检函数这个位置
(就是这里result为0x7而不是0x3)
经过我的调试发现,问题出现在inv.mpu.c2618行这个位置(可以直接右键跳转到这个位置),2609处的两个if函数之后result为0x3,但是又在下面或了0x04,变为0x7,把这部分注释掉即可
最后就是我们的主函数验证,
这里我使用串口发送数据来验证,也可以利用oled验证
视频中所用的MPU6050文件(均来自b站up,使用时记得修改):
MPU6050.c:
MPU6050.h
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律