hal库移植mpu6050代码


今年电赛需要二维云台,然后为了实现闭环,便需要mpu6050,然后找了很多方法,都移植的很艰难,其中还有一些神奇的bug,最后终于移植成功。

配置CubeMX

在这里插入图片描述

  • 先是配置System Core中的RCC,将High Speed Clock (HSE)和Low Speed Clock (LSE)都设置为Crystal/Ceramic Resonator
    * 接着配置SYS,

  • 接着配置SYS,将Debug设置成Serial Wire
    在这里插入图片描述

  • 然后配置串口,需要使用USART1通信,将Mode设置成Asynchronous。
    在这里插入图片描述

  • 接着配置I2C,在上面I2C里面选择I2C,然后下面的I2C Speed Mode里面选择Fast Mode,这个是mpu6050需要的模式。

  • 再接着配置时钟树
    在这里插入图片描述

  • 在HCLK(MHz)那里,选择72MHz max,然后CubeMX会自动帮你配置好时钟树。

  • 然后就是工程管理了,
    在这里插入图片描述
    Project Name里面写入你的工程名称,建议用英文,因为中文好像会报错,然后是Toolchain/IDE里面,选择MAD-ARM。
    在这里插入图片描述
    再点击左边Code Generator,勾选Generate peripheral initialization as a pair of’.c/.h’ files per peripheral。最后点击右边上面的GENERATE CODE,工程生成成功。

打开工程,进行keil里面的配置。

配置Keil

点开需要移植的代码(等电赛结束后,公开我自己配置好的代码)里面的Core,再点开Src,将里面的DMP这个文件夹,复制到CubeMX生成的那个工程里面的Core -> Src里面,然后再复制mpu6050.c和mpu6050.h,同样到CubeMX生成的那个工程里面的Core -> Src里面。

在这里插入图片描述
复制好这些代码之后,打开keil的这个工程
在这里插入图片描述
新建一个Group叫DMP,然后将图中的下面三个文件加入进去,接着在Application/User/Core里面将mpu6050.c加入进去。

然后再在usart.c文件里面加入下面的代码
在这里插入图片描述
这个是如果想要使用printf的代码
然后编写主函数,如下面
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
然后编译,下载程序就成功了。
可以看到PC13引脚的led灯亮了,再打开串口助手,波特率配置成115200,打开串口,就可以看到三个角度的数据了。

Debug失败,并且卡在起始文件startup_stm32f103xb.s中

如果这样后不能出代码的话,
并且卡死在下面这张图片里面
在这里插入图片描述
打开汇编,发现卡死在这句了。
这是因为代码里面的printf语句问题
在这里插入图片描述
在这里插入图片描述
此时打开Options for Target
在Target里面勾选上Use MicroLIB,这样就可以运行了。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值