打印
[STM32F4]

STM32平台下官方DMP库6.12超详细移植教程

[复制链接]
楼主: 键盘手没手
手机看帖
扫描二维码
随时随地手机跟帖
21
启用MPU6050的DMP吗   

使用特权

评论回复
22
键盘手没手|  楼主 | 2022-9-30 19:29 | 只看该作者
添加必要的宏定义

USE_STDPERIPH_DRIVER, STM32F10X_MD,USE_DMP,MPL_LOG_NDEBUG=1,EMPL,MPU6050,EMPL_TARGET_STM32F1

使用特权

评论回复
23
键盘手没手|  楼主 | 2022-9-30 19:31 | 只看该作者
添加头文件路径

在新工程中添加头文件路径,并勾选【C99 Mode】

使用特权

评论回复
24
键盘手没手|  楼主 | 2022-9-30 19:31 | 只看该作者
在工程管理中添加相应的目录

使用特权

评论回复
25
键盘手没手|  楼主 | 2022-9-30 19:32 | 只看该作者
并把“Motion_Driver”库文件中所有的“.c”文件添加到工程目录下(包括“libmpllib.lib”库文件)

使用特权

评论回复
26
键盘手没手|  楼主 | 2022-9-30 19:32 | 只看该作者
6.修改文件,消除错误警告

工程配置上需要添加与修改的已经完成,接下来让我们编译一下工程,针对编译器所提示的错误与警告逐个的进行解决

使用特权

评论回复
27
键盘手没手|  楼主 | 2022-9-30 19:33 | 只看该作者
(1)warning: #1-D: last line of file ends without a newline
首先大量有关keil工程下我们经常遇到的“文件的最后一行没有换行结束”问题,很简单,为了不产生这个警告,到每一个警告提示的文件中,在最后一行回车下一行即可。

使用特权

评论回复
28
键盘手没手|  楼主 | 2022-9-30 19:34 | 只看该作者
再次编译工程,看下一个错误提示

使用特权

评论回复
29
键盘手没手|  楼主 | 2022-9-30 19:34 | 只看该作者
(2)error: #169: expected a declaration 因为我们是在STM32F103工程下对库进行移植,而官方所给的ARM_Keil平台下的移植例程源码是针对STM32F4的,所以我们把所有库文件中宏定义:#if defined EMPL_TARGET_STM32F4 改为 #if defined EMPL_TARGET_STM32F1

使用特权

评论回复
30
键盘手没手|  楼主 | 2022-9-30 19:35 | 只看该作者
我们通过keil的搜索功能,找到所有的#if defined EMPL_TARGET_STM32F4定义,并修改,然后再次编译工程,此时又会产生一些新的错误,不过没事,那预示着我们离成功又近了一步。

使用特权

评论回复
31
键盘手没手|  楼主 | 2022-9-30 22:14 | 只看该作者
让我们先来解决图提示的第三个错误

使用特权

评论回复
32
键盘手没手|  楼主 | 2022-9-30 22:15 | 只看该作者
(3)error: #5: cannot open source input file “stm32f4xx.h”: No such file or directory
因为我们是在STM32F103工程下对库进行移植,所以把包含的STM32固件库头文件修改为#include “stm32f10x.h”
接下来的错误都只是提示“不能打开源代码某些头文件,没有这样的文件或目录”,而这些是我们需要自己为“Motion_Driver”库提供接口的头文件,比如包括必要的I2C读写接口,定时服务等,如若要输出调试信息到上位机,还需要提供串口接口。

使用特权

评论回复
33
键盘手没手|  楼主 | 2022-9-30 22:35 | 只看该作者
让我们看下一个错误

(4)error: #5: cannot open source input file “i2c.h”: No such file or directory
对于此类错误,我们只需要把我们事先写好的“i2c.c和i2c.h”添加进工程即可

使用特权

评论回复
34
键盘手没手|  楼主 | 2022-9-30 22:54 | 只看该作者
然后双击此错误定位到“inv_mpu.c”文件中,我们把“#include "main.h"和#include “board-st_discovery.h””头文件声明删除,这两个头文件是官方STM32F4例程里建立的文件,我们的库移植中不使用。顺便也把另一个"inv_mpu_dmp_motion_driver.c"中的“#include "main.h"和#include “board-st_discovery.h””头文件声明删除。

使用特权

评论回复
35
键盘手没手|  楼主 | 2022-9-30 22:55 | 只看该作者

使用特权

评论回复
36
键盘手没手|  楼主 | 2022-9-30 22:56 | 只看该作者
同样的对于错误
(5)error: #5: cannot open source input file “uart.h”: No such file or directory
我们把事先写好的“uart.c和uart.h”添加进工程即可

使用特权

评论回复
37
键盘手没手|  楼主 | 2022-9-30 23:04 | 只看该作者
(6) warning: #223-D: function “__no_operation” declared implicitly

“__no_operation9();” 是IAR中空操作指令,可用来查看代码执行位置,在keil工程下,用" __ASM(“nop”);"替换

使用特权

评论回复
38
键盘手没手|  楼主 | 2022-9-30 23:06 | 只看该作者
(7)在"inv_mpu_dmp_motion_driver.c"文件中添加 #include “SysTick.h” 和 #include "i2c.h"头文件声明

使用特权

评论回复
39
键盘手没手|  楼主 | 2022-9-30 23:25 | 只看该作者
(8)在"inv_mpu"中添加 #include “SysTick.h” 和 #include “i2c.h” 头文文件声明

使用特权

评论回复
40
键盘手没手|  楼主 | 2022-9-30 23:26 | 只看该作者
(9)"data_builder.c"中,修改static struct inv_sensor_cal_t sensors; 为 struct inv_sensor_cal_t sensors; 即去掉静态声明

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则