前言
MDK的一个强大的功能就是提供软件仿真(注意:STM32F4不支持软件仿真),通过软件仿真,我们可以发现很多将要出现的问题,避免了下载到STM32里面来查这些错误,这样最大的好处是能很方便的检查程序存在的问题,因为在MDK的仿真下面,你可以查看很多硬件相关的寄存器,通过观察这些寄存器,你可以知道代码是不是真正有效。另外一个优点是不必频繁的刷机,从而延长了STM32的FLASH寿命(STM32的FLASH寿命≥1W次)。当然,软件仿真不是万能的,很多问题还是要到在线调试才能发现。
这里我们以战舰版跑马灯实验为例子。废话不多说了,接下来我们开始进行软件仿真。
第一步
主要检查芯片型号和晶振频率,其他的一般默认即可,具体操作如下:
(特别提醒:Xtal参数只用于软件仿真的,对于硬件仿真或者直接把程序下载到板子里是没有影响的。而且MDK5.35开始禁用外部晶振设置选项,所以是灰色的,显示undefined)
第二步
选择操作类型,以及设置DialogDLL等参数,具体操作如下:
选择:UseSimulator,即使用软件仿真。
选择:Runto main(),即跳过汇编代码,直接跳转到main函数开始仿真。
设置下方的DialogDLL分别为:DARMSTM.DLL和TARMSTM.DLL,Parameter均为:-pSTM32F103ZE,用于支持STM32F103ZE的软硬件仿真(即可以通过Peripherals选择对应的外设的对话框观察仿真结果)。
第三步
点击开始/停止仿真按键,开始仿真,出现如下界面
Register即寄存器窗口,这里一般用于查看程序运行时间即Sec处,以及一些比较高级的bug查找,主要就是对CortexM3内核寄存器R0~R14数据进行分析是否异常。
Disassembly即反汇编窗口,C语言代码与汇编代码比对显示,方便从汇编级别进行查看程序运行状态,也是属于比较高级的bug查找。
代码窗口,就是我们的工程代码了。左侧有黄色和绿色两个三角形,黄色三角形代表将要执行的代码,绿色的三角形表示当前光标所在代码,一般情况下,两个三角形是同步的,只要你点击其他位置查看代码时,绿色三角形就会移位。
CallStack Locals即调用关系和局部变量窗口,通过该窗口可以查看函数调用关系以及函数的局部变量,仿真调试时,很有用。
除了这些窗口,实际上还有一些其他窗口,可以根据实际需求去选择使用。
上图还有一个很重要的工具条即Debug工具条。
复位:其功能等同于硬件上按复位按钮。相当于实现了一次硬复位。按下该按钮之后,代码会重新从头开始执行。
执行到断点处:该按钮用来快速执行到断点处,有时候你并不需要观看每步是怎么执行的,而是想快速的执行到程序的某个地方看结果,这个按钮就可以实现这样的功能,前提是你在查看的地方设置了断点。
停止运行:此按钮在程序一直执行的时候会变为有效,通过按该按钮,就可以使程序停止下来,进入到单步调试状态。
执行进去:该按钮用来实现执行到某个函数里面去的功能,在没有函数的情况下,是等同于执行过去按钮的。
执行过去:在碰到有函数的地方,通过该按钮就可以单步执行过这个函数,而不进入这个函数单步执行。
执行出去:该按钮是在进入了函数单步调试的时候,有时候你可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数,回到函数被调用的位置。
执行到光标处:该按钮可以迅速的使程序运行到光标处,其实是挺像执行到断点处按钮功能,但是两者是有区别的,断点可以有多个,但是光标所在处只有一个。
汇编窗口:通过该按钮,就可以查看汇编代码,这对分析程序很有用。
堆栈局部变量窗口:通过该按钮,显示CallStack Locals 窗口,显示当前函数的局部变量及其值,方便查看。
观察窗口:MDK5提供2个观察窗口(下拉选择),该按钮按下,会弹出一个显示变量的窗口,输入你所想要观察的变量/表达式,即可查看其值,是很常用的一个调试窗口。
内存查看窗口:MDK5提供4个内存查看窗口(下拉选择),该按钮按下,会弹出一个内存查看窗口,可以在里面输入你要查看的内存地址,然后观察这一片内存的变化情况。是很常用的一个调试窗口。
串口打印窗口:MDK5提供4个串口打印窗口(下拉选择),该按钮按下,会弹出一个类似串口调试助手界面的窗口,用来显示从串口打印出来的内容。
逻辑分析窗口:该图标下面有3个选项(下拉选择),我们一般用第一个,也就是逻辑分析窗口(LogicAnalyzer),点击即可调出该窗口,通过SETUP按钮新建一些IO口,就可以观察这些IO口的电平变化情况,以多种形式显示出来,比较直观。
系统查看窗口:该按钮可以提供各种外设寄存器的查看窗口(通过下拉选择),选择对应外设,即可调出该外设的相关寄存器表,并显示这些寄存器的值,方便查看设置的是否正确。
以上是比较常用的,当然不是每次都用得着,具体看你程序调试时候的需求。
第四步
点击LogicAnalyzer并点击Setup新建两个信号PORTB.5和PORTE.5,具体操作如下:
两个信号的DisplayType都选择bit,然后点击Close关闭对话框,可以看到逻辑分析窗口出现两个信号,如下图所示。
第五步
点击执行到断点处即。运行一段时间之后,按关闭按键,暂停仿真回到逻辑分析窗口,得到的波形如下图所示:
这里注意:Gird要调节到0.2s左右比较合适,可以通过Zoom里面的In按钮来放大波形,通过Out按键来缩小波形,或者按All显示全部波形。从上图也可以看到PORTB.5和PORTE.5交替输出,从这里就可以判断代码的准确性了。
电子元器件基础知识
一、电阻
电阻在电路中用“R”加数字表示,如:R1表示编号为1的电阻。电阻在电路中的主要作用为:分流、限流、分压、偏置等。
1、参数识别:电阻的单位为欧姆(Ω)、千欧(KΩ)、兆欧(MΩ)等。
换算方法是:1兆欧=1000千欧=1000000欧
电阻的参数标注方法有3种,即直标法、色标法和数标法。
a、数标法主要用于贴片等小体积的电路,
如: 472 表示 47×100Ω(即4.7K); 104则表示100K
b、色环标注法使用最多,现举例如下:
四色环电阻 五色环电阻(精密电阻)
2、电阻的色标位置和倍率关系如下表所示:
颜色 有效数字 倍率 允许偏差(%)
银色 x0.01 ±10 金色 x0.1 ±5
黑色 0 0 棕色 1 x10 ±1
红色 2 x100 ±2 橙色 3 x1000
黄色 4 x10000 绿色 5 x100000 ±0.5
蓝色 6 x1000000 ±0.2 紫色 7 x10000000 ±0.1
灰色 x100000000 白色 9 x1000000000
例如,红,黄,棕,金 表示240欧
二、电容
1、电容在电路中一般用“C”加数字表示(如C13表示编号为13的电容)。电容是由两片金属膜紧靠,中间用绝缘材料隔开而组成的元件。电容的特性主要是隔直流通交流。
电容容量的大小就是表示能贮存电能的大小,电容对交流信号的阻碍作用称为容抗,它与交流信号的频率和电容量有关。
容抗XC=1/2πf c (f表示交流信号的频率,C表示电容容量)
电话机中常用电容的种类有电解电容、瓷片电容、贴片电容、独石电容、钽电容和涤纶电容等。
2、识别方法:电容的识别方法与电阻的识别方法基本相同,分直标法、色标法和数标法3种。电容的基本单位用法拉(F)表示,其它单位
还有:毫法(mF)、微法(uF)、纳法(nF)、皮法(pF)。
其中:1法拉=10^3毫法=10^6微法=10^9纳法=10^12皮法
字母表示法:1m=1000 uF 1n=1000PF
数字表示法:一般用三位数字表示容量大小,前两位表示有效数字,第三位数字是倍率。
如:102表示10×10^2PF=1000PF 224表示22×10^4PF=0.22 uF
3、电容容量误差表
符 号 F G J K L M
允许误差 ±1% ±2% ±5% ±10% ±15% ±20%
如:一瓷片电容为104J表示容量为0. 1 uF、误差为±5%。
三、晶体二极管
晶体二极管在电路中常用“D”加数字表示,如: D5表示编号为5的二极管。
1、作用:二极管的主要特性是单向导电性,也就是在正向电压的作用下,导通电阻很小;而在反向电压作用下导通电阻极大或无穷大。
正因为二极管具有上述特性,无绳电话机中常把它用在整流、隔离、稳压、极性保护、编码控制、调频调制和静噪等电路中。
电话机里使用的晶体二极管按作用可分为:
整流二极管(如1N4004)、隔离二极管(如1N4148)、肖特基二极管(如BAT85)、发光二极管、稳压二极管等。
2、识别方法:二极管的识别很简单,小功率二极管的N极(负极),在二极管外表大多采用一种色圈标出来,有些二极管也用二极管专用符号来表示P极(正极)或N极(负极),也有采用符号标志为“P”、“N”来确定二极管极性的。
发光二极管的正负极可从引脚长短来识别,长脚为正,短脚为负。
3、测试注意事项:
用数字式万用表去测二极管时,红表笔接二极管的正极,黑表笔接二极管的负极,此时测得的阻值才是二极管的正向导通阻值.
4、常用的1N4000系列二极管耐压比较如下:
型号 1N4001 1N4002 1N4003
1N4004 1N4005 1N4006 1N4007
耐压(V) 50 100 200 400 600 800 1000
电流(A) 均为1
四、稳压二极管
稳压二极管在电路中常用“ZD”加数字表示,如:ZD5表示编号为5的稳压管。
1、稳压二极管的稳压原理:稳压二极管的特点就是击穿后,其两端的电压基本保持不变。这样,当把稳压管接入电路以后,若由于电源电压发生波动,或其它原因造成电路中各点电压变动时,负载两端的电压将基本保持不变。
2、故障特点:稳压二极管的故障主要表现在开路、短路和稳压值不稳定。在这3种故障中,前一种故障表现出电源电压升高;后2种故障表现为电源电压变低到零伏或输出不稳定。
常用稳压二极管的型号及稳压值如下表:
型 号 1N4728 1N4729 1N4730 1N4732 1N4733 1N4734 1N4735 1N4744 1N4750 1N4751 1N4761
稳压值 3.3V 3.6V 3.9V 4.7V 5.1V 5.6V 6.2V 15V 27V 30V 75V
五、电感
电感在电路中常用“L”加数字表示,如:L6表示编号为6的电感。电感线圈是将绝缘的导线在绝缘的骨架上绕一定的圈数制成。
直流可通过线圈,直流电阻就是导线本身的电阻,压降很小;当交流信号通过线圈时,线圈两端将会产生自感电动势,自感电动势的方向与外加电压的方向相反,阻碍交流的通过,所以电感的特性是通直流阻交流,频率越高,线圈阻抗越大。
电感在电路中可与电容组成振荡电路。
电感一般有直标法和色标法,色标法与电阻类似。如:棕、黑、金、金表示1uH(误差5%)的电感。
电感的基本单位为:亨(H)
换算单位有:1H=10^3mH=10^6uH。
六、变容二极管
变容二极管是根据普通二极管内部 “PN结” 的结电容能随外加反向电压的变化而变化这一原理专门设计出来的一种特殊二极管。
变容二极管在无绳电话机中主要用在手机或座机的高频调制电路上,实现低频信号调制到高频信号上,并发射出去。
在工作状态,变容二极管调制电压一般加到负极上,使变容二极管的内部结电容容量随调制电压的变化而变化。
变容二极管发生故障,主要表现为漏电或性能变差:
(1)发生漏电现象时,高频调制电路将不工作或调制性能变差。
(2)变容性能变差时,高频调制电路的工作不稳定,使调制后的高频信号发送到对方被对方接收后产生失真。
出现上述情况之一时,就应该更换同型号的变容二极管。
七、晶体三极管
晶体三极管在电路中常用“Q”加数字表示,如:Q17表示编号为17的三极管。
1、特点:晶体三极管(简称三极管)是内部含有2个PN结,并且具有放大能力的特殊器件。它分NPN型和PNP型两种类型,这两种类型的三极管从工作特性上可互相弥补,所谓OTL电路中的对管就是由PNP型和NPN型配对使用。
电话机中常用的PNP型三极管有:A92、9015等型号;
NPN型三极管有:A42、9014、9018、9013、9012等型号。
2、晶体三极管主要用于放大电路中起放大作用,在常见电路中有三种接法。
为了便于比较,将晶体管三种接法电路所具有的特点列于下表,供参考。
名称 共发射极电路 共集电极电路(射极输出器) 共基极电路
输入阻抗 中(几百欧~几千欧) 大(几十千欧以上) 小(几欧~几十欧)
输出阻抗 中(几千欧~几十千欧) 小(几欧~几十欧) 大(几十千欧~几百千欧)
电压放大倍数 大 小(小于1并接近于1) 大
电流放大倍数 大(几十) 大(几十) 小(小于1并接近于1)
功率放大倍数 大(约30~40分贝) 小(约10分贝) 中(约15~20分贝)
频率特性 高频差 好
应用多级放大器中间级,低频放大 输入级、输出级或作阻抗匹配用 高频或宽频带电路及恒流源电路
八、场效应晶体管放大器
1、场效应晶体管具有较高输入阻抗和低噪声等优点,因而也被广泛应用于各种电子设备中。尤其用场效管做整个电子设备的输入级,可以 获得一般晶体管很难达到的性能。
2、场效应管分成结型和绝缘栅型两大类,其控制原理都是一样的。
3、场效应管与晶体管的比较
1)场效应管是电压控制元件,而晶体管是电流控制元件。在只允许从信号源取较少电流的情况下,应选用场效应管;而在信号电压较低,又允许从信号源取较多电流的条件下应选用晶体管。
2)场效应管是利用多数载流子导电,所以称之为单极型器件,而晶体管是即有多数载流子,也利用少数载流子导电。被称之为双极型器件。
3)有些场效应管的源极和漏极可以互换使用,栅压也可正可负,灵活性比晶体管好。
4)场效应管能在很小电流和很低电压的条件下工作,而且它的制造工艺可以很方便地把很多场效应管集成在一块硅片上,因此场效应管在大规模集成电路中得到了广泛的应用。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。