1历时快一月的STM32F405+MPU6050(以下简称震动板)调试通了,本打算今天放弃的,使用控制电路来实现目前自己项目所需要的功能,控制电路如下:
但是说放弃,觉得还是再试最后一下吧,整体过程遇到问题及解决如下:
(1)自己用的是正点原子的mpu6050例程,只将mpu6050例程的串口1改成了串口6,在开发板上可以正常运行,匿名四轴也可以接受数据,但是在震动板上,没有数据,且程序再while(mpu_dmp_init())这个里面一直循环,在网上试了多种解决方法,但是依然无果,最后发现是自己将原理图上的10uf焊成了1uf,改了之后发现跳出这个循环了,换了可能是导致芯片的电压不稳定,在电路图这里大家一定要注意
这是开发板原理图
这是我自己焊错了,但是改了之后可以跳出while(mpu_dmp_init())循环,但是依然没有数据。
(2)期间在网上也查了很多原因,什么电源上电后再初始化、器件损坏等等,但是依然找不到原因。一步一步慢慢执行,看了好几遍资料,当AD0接地的时候,应该输出0x68,表示器件是连上的,奔着这个方向先看看自己mpu6050 连接上没,因为一度怀疑自己在焊接6050时吧芯片烧了,怎样看输出0x68方法如下:
执行到MPU初始化里if(res==MPU_ADDR)这里时,在右下角watch1窗口会显示0x68,表示传感器已经和单片机连接上了,在后边程序打断点,因为没有显示屏,只能串口输出,发现在串口也只是乱码,
串口可以输出返回值,整个程序初始化都是过了的。
匿名四轴一直收到的是12字节一组的数据,技术说看着像一直在复位,但是我的震动板是没有加按键的,所以觉得把按键注释掉试试,,结果在四轴上可以收到数据了,但是数据是有延迟的,不过还好可以收到数据了(视频上传不了),后来发现一组传输240,个字节,一组432个字节,这样一直循环传输。
(3)改了mpu初始化里的采样率、频率都不行,以为电压问题,也不是,改了串口线,以为太长了,正常70CM以内,不行。以为LED有影响,注释掉LED,发现不行,改了波特率也不行,最后用示波器观察,发现有个500ms的延迟,于是去延迟里边改了,还是不行
波形图
i
这块改成1,依然不行,查了好多,一度想放弃,决定死马当活马医,再试一次,将这里的延迟注释掉,结果匿名四轴没有延迟了。同样的程序下载到开发板里,发现将延迟注释掉在开发板上数据传输变化太快,不适用。
感悟:做任何事当你做了很多的努力但是依然不成功想要放弃的时候,告诉自己再坚持一下,说不定会有不一样的结果。
mac文件只能放桌面?想更安全的保护重要文件?不妨试试小编分享的mac文件隐藏软件吧,这些软件支持快速显示和隐藏文件和文件夹,更安全的保护您的文件,具体内容来一起看看吧~mac如何隐藏文件,mac隐藏文件工具推荐~Funter for Mac(文件隐藏工具)一个小型高效的工具,可用于隐藏文件和文件夹。您可以找到隐藏文件,在Finder中切换隐藏文件的可见性,隐藏文件,复制,移动或删除它们。此实用程...
使用vue cli3脚手架搭建一个vue项目创建一个vue_cms项目,没安装脚手架全局安装即可,安装过程选择默认的即可vue create vue_cms安装路由,axios,完成后启动项目,cnpm i vue-router axios -Scnpm run server...
1、梯度下降法给定一个目标函数f(x)和初始点x0△xt = -▽f(xt)xt+1 = x +η△xt停止条件:当 |△xt| <ε时停止三大问题:局部最小值、鞍点、停滞区。1.1 局部最小值(极值)1.2 停滞区函数有一段很平的区域,这时梯度很小,权值就更新的特别慢。1.3 鞍点鞍点处梯度为0,但不是局部最大值也不是局部最小值。鞍...
Spring中的代理概念:代理即在访问真正的对象之前和之后所做的业务处理的对象以事务的操作为例讲解:静态代理代理对象和真实的对象需要实现同一个接口目标对象类public class UserDaoImpl implements IUserDao { @Override public int saveUser() { //System.out.println("--开启事务--"); System.out.println("--添加用户--"); //System.out.pr
首先,先把服务器的配置说明一下:操作系统:CentOS 6.6 64位CPU:1核内存:1GB系统盘:20G(云硬盘)公网带宽:1Mbps对我来说挺合适的一个配置,把自己的爬虫放上面运行,数据存mysql里面已经足够用了。之前那篇写的是配置桌面环境,可是后来发现这个配置再加上个桌面环境,卡的我都不想说了….于是还是老老实实用字符界面了。1.首先是安装ftp服务并且开启它: sudo yu
SpringMVC学习笔记web.xml 配置&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...
RTTI(执行期类型识别)在前面章节中我们介绍过Visual C++4.0支持RTTI,重点不外乎是:1、编译时需选用/GR(/GR的意思是enable C++ RTTI)2、包含typeinfo.h3、使用新的typeid运算符。其实,MFC在编译器支持RTTI之前,就有了这项能力。我们现在要以相同的手法,在Console程序中仿真出来。我希望我的类库具备IsKindOf的能
报错:ParserError: Error tokenizing data. C error: Buffer overflow caught - possible malformed input file在使用pandas读取CSV文件的时候,报了上述错误,这是缓冲区溢出错误,造成这种错误的原因是CSV文件中每行使用了 \r ,也就是回车符。解决方案就是给 read_csv 添加参数 line...
在使用`doxygen`工具时,`make`报错
前言最近刷到了一句耐人寻味的话,“解决雪崩问题的最好办法是不发生雪崩”。不论是在硅谷互联网公司里还是在国内的互联网平台上,曾多次遇到过海量规模的交易瞬间吞噬平台的悲惨故事。核心的解决方案大同小异,都是通过缓存,逐层减少流量的冲击,保护用户的体验和平台的服务可用。金融、财务行业有现金为王的说法,互联网技术行业用“缓存为王"清楚地概括了缓存的重要性。而本文深入浅出地讨论了Ehcache、Memcached、Redis、 Tair、 EVCache等各种常用缓存开源系统的方案及精粹。虽然读过不少国外有
应用程序通过socket系统调用和远程主机进行通讯,每一个socket都有一个读写缓冲区。读缓冲区保存了远程主机发送过来的数据,如果缓冲区已满,则数据会被丢弃,写缓冲期保存了要发送到远程主机的数据,如果写缓冲区已慢,则系统的应用程序在写入数据时会阻塞。可知,缓冲区是有大小的。 BDP 给出了一种简单的方法来计算理论上最优的 TCP socket 缓冲区大小(其中保存了排队等待传输和等
<br /><br />#include <iostream.h> <br />#include <iomanip.h> <br />#include <string.h> <br />#include <malloc.h> <br />#include <stdio.h> <br /><br />//typedef int TElemType; <br />const int UINT_MAX=1000; <br />char str[50]; <br /><br />typedef struct <br