正点原子中的usart和mpu6050联系的探究

正点原子中的usart和mpu6050联系的探究

我发现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行程序存在什么关系呢?
再想起什么问题,会在下面补充,我把尝试的代码也附在下面,方便大家尝试验证。
最后希望大家能一起讨论一起进步,第一次在论坛写这么多文字,也希望大家多多支持吧。在这里插入图片描述
正点原子中的usart和mpu6050联系的探究
正点原子中的usart和mpu6050联系的探究
正点原子中的usart和mpu6050联系的探究
正点原子中的usart和mpu6050联系的探究
正点原子中的usart和mpu6050联系的探究