我们拿到一款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. activemq用户手册

    1 JMS 在介绍ActiveMQ之前,首先简要介绍一下JMS规范. 1.1 JMS的基本构件 1.1.1 连接工厂 连接工厂是客户用来创建连接的对象,例如ActiveMQ提供的ActiveMQCon ...

  2. Android开发系列(十七):读取assets文件夹下的数据库文件

    在做Android应用的时候,不可避免要用到数据库.可是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客攻克了我前面博客中 ...

  3. 【Unity笔记】关于UGUI的根节点Canvas

    创建UGUI物体时,会自动创建Canvas物体作为所有UGUI的根节点.该物体身上有个Canvas脚本,Render Mode渲染模式选项: Screen Space - Overlay:即使场景中没 ...

  4. MySql 生成日期随机数

    select DATE_ADD(sd, INTERVAL FLOOR(1+ RAND() * ((ABS(UNIX_TIMESTAMP(ed) - UNIX_TIMESTAMP(sd))) - 1)) ...

  5. [JavaScript]JS调用PHP和PHP调用JS的方法举例

    http://blog.csdn.net/pleasecallmewhy/article/details/8592571 body { background: #C7EDCC !important; ...

  6. java-jsp与servlet

    Java Servlet 是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java 类. 每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服 ...

  7. C#程序运行流程

    我们写好的C#代码操作系统是如何能识别呢,我们都知道操作系统只能认识二进制 机器代码,下面用图来表示 因为C#是安全的托管代码 同时CLR会在内存中创建应用程序域 托管代码:被CLR管理的代码 非托管 ...

  8. (转)SDL2.0在mfc窗口中显示yuv的一种方法

    DWORD ThreadFun() {    //用mfc窗口句柄创建一个sdl window    SDL_Window * pWindow = SDL_CreateWindowFrom( (voi ...

  9. 最简单的基于FFMPEG+SDL的音频播放器 ver2 (採用SDL2.0)

    ===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...

  10. 关于VS2012连接MySql数据库时无法选择数据源

    您的C#开发工具是用VS2012吗?    No! return;    您的数据库用的是MySql吗?     No! return;    您新建ADO.NET数据实体模型的时候选择数据源的时候没 ...