关于MPU6050模块的食用>_<(本人比较菜,写的不好或有错误的地方欢迎大佬指出)

最近学校冬令营发了个MPU6050模块,第一次弄也花了我花了不少时间,于是就把其中一些步骤以及要点简单说下。

至于MPU6050的介绍啥的,我也不细说了,很多地方都有,我就说下怎么移植现成的代码。(用的核心板是F401CCU6)

把代码下载一下,芝士地址 (提取码:1145) (里面有些头文件如果报错的话删掉就行了)

代码分成两部分,一个是对mpu6050寄存器的读取,另一个是dmp库,也就是把读取的原始信息进行一系列操作得到的三轴角速度以及欧拉角等信息。

然后就是CubeMX里的配置

1、尝龟配置,开烧录口,以及时钟配置

2、与MPU6050建立IIC通信:

找两个IO口,我选择的是A0与A1,都设置为开漏输出,上拉,其他不变(如图)

3、开启串口用于调试

这里我选择的是UART1,要是选别的串口的话后面printf重定向代码记得改一下

4、project manager里正常配置即可

接线:只用MPU6050的SDA,SCL,GND,VCC四个引脚即可,其他的话目前不需要,引脚对着图接即可

      我用的是DAPLINK,就用DAPLINK上的TX接单片机的RX,RX对TX即可

之后就是keil里的部分

先把移植文件都导入进去,根据引脚配置改一下mpuiic.h里的宏定义,然后定义一下三个欧拉角变量(pitch,roll,yaw)

再写一下printf重定向,把下面代码加在usart.c即可

/* USER CODE BEGIN 0 */
typedef struct __FILE FILE;
struct __FILE
{
int handle;
};
FILE __stdout;
/* USER CODE END 0 */ /* USER CODE BEGIN 1 */
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0); //这里是usart1,用别的串口记得改
USART1->DR = (uint8_t) ch;
return ch;
}
/* USER CODE END 1 */

然后是main函数里的代码

  /* USER CODE BEGIN 2 */
MPU_Init();
printf("print ok\n");
while(mpu_dmp_init())
{
HAL_Delay(20);
printf("no_dmp\n");
}
printf("ok_dmp\n");
/* USER CODE END 2 */ /* USER CODE BEGIN 3 */
while(mpu_dmp_get_data(&pitch,&roll,&yaw)){}
printf(" pitch:%f\n roll:%f\n yaw:%f\n",pitch,roll,yaw);
HAL_Delay(1000);
/* USER CODE END 3 */

然后打开串口助手,就可以收到MPU6050发送的三个欧拉角信息啦

值得注意的一些地方:

1、两个GPIO口的配置均为开漏输出,如果是推挽输出的话会导致dmp初始化不成功(返回值为4)

2、烧录的时候MPU6050记得放平,不然容易出现误差

3、因为没加地磁计,所以yaw的零点漂移会比较严重

4、其他问题可以参考这篇博客里最后的问题汇总

第一次写博客,还请多多指教>_<

后面有空可能会写pid的东西()

