我们拿到一款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. Python 并行分布式框架 Celery

    Celery 简介 除了redis,还可以使用另外一个神器---Celery.Celery是一个异步任务的调度工具. Celery 是 Distributed Task Queue,分布式任务队列,分 ...

  2. 人工智能时代,应立即学习python

    人工智能时代,应立即学习python 应用:web开发,自动化运维开发,自动化测试,数据分析,机器学习 1.python 快速易学习2.python 基于web开发(zhihu:tornad web框 ...

  3. thrift与protobuffer的区别

    thrift由facebook出品,protobuffer由google出品: 下面对比一下这两个的区别.参考:http://zhidao.baidu.com/link?url=yNLBeHhWokf ...

  4. Android——控件AutoCompleteTextView 自动提示

    Android:控件AutoCompleteTextView 自动提示 在输入框中输入我们想要输入的信息就会出现其他与其相关的提示信息,这种效果在Android中是用AutoCompleteTextV ...

  5. java资料——链表(转)

    链表 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点包括两个 ...

  6. Python3分别将list、numpy数组内容写入txt文件中

    1.python保存numpy数据: numpy.savetxt("result.txt", numpy_data) 2.保存list数据: file=open('data.txt ...

  7. node-webkit连接mysql

    一.安装node.js mysql驱动库 node-webkit里面没有mysql模块的,我们需要安装mysql模块.我们可以使用npm(Node package manager)进行安装.这里使用到 ...

  8. [oracle] 安装卸载及常见问题

    (1)安装oracle10g备注: ① 检查安装版本是否复合安装主机的硬件要求,避免版本不兼容.如64位的oracle就不能在x86的机器上运行安装. ② 检查安装主机是否满足oracle的硬件要求, ...

  9. selenium测试(Java)--操作cookie(十七)

    package com.test.cookies; import org.openqa.selenium.Cookie; import org.openqa.selenium.JavascriptEx ...

  10. C++ Primer学习笔记(一)

    始终对C++念念不忘,看过 一个32岁入门的70后程序员给我的启示  之后,心情激荡,更是一发不可收拾. 认真地说,我不是一个执着的人,见异思迁,好读书而不求甚解,兼之情绪化(~~ 某些方面),于是怒 ...