【STM32F4 HAL】MPU6050食用
关于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食用的更多相关文章
- 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 ...
- 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 板载加速度 ...
- STM32F4 HAL库中是如何实现UART IO配置的?
1.配置串口IO.中断等底层的东西需要在用户文件中重写HAL_UART_MspInit函数2.hal库是在stm32f4xx_hal_msp.c文件中重写的HAL_UART_MspInit函数,分析如 ...
- STM32 HAL SPI读取MPU6500的设备ID异常
1.问题背景 近前,使用STM32F4 HAL库的SPI读取MPU6500出现异常. 现象:读取ID失败,返回0,以为硬件焊接问题,各种排查,最后为了示波器测试方便,把读取ID的函数放到While(1 ...
- STM32 HAL 库实现乒乓缓存加空闲中断的串口 DMA 收发机制,轻松跑上 2M 波特率
前言 直接储存器访问(Direct Memory Access,DMA),允许一些设备独立地访问数据,而不需要经过 CPU 介入处理.因此在访问大量数据时,使用 DMA 可以节约可观的 CPU 处理时 ...
- STM32 之 HAL库(固件库) _
1 STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直 ...
- STM32 之 HAL库(固件库)
1 STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直 ...
- STM32学习及应用笔记一:SysTick定时器学习及应用
这几年一直使用STM32的MCU,对ARM内核的SysTick计时器也经常使用,但几乎没有仔细了解过.最近正好要在移植一个新的操作系统时接触到了这块,据比较深入的了解了一下. 1.SysTick究竟是 ...
- 【原创】STM32低功耗模式及中断唤醒(基于BMI160及RTC)的研究
预研目标 六轴静止时,终端进入低功耗模式:六轴震动时,终端正常工作模式,从而极大减少非工作时的电流消耗. 解决方案 机器静止时,依据六轴算法,CPU进入休眠(停止)模式:机器工作时,触发六轴中断唤醒C ...
- stm32F4中断分析-HAL库
详细可以参考: STM32使用HAL库操作外部中断——实战操作 https://www.cnblogs.com/wt88/p/9624103.html /** ******************** ...
随机推荐
- 《ASP.NET Core 微服务实战》-- 读书笔记(第6章)
第 6 章 事件溯源与 CQRS 在本章,我们来了解一下随着云平台一同出现的设计模式 我们先探讨事件溯源和命令查询职责分离(CQRS)背后的动机与哲学 事件溯源简介 事实由事件溯源而来 我们大脑就是一 ...
- NC16417 [NOIP2017]奶酪
题目链接 题目 题目描述 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞.我们可以在这块奶酪中建立空间坐标系, 在坐标系中,奶酪的下表面为 z ...
- mysql 外键索引入门介绍,为什么工作中很少有人使用?
背景 以前工作学习中,一直被告诫不要使用外键,所以也没有仔细整理过. 这里记录一下笔记. 外键 是什么? MySQL 的外键(Foreign Key)是一种关系型数据库中用于建立表与表之间关联关系的重 ...
- OCP试题解析之053-16 MEMORY_TARGET
16.Setting which of the following initialization parameters enables Automatic Memory Management? A. ...
- CSS实现导航栏
1.知识点 列表 浮动 伪类 背景 文本格式化 盒子模型 2.效果 3.代码 <!DOCTYPE html> <html lang="en"> <he ...
- Spring源码之springMVC
目录 web.xml 程序入口 servlet 初始化 运行阶段 销毁阶段 DispatcherServlet 初始化 DispatcherServlet 的逻辑处理 web.xml 它的作用是配置初 ...
- 图片Base64编码解码的优缺点及应用场景分析
随着互联网的迅猛发展,图片在网页和移动应用中的使用越来越广泛.而图片的传输和加载往往是网页性能的瓶颈之一.为了解决这一问题,图片Base64编码与解码技术应运而生.本文将介绍图片Base64相互转换的 ...
- 【Android 逆向】【ARM汇编】 arm64部分知识
arm64寄存器更多 X0-X30 SP CPSR PC 64位 W0-W30 32位 PC寄存器的值禁止修改 参数放在 X0-X7/W0-W7 结果放在 X0 函数返回 RET 相当于 bl lr ...
- Nacos搭建单机实例
Nacos是阿里开源的微服务架构组件,既可以用作服务注册中心,也可用作配置中心. 虽然Nacos的官方文档也有关于如何部署的说明,但是个人觉得不够详细和连续,故本文将阐述在单机环境实际搭建Nacos环 ...
- Qt+MPlayer音乐播放器开发笔记(二):交叉编译MPlayer以及部署到开发板播放演示
前言 在ubuntu上arm交叉编译MPlayer播放器,并部署到开发板播放音乐. Demo Mplayer MPlayer是一款开源多媒体播放器,以GNU通 ...