历史上的今天
今天是:2025年04月18日(星期五)
2019年04月18日 | Keil的软件仿真和硬件仿真
2019-04-18 来源:eefocus
一、软件仿真
Keil有很强大的软件仿真功能,通过软件仿真可以发现很多将要出现的问题,Keil的仿真可以查看很多硬件相关的寄存器,通过观察这些寄存器值的变化可以知道代码有没有正常运行。这样可以避免频繁下载程序,延长单片机Flash寿命。
开始仿真之前,先配置一些选项。
1.在工程设置里设置好芯片型号和晶振频率。

2.在“Debug”选项卡中选择“Use Simulator”,表示使用软件仿真;选择“Run to main()”则表示跳过汇编代码,直接跳转到main函数开始仿真。设置下面的“Dialog DLL”项为“DARMSTM.DLL”和“TARMSTM.DLL”;parameter项为“-pSTM32F103C8”,用于设置支持STM32F103C8的软硬件仿真。

3.点击开始仿真,这个时候会多出来一个工具条,就是Debug工具条。

1 2 3 4 5 6 7 8 9 10 11 12 13 14
1:复位,其功能等同于硬件上按复位按钮,相当于实现了一次硬复位。按下该按钮后,代码会重新从头开始执行。
2:执行到断点处,按按钮用来快速执行到断点处,有时候并不需要观看每步时怎么执行的,而是想快速执行到程序的某个地方看结果,这个按钮就可以实现这样的功能,前提是已在查看的地方设置了断点。
3:停止运行,此按钮在程序一直执行的时候变为有效,可以使程序停止下来进入到单步调试状态。
4:执行进去,该按钮用来实现执行到某个函数里面去的功能,在没有函数的情况下等同于执行过去按钮。
5:执行过去,在碰到有函数的地方,通过该按钮就可以单步执行过这个函数,而不进入这个函数单步执行。
6:执行出去,该按钮是进入了函数单步调试的时候,有时候可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数回到函数被调用的位置。
7:执行到光标处:该按钮可以迅速使程序运行到光标处,与执行到断点处按钮功能类似。
8:汇编窗口,通过该按钮可以查看汇编代码,这对分析程序很有用。
9:堆栈局部变量窗口,通过该按钮可以显示Call Stack+Locals窗口,显示当前函数的局部变量及其值,方便查看。
10:观察窗口,MDK5提供2个观察窗口(下拉选择),该按钮按下则弹出一个显示变量的窗口。输入想观察的变量或表达式,即可查看其值,是很常用的调试窗口。
11:内存查看窗口,MDK5提供4个内存查看窗口,按下按钮,则弹出一个内存查看窗口,可以在里面输入要查看的内存地址,然后观察这一片内存的变化情况。
12:串口打印窗口,MDK5提供4个串口打印窗口。按下该按钮,则弹出一个类似串口调试助手界面的窗口,用来显示从串口打印出来的内容。
13:逻辑分析窗口,该图标下面有3个选项,一般用第一个,也就是逻辑分析窗口。通过SETUP按钮新建一些IO口,于是可以观察这些IO的电平变化情况,并以多种形式显示出来,比较直观。
14:系统查看窗口,该按钮可以提供各种外设寄存器的查看窗口(通过下拉选择),选择对应外设即可调出该外设的相关寄存器表,并显示这些寄存器的值,方便查看设置是否正确。
二、硬件仿真
硬件仿真则是程序下载到单片机中,进行的仿真,是程序实际在单片机中运行的情况。

需要选择后面那个选项,然后在下拉单里选择自己的仿真器。然后后面步骤和软件仿真一样。
注:要在逻辑硬件仿真里使用逻辑分析仪之类的工具,要开“Trace”


下一篇:Keil精确测量代码运行时间
史海拾趣
|
软误差是半导体器件中无法有意再生的“干扰”(即数据丢失)。它是由那些不受设计师控制的外部因素所引起的,包括α粒子、宇宙射线和热中子。许多系统能够容忍一定程度的软误差。例如,如果为音频、视频或静止成像系统设计一个预压缩捕获缓冲 ...… 查看全部问答> |
|
关于写wince6的spi应用,如何配置deviceiocontrol来初始呢?急求!!! 小弟最近在写wince6一些设备的测试应用, createfile打开spi设备后,该如何初始化spi的基本配置呢? 用deviceiocontrol吗?但是不知道设置哪些参数来初始化 请各位帮帮忙!… 查看全部问答> |
|
各位嵌入式爱好者网友: 我先说一下,我今年27了,一直在做vb的开发,老感觉待不下去了,想去做一些事情,例如创业。我一直是搞技术的,希望通过技术开发一款产品,这点我可以找合作伙伴一起做。 后来就找到了嵌入式开发这里。我要 ...… 查看全部问答> |
|
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace soundpdatest { public partial class Form ...… 查看全部问答> |
|
9月初的(成都)电子展的规模据说近五百家,我们的两个主要的竞争对手都第一次参加了,我们老大想参加,但实际上我们目前在西南的客户很少。不太了解那边的状况(我们公司提供电子生产制造中用的一种高精度测试设备,目前的主要客户在沿海地区)。 ...… 查看全部问答> |
|
1 最高波特率是多少?手册上说:1.5.2 Maximum baud rateBHigh is the highest baud rate for which the deviation still does not exceed the&n ...… 查看全部问答> |
|
2440启动代码中有段代码设置大小端如下: ASSERT :DEF:ENDIAN_CHANGE [ ENDIAN_CHANGE ASSERT :DEF:ENTRY_BUS_WIDTH [ ENTRY_BUS_WIDTH=32 b ChangeBigEndian ;DCD 0xea000007 ] [ ENTRY_BUS_WIDTH=16 andeq r14,r7,r0,lsl #20 ;DCD 0x0007 ...… 查看全部问答> |
|
最开始的时候是手册看的没感觉,就去看代码(发现更没感觉),主要是寄存器定义不清楚,后来对着User Guide看代码就轻松很多。 后来是要用到某个模块,就图简单,从范例里面把设置代码抄过来。… 查看全部问答> |




