此文章针对MDK对于stm32 f1系列芯片内容的仿真,keil对于f4系列目前不提供仿真功能

keil mdk 镜像 keil mdk arm教程_串口

1.设置参数

1.1点击这个按键

keil mdk 镜像 keil mdk arm教程_单片机_02

1.2检查芯片型号和晶振频率如下图

keil mdk 镜像 keil mdk arm教程_arm_03

1.3参数按照下图图示所设置

选择: Use Simulator ,即使用软件仿真。选择 Run to main() main(),即跳过汇编代码,直接跳转到 main 函数开 始仿真。设置下方的: Dialog DLL 分别为: DARMSTM.DLL

和 TARMSTM.DL L Parameter 均为: p STM32F103 ZE ,用于设置支持 STM32F10 3ZE 的软硬件仿真(即可以通过 Perip herals 选择对应外 设的对话框观察仿真 结果)。最后点击 OK ,完成设置 。

keil mdk 镜像 keil mdk arm教程_stm32_04


1.4点击

keil mdk 镜像 keil mdk arm教程_串口_05


开始仿真

出现下图界面

keil mdk 镜像 keil mdk arm教程_arm_06


debug工具条各功能如下

keil mdk 镜像 keil mdk arm教程_stm32_07


设置断点

keil mdk 镜像 keil mdk arm教程_stm32_08


点击RST旁边的

keil mdk 镜像 keil mdk arm教程_单片机_09

按钮,运行至断点处

1.5查看串口状态

keil mdk 镜像 keil mdk arm教程_单片机_10

可以看到串口1及其对应寄存器初始化前后的状态

keil mdk 镜像 keil mdk arm教程_串口_11


不过比较常用的是检测串口的输出

keil mdk 镜像 keil mdk arm教程_arm_12


执行过printf函数之后,串口会依次打印显示信息

keil mdk 镜像 keil mdk arm教程_keil mdk 镜像_13


这里可以为了调试方便加一些输出信息(printf),便于找bug

2.逻辑分析窗口

点击

keil mdk 镜像 keil mdk arm教程_单片机_14

进入逻辑分析窗口

点击下图的

keil mdk 镜像 keil mdk arm教程_keil mdk 镜像_15

新建监视的引脚

输入为这样

keil mdk 镜像 keil mdk arm教程_串口_16


回车自动变为

keil mdk 镜像 keil mdk arm教程_stm32_17

比如你要监视PE5(GPIOE的GPIO_PIN_5),你需要输入PORTE.5,回车可以看到下图所示,表示添加成功

这里还添加了PORTB.5

keil mdk 镜像 keil mdk arm教程_单片机_18

注意需要设置Display Type为Bit。然后点击close关闭对话框

可以看到逻辑分析窗口如下图

keil mdk 镜像 keil mdk arm教程_arm_19

运行一段时间后,点击中断按钮,显示如下图所示(运行的时候发现没有产生波形不要慌,中断之后,调整Grid(变大/变小),可能是你的比例尺没有设置好)

keil mdk 镜像 keil mdk arm教程_单片机_20

3.按键仿真

按键仿真也是要通过你设置的按键的io口的高低电平来仿真

首先找到你的程序对应按键的io口

比如这样的定义

keil mdk 镜像 keil mdk arm教程_串口_21


对应关系为

按键 引脚

KEY0 PE4

KEY1 PE3

KEY2 PE2

WK_UP PA0

KEY4 PE1

或者这种

keil mdk 镜像 keil mdk arm教程_keil mdk 镜像_22


然后再点击

Peripherals ->General Purpose I/O -> GPIO E ,弹出 GPIOE 的查看窗口,如图

keil mdk 镜像 keil mdk arm教程_keil mdk 镜像_23


确认你的按键初始化时设置的是上拉输入还是下拉输入

例如

keil mdk 镜像 keil mdk arm教程_串口_24


因为这里我的PE1,PE2,PE3,PE4对应的都是上拉输入,所以要在这里将对应的4位勾选上

keil mdk 镜像 keil mdk arm教程_串口_25


后续取消勾选表示对应按键被按下,触发相应的操作,恢复勾选表示按下按键之后松开,比如按下PE3对应的按键

keil mdk 镜像 keil mdk arm教程_单片机_26

设置为下拉输入的则相反

对应可以查看key值是否与自己设置的相符

keil mdk 镜像 keil mdk arm教程_stm32_27


我设置的按下PE2的返回值为2.

最后结束仿真需要再一次按键(右5棒棒糖)

keil mdk 镜像 keil mdk arm教程_arm_28


希望这篇文章能对初次使用MDK进行仿真的小伙伴有帮助。