MDK 的一个强大的功能就是提供软件仿真,通过软件仿真,我们可以发现很多将要出现的问题,避免了下载到 STM32 里面来查这些错误,这样最大的好处是能很方便的检查程序存在的问题,因为在 MDK 的仿真下面,你可以查看很多硬件相关的寄存器,通过观察这些寄存器,你可以知道代码是不是真正有效。另外一个优点是不必频繁的刷机,从而延长了 STM32 的 FLASH 寿命( STM32 的 FLASH 寿命≥ 1W 次)。 当然,软件仿真不是万能的,很多问题还是要到在线调试发现 , 在开始软件仿真之 前,先检查一下配置是不是正确,在 IDE 里面点击“ Target Options... ” 工具条 ,确定 Target 选项卡内容主要检查芯片型号和晶振频率,其他的一般默认就可以 , 确认了芯片以及外部晶振频率( 8.0Mhz )之后,基本上就确定了 MDK3.80A 软件仿真的硬件环境了,接下来,我们再点击 Debug 选项卡,我们主要要确认的是 Use Simulator 是否选择(因为如果选择右边的 Use ,那就是用 ULINK 进行硬件 Debug 了), 其他的采用默认的就可以。确认了这项之后,我们便可以选择 OK ,退出 Options for Target 对话框了。接下来,我们点击 “开始 / 停止”仿真按钮,开始仿真,可以发现,多出了一个工具条,这就是 Debug 工具条,这个工具条在我们仿真的时候是非常有用的,其中一个常用的是串口打印窗口:该按钮按下,会弹出一个类似串口调试助手界面的窗口,用来显示从( )(填空 1 ,中文)打印出来的内容。我们把光标放到源码的某行的空白处,然后鼠标左键,可以看到在该行的左边出现了一个红框,即表示设置了一个( )(填空 2, 中文)(也可以通过鼠标右键弹出菜单来加入),再次则取消。 然后我们点击工具按钮“执行到断点处” ,执行到该断点处, 我们现在先不忙着往下执行,点击菜单栏的( )(填空 3 ,英文)。可以看到,有很 多外设可以查看,从中可以查看到某外设运行到断点处的相关寄存器的值,从而判断我们写的代码是否有问题,只有这里的设置正确了之后,可能在硬件上正确的执行。