【STM32F4 HAL】MPU6050食用的更多相关文章

  1. STM32F4 HAL Composite USB Device Example : CDC + MSC

    STM32F4 USB Composite CDC + MSC I'm in the process of building a USB composite CDC + MSC device on t ...

  2. 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载加速度 ...

  3. STM32F4 HAL库中是如何实现UART IO配置的?

    1.配置串口IO.中断等底层的东西需要在用户文件中重写HAL_UART_MspInit函数2.hal库是在stm32f4xx_hal_msp.c文件中重写的HAL_UART_MspInit函数,分析如 ...

  4. STM32 HAL SPI读取MPU6500的设备ID异常

    1.问题背景 近前,使用STM32F4 HAL库的SPI读取MPU6500出现异常. 现象:读取ID失败,返回0,以为硬件焊接问题,各种排查,最后为了示波器测试方便,把读取ID的函数放到While(1 ...

  5. STM32 HAL 库实现乒乓缓存加空闲中断的串口 DMA 收发机制,轻松跑上 2M 波特率

    前言 直接储存器访问(Direct Memory Access,DMA),允许一些设备独立地访问数据,而不需要经过 CPU 介入处理.因此在访问大量数据时,使用 DMA 可以节约可观的 CPU 处理时 ...

  6. STM32 之 HAL库(固件库) _

    1 STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直 ...

  7. STM32 之 HAL库(固件库)

    1 STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直 ...

  8. STM32学习及应用笔记一:SysTick定时器学习及应用

    这几年一直使用STM32的MCU,对ARM内核的SysTick计时器也经常使用,但几乎没有仔细了解过.最近正好要在移植一个新的操作系统时接触到了这块,据比较深入的了解了一下. 1.SysTick究竟是 ...

  9. 【原创】STM32低功耗模式及中断唤醒(基于BMI160及RTC)的研究

    预研目标 六轴静止时,终端进入低功耗模式:六轴震动时,终端正常工作模式,从而极大减少非工作时的电流消耗. 解决方案 机器静止时,依据六轴算法,CPU进入休眠(停止)模式:机器工作时,触发六轴中断唤醒C ...

  10. stm32F4中断分析-HAL库

    详细可以参考: STM32使用HAL库操作外部中断——实战操作 https://www.cnblogs.com/wt88/p/9624103.html /** ******************** ...

随机推荐

  1. 洛谷P3612 [USACO17JAN] Secret Cow Code S

    [USACO17JAN] Secret Cow Code S 题面翻译 奶牛正在试验秘密代码,并设计了一种方法来创建一个无限长的字符串作为其代码的一部分使用. 给定一个字符串,让后面的字符旋转一次(每 ...

  2. 使用SpeechRecognition进行语音识别

    操作系统 : CentOS7.7.1908_x64 gcc版本 :4.8.5 Python 版本 : 3.6.8 安装语音识别环境: virtualenv -p /usr/bin/python3 py ...

  3. NVME(学习笔记一)—概述

    NVMe概述 NVMe是一个针对基于PCIe的固态硬盘的高性能的.可扩展的主机控制器接口. NVMe的显著特征是提供多个队列来处理I/O命令.单个NVMe设备支持多达64K个I/O 队列,每个I/O队 ...

  4. Swoole从入门到入土(7)——TCP服务器[大杂烩]

    这一篇是异步风格的TCP服务器的最后一篇,主要的目的是疏理之前几篇没提到的一些比较有用的属性.配置.函数与事件,当然不是全部.如果想知道全部,请查看官网. 1.属性 Swoole\Server-> ...

  5. scrcpy-Android投屏神器

    介绍 scrcpy 是免费开源的投屏软件,支持将安卓手机屏幕投放在 Windows.macOS.GNU/Linux 上,并可直接借助鼠标在投屏窗口中进行交互和录制. 下载scrcpy 解压. http ...

  6. mdbook安装使用实录

    简介 mdbook是一个基于Rust的电子书系统,效果类似于gitbook.本人写图文文章一直都采用的印象笔记,但是写系列教程的情况不方便管理.因此引入mdBook,分享一下基本安装使用过程及遇到的问 ...

  7. Python 潮流周刊第 39 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  8. 记一次 splice 导致 io.Copy 阻塞的排查过程

    记一次 splice 导致 io.Copy 阻塞的排查过程 简而言之,net.TCPConn 的 ReadFrom 零拷贝实现 splice 在 1.21.0 - 1.21.4 删除了 SPLICE_ ...

  9. linux下MariaDB安装

    一条命令安装Mariadb 首先在/etc/yum.repos.d下创建一个MariaDB.repo文件 vim /etc/yum.repos.d/MariaDB.repo 添加以下配置 [maria ...

  10. 【转载】重装系统小贴士:ssh、vscode免密登录

    ssh安装 apt install openssh-server 然后到cd /etc/ssh下找sshd_config文件,打开把允许远程root登录的选项改为yes 重启ssh服务:/etc/in ...