OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2936|回复: 4

mpu6050和usart.h的发现有疑惑

[复制链接]

37

主题

212

帖子

0

精华

高级会员

Rank: 4

积分
900
金钱
900
注册时间
2019-6-6
在线时间
100 小时
发表于 2020-6-2 11:17:12 | 显示全部楼层 |阅读模式
20金钱
我发现mpu6050例程中,必须要有usart.h否则函数编译虽然不报错,但是程序执行不了。为什么我这么说嗯,我对我做的尝试做如下的说明。我是针对正点原子的MPU6050战舰版例程进行的测试。

1、remove左边SYSTEM文件夹下的usart文件,见图1,当然也移除了usmart文件夹(此实验中没有实际用处)
2、屏蔽掉LCD中用到串口1的地方(主要就是打印LCD型号的地方),见图2.1和2.2

3、屏蔽掉所有用到usart.h的子文件,如图3中上面的四个头文件,他们都包含了usart.h,都注释掉,这里特别说明需要额外注释掉主程序test.c中的一些向上位机传递数据的一些函数。
4、以上三步完成后,编译程序,程序无错误和警告。下载到战舰开发板中,发现液晶屏不亮,无法显示陀螺仪数据。
5、为了验证问题所在,采用流水灯指示程序的运行状态,不断向上调节LED的位置,直到LED调整到LED初始化下面的时候,编译下载程序开发板上的LED都不亮。至此可以说明有些LED初始化上面某地方有问题,但LED初始化上面仅仅有#include和一些变量的初始化。变量初始化不可能引起问题。
6、进行ST-LINK的硬件调试,发现问题可能由6050导致。
7、于是我用其他的不含6050的程序(例如跑马灯例程),移除usart文件和注释所有含有usart.h的地方,下载运行程序,程序正常运行跑马灯正常运行。
8、经过以上7步的测试可以认为,问题在于mpu6050和usart.h存在潜在的联系,虽然不用调用usart.h。但是是什么联系呢
9、于是我重新加入了第一步中移除的SYSTEM文件夹下的usart,但是其他的地方不变,就是其他所有用到usart.h头文件的地方依旧注释掉,编译没有错误,下载,流水灯亮,液晶屏显示mpu6050数据。所以验证了第8步的猜想,存在着潜在的不为人知的联系。
10、为了知道是什么联系,我不断的删除usart.c和usart.h中的的内容,最终发现,只有当usart.c中保留如下图5,所示的20几行看不懂的程序的时候,mpu6050一切可以运行正常。

经过这里我所有的尝试基本上完成了,接下来抛出我的几个问题

1、第十步中的那20行程序到底是干什么用的呢?
2、为什么那20几行程序仅仅影响了当程序中含有mpu6050时的程序呢?
3、既然mpu6050的三个相关的文件中包含了usart.h的头文件,那为啥注释掉后没有报错呢?
4、mpu6050到底和usart.h中的那20行程序存在什么关系呢?
再想起什么问题,会在下面补充,我把尝试的代码也附在下面,方便大家尝试验证。
最后希望大家能一起讨论一起进步,第一次在论坛写这么多文字,也希望大家多多支持吧。

图1

图1

图2.1

图2.1
2.2.jpg

图3

图3

图4

图4

图5

图5

逐步删除串口1程序测试6050.rar

1.65 MB, 下载次数: 1

不会就要俯身倾耳以请啊,博客地址:https://blog.csdn.net/qq_39521541?spm=1001.2101.3001.5343
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2020-6-2 12:11:59 | 显示全部楼层
检查代码什么地方用到了printf函数的,这二十几行代码是printf的重定向的
回复

使用道具 举报

37

主题

212

帖子

0

精华

高级会员

Rank: 4

积分
900
金钱
900
注册时间
2019-6-6
在线时间
100 小时
 楼主| 发表于 2020-6-3 10:39:04 | 显示全部楼层
自己顶自己的时候到了
不会就要俯身倾耳以请啊,博客地址:https://blog.csdn.net/qq_39521541?spm=1001.2101.3001.5343
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2020-6-3 14:06:20 | 显示全部楼层
全局搜索下printf,基本就是你的mpu6050用了printf函数了
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

37

主题

212

帖子

0

精华

高级会员

Rank: 4

积分
900
金钱
900
注册时间
2019-6-6
在线时间
100 小时
 楼主| 发表于 2020-6-3 17:04:00 | 显示全部楼层
szczyb1314 发表于 2020-6-3 14:06
全局搜索下printf,基本就是你的mpu6050用了printf函数了

我注释掉mpu6050.c的usart.h头文件,编译没有错误呀
不会就要俯身倾耳以请啊,博客地址:https://blog.csdn.net/qq_39521541?spm=1001.2101.3001.5343
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-29 12:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表