MPU6050在stm32zetb与stm32c8t6移植过程中存在dmp的问题

# 常规移植过程
MPU6050是一款程序稳定且低成本的姿态传感器,其具备6个传感维度,分别为x,y,z,三轴加速度,以及x、y、z三轴角加速度,固又称为6轴加速器。市面上有价格更贵的9轴mpu6050其实是在原本的6050基础上外挂了一个三轴磁传感器,组成9轴姿态传感。MPU6050自带硬件iic通讯电路,可以与单片机硬件iic或软件模拟iic连接。6050挂载的外设也是用iic通信。
MPU6050的应用在正点原子的例程中有资源可以copy,再结合oled厂家的资源,将lcd的程序换掉就能得到一个更加小型化的姿态传感器了。
**第一步**,使用ze的板子将例程程序的代码先实现,然后融合oled(最好使用iic通信的oled程序,方便后期c8移植时节约io资源)程序。
**第二步**,根据c8板子中的有限资源,在ze板子上先将io资源等更换,并验证。(尽量保留c8板子上的功能端口,预留串口,时钟,中断等资源)
**第三步**,在前面的功能都实现的情况下,就可以正式开始ze到c8的程序移植了。需要将芯片型号、启动文件,和编译设置都改变。

在这里插入图片描述
①先将启动文件startuop_stm32f10x_hd.s更换为startuop_stm32f10x_md.s文件,因为c8t6是中等容量的M3内核单片机。
②Device,芯片换为stm32f103c8。
.
在这里插入图片描述

③需要将编译的预定义STM32F10X_HD改为STM32F10X_MD。
在这里插入图片描述
#出现的问题
在这里插入图片描述
网上的资料有解决方案:
查找到一篇文章说是晶振时序的影响,后来下载一个工程对比分析发现system_stm32f10x.c在RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9)配置不一样,错误的工程中是 RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL9);
在这里插入图片描述
修改为RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9),自检通过。多了RCC_CFGR_PLLXTPRE_HSE_Div2 果然影响时钟。
这部分代码为外部晶振为8M时的情况:
答案连接:https://it.cha138.com/java/show-125541.html
但是本解决方案与我遇到的问题不一样,我不能解决问题。
确实有移植后时钟不批配的问题,在原ze板子上延时显示2.5秒的画面,在新移植的c8板子上会加倍时长显示到5秒。
在这里插入图片描述
查看资料得知c8t6与zetb的启动文件(中容量产品和小容量产品的启动文件,大容量产品的启动文件正常)部分代码有修改过。
在用库函数开发时,只要是更换中容量或者小容量启动文件后,都会有这样的问题。
在这里插入图片描述
有两种解决方案
1、是改底层代码,将频率加倍(比较复杂,要去不断的查找函数)
2、直接将启动文件改回来,将启动文件从startuop_stm32f10x_md.s又改回startuop_stm32f10x_hd.s
在这里插入图片描述
注:按道理说,c8t6用startuop_stm32f10x_md.s作为启动文件才是正确的,但是不清楚为什么用上startuop_stm32f10x_hd.s作为启动文件并没有报错,而且也成功执行了程序。这点留着后期在探究。

找到原因了!!!!!
我找的这个启动文件,可能开始时用在寄存器版本函数上,将SystemInit函数注释掉了。我使用的是库函数,所以需要取消注释,就能继续使用startuop_stm32f10x_md.s来作为c8t6的启动文件了。
在这里插入图片描述
成功了!!!!!!!!!
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值