我们拿到一款MCU,首先在选型的时候对他们都会有一个大概的了解,首先我们知道它多大与的FLASH,多大的RAM,是否与我们的项目适合,资源上是否足够,内频是否足够,运行速率能否达到标准,性能怎么样,比如抗静电干扰,高温,潮湿的环境,寒冷,对芯片本身的影响,还有如何焊接几层板,成本,是否易于开发,这里分为软件和硬件来说明一下:

首先说一下硬件:

一般最小系统+外围模块,几伏供电,供电等级,电压等级(其实这个M0等也会涉及),原理图的设计,元器件的选型,元器件的布局,布线更是一门大学问,甚至有些特殊场合,硬件对性能有非常严格的要求,比如说抗静电干扰,电磁感应等。(后面我会重新补充更新这一块)

静电感应干扰是累积电荷高电压放电的电击现象。干扰表现是非持续性的,但是可以对电子设备造成永久性损害。用静电计可以测到。可以用抗静电措施与接地等方法消除。
电磁感应干扰是混进信号通路的杂波,会使信号波形产生大量毛刺,甚至严重到使波形发生畸变。干扰表现是持续性的,但是通常不会是永久性损害。一般通过电磁屏蔽隔离措施与接地等方法消除。

然后是软件:

软件其实就是配置寄存器,再配置寄存器的过程中需要参考手册,学会看手册,看手册也是一门学问,比如说SPI的配置,首先看他选择了那几个引脚,然后配置成了什么模式,选择了那个时钟源,然后如何与外部器件进行通讯,外部器件的规格,这里有需要看SPIFLASH的型号和它对应的手册,不过好在现在有很多MCU里有库函数,省去了很多麻烦。

那么我们该如何测试呢?

首先要看懂代码,明白他想要做什么,然后看它问题是出在哪?引脚,时钟,模式,寄存器的配置,很多问题都出现在这,因为32位机的资源,寄存器很多,如果没有参考手册,一般什么都做不了,但是既然出现了问题,就要解决问题,好在现在大多数集成开发环境已经具有了调试,仿真的功能,还有示波器,电压表,逻辑分析仪等配合分析解决问题的工具,出现问题切记不要欺骗自己,不要得过且过,我承认换一种方法是达到效果的捷径,但你一定要明白,为什么这么做不可以?为什么?这样你又能多明白一种道理,比如选取晶振为时钟源,但是他不工作,换一个内部时钟,达到了效果,但是我们也要知道,为什么绕过它就行,而使用它就不行呢?是不是因为它坏掉了,或者说它并不能做这个接口的时钟?为了验证我的猜测,我把所有例程都选择晶振为时钟都跑了一遍,发现没有一个能够工作的,然后,基本可以确定它确实是坏掉了,然后进行下一步的测试,用示波器观察它是否起振,结果跟预计的一样,它不起振,确实是坏掉了,还有一种问题,纯粹是软件的问题,这种验证方法,有引脚的可以测引脚,没有引脚的,可以仿真调试,实在不行那就凭借自己强大的大脑去思考,分析验证,一遍一遍的尝试,观察现象,比如一个定时器进不去中断,我们可以用调试,仿真的办法进行验证,然后查看手册,分析原因,查看库函数,调用,结果发现是一个定时器的标志位起了冲突,还有一个串口问题,也是标志位的错误,分析问题前提是弄懂问题,熟悉你手上的东西,还有一个问题是关还没有于库函数的问题,问题已经解决,但我目前还没弄懂,无法解释,明天有时间,我再看看,熟练使用工具,熟悉你手中的MCU,然后用各种验证方法,计算也好,分析也好,替代也好,总之,解决问题,和为什么会出现这种问题,搞懂,你就会少走很多弯路,会有很大的成长。

如果我们的MCU调试不通过,我们该如何测试?(未完待续)的更多相关文章

  1. python 单步调试初探(未完待续)

    pdb 调试: import pdb pdb.set_trace()     pudb 调试: http://python.jobbole.com/82638/

  2. 使用IntelliJ IDEA进行Python远程调试的需求(未完)

    使用IntelliJ IDEA进行Python远程调试的需求(未完) 在研究深度学习Machlearning时,有时候需要借助ubuntu搭建的tensorflow环境,另外也有越来越多的运算程序只能 ...

  3. iOS——关于创建真机调试证书(发布证书,测试(调试)证书,推送调试证书)、iOS开发者账号申请 请用开发者账号去iTunes connect 查看状态

  4. 无法自动调试 未能调试远程过程。这通常说明未在服务器上启用调试 WCF 托管在IIS上

    解决方案,把新建的网站的app.config修改下配置 <system.web> <!-- 设置 compilation debug="true" 可将调试符号插 ...

  5. ngrok内网穿透(微信调试:只试用于微信测试账号)

    一.简介 ngrok:https://ngrok.com 功能:就是把外网地址映射到本地的内网地址 缺点: 1.免费版生成的域名是随机的(由于我是用于调试,就没什么关系,如果是正式生产环境可能需要一个 ...

  6. 异常处理与调试6 - 零基础入门学习Delphi55(完)

    调试(Debug) 让编程改变世界 Change the world by program 使用调试窗口 为方便调式程序,Delphi中提供了许多调试窗口,给开发人员的调试工作带来了极大的便利. 断点 ...

  7. VS2017 启动调试报错:ID为{....}进程未启动解决方案

    今天遇到这么一个问题,打开VS启动调试,始终报错,如下图: 我重启VS,甚至重启电脑都不得行,那个进程号还在变化,就在网上查找资料,各式各样的解决方案,这里我记录我成功的方案. 打开项目文件地址,在解 ...

  8. 百度搜索_Selenium WebDriver 环境搭建和错误调试_chromedriver_win32必须下载否则无法测试chrome

    转自:  http://www.360doc.com/content/14/0821/18/597197_403634783.shtml zTree 东西不多,我也一直使用着原始的人工测试手段,随着内 ...

  9. 调试正常,签名打包提示 "x应用未安装。"

    今天在工作的时候遇到一个奇葩的问题,开发一个新项目,然后在AS中调试运行都是一切正常.打包签名后,缺无法安装,提示"x应用未安装."如图所示. 网上找了好多方法,比如,签名的时候要 ...

随机推荐

  1. activiti5.13工作流系列(一)-初识

    1.什么是工作流? 工作流就是让多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程,工作流由实体(Entity).参与者(Participant).流程定义(Flow Definition) ...

  2. 【C#/WPF】用System.Timers.Timer计时器做浮窗广告

    需求:鼠标静止一段时间后,显示浮窗广告. 思路:界面XAML写好一个专门显示浮窗广告的Canvas,先设为不可见Visibility=”Collapsed”,然后用System.Timers.Time ...

  3. BusyBox rcS&fstab配置

    rcS为系统初始化脚本,完成最开始的一些配置工作,可开启应用程序. #!/bin/shmount -a      ;mount文件,要mount的文件有fstab指定. . /etc/profile ...

  4. Zookeeper客户端使用

    参考链接: http://blog.csdn.net/jason5186/article/details/46314381 http://ifeve.com/zookeeper-path-cache/

  5. Codeforces 558C Amr and Chemistry 暴力 - -

    点击打开链接 Amr and Chemistry time limit per test 1 second memory limit per test 256 megabytes input stan ...

  6. Entity Framework应用:使用Code First模式管理视图

    一.什么是视图 视图在RDBMS(关系型数据库管理系统)中扮演了一个重要的角色,它是将多个表的数据联结成一种看起来像是一张表的结构,但是没有提供持久化.因此,可以将视图看成是一个原生表数据顶层的一个抽 ...

  7. ApplicationEventMulticaster not initialized - call 'refresh' before

    https://stackoverflow.com/questions/45318618/applicationeventmulticaster-not-initialized-call-refres ...

  8. 执行sql出现No Dialect mapping for JDBC type: -9错误

    name的数据类型是nvarchar吗?如果是改为varchar类型应该能运行,但是这个治标不治本,这是hibernate没映射nvarchar 刚才整理了一下varchar和nvarchar的区别, ...

  9. 关于树莓派 BOOBS 安装之后的初级操作

    以安装OpenCV 3.1.0为例 上一篇我们利用Raspberry 官方提供的工具 BOOBS安装了Raspbian 操作系统,下面让我们看一下如何简单的配置raspbian操作系统. 从树莓派官方 ...

  10. thinkphp3.2 常用入口文件

    <?php define('DIR_SECURE_FILENAME', 'default.html'); define('APP_PATH','./index/'); //项目路径 requir ...