一、软件的初始化设置
初始设置可以按照下图,这里我使用的是STM32F103C8T6,所以单片机型号为STM32F103C8,这个设置在Debug目录下。然后进行时钟的设置,我们板上晶振为8M,这里将时钟改为8.
或许有人想问如果是别的型号单片机如何找这些参数呢?如下图,点击文件,选Device Database.....
我这里可以选两种,一种为51系列的,我们直接选第一个,确定。
进来后可以发现这里面还是可以选很多型号的,找到我们的STM32F103C8,将下面的框拉到底,如下:
二、调试界面的介绍
1.菜单栏和工具栏
复位按钮:点击这个按钮会使目标硬件复位,功能等同于硬件上的复位按钮。
全速运行/继续执行:开始或继续执行程序,用来快速执行到断点处。如果程序已经停在一个断点上,点击这个按钮将继续执行程序直到遇到下一个断点或程序结束。也就是说如果没有断点,程序会一直运行。
停止执行:停止程序执行。这个按钮将中止当前正在运行的程序。
单步执行:执行程序中的下一行代码。如果当前行调用了函数,将进入该函数内部。
单行运行:执行下一行代码,但是不进入函数内部。如果当前行调用了函数,将执行整个函数,然后停在下一行。
单步退出:当运行在函数内部时,这个按钮将执行完当前函数的剩余代码,并停在返回点之后的下一行。
运行到光标位置 :程序执行将继续进行,直到到达当前代码编辑器中光标所在的行。
跳转PC指针:这个按钮允许你在调用栈中上移一级,这对于检查函数调用的历史和来龙去脉很有用
2.主界面窗口设置
Command窗口:它显示与调试会话相关的信息,包括用户输入的调试命令和由调试器返回的消息。它允许用户直接输入命令,例如管理断点、控制程序执行等。
汇编窗口:显示当前执行的汇编代码,与源代码视图同步,有助于理解C/C++代码是如何转换为处理器指令的,以及在调试时实际执行的指令。
符号窗口:列出了所有编译后的符号,包括函数、变量和类型定义。这个窗口让你可以确认是否有符号未定义或检查变量的地址和值。
寄存器窗口:显示处理器内核的寄存器值。有助于理解程序的当前状态和执行流程,尤其是在硬件层面的调试中。
回调局部变量:当调试时停留在断点时,这里会显示函数的调用关系,以及压进的变量值,可以在这里看到函数的调用关系和传递给函数的参数值。这个一般和断点配合,反推异常调用以及查看局部变量,无需使用变量查看串口。
变量显示:用于查看单片机中某个变量的值,一般多用于查看全局变量以及外设寄存器数值、表达式显示变量,也可直接操作变量值。
内存查看窗口:显示内存地址以及地址处内存的数据,一般可查看变量以及寄存器数据、函数地址等。可以在里面输入你要查看的内存地址,然后观察这一片内存的变化情况。
逻辑分析窗口 :按下该按钮会弹出一个逻辑分析窗口, 通过 SETUP 按钮新建一些 IO 口,就可以观察这些 IO 口的电平变化情况 ,以多种形式显示出来,比较直观。
虚拟串口窗口:该按钮按下,会弹出一个类似串口调试助手界面的窗口,用来显示从串口打印出来的内容。 需要注意的是在硬件调试时无法使用,只能从硬件上获取串口信息。
三、进入调试
四、keil仿真常用的操作
1. 查看某变量的值:
或者点击Watch窗口调出显示栏,如下,在Watch中:
这两种都可以查看,进去后如下:
运行一轮后,我们发现a的值加1了,如下图:
当然,这还可以查看数组等内容都可以,如下:
2.查看IO状态或控制IO输出
当然,如果你设置的为输入模式,还可以通过在相应IOI口框打勾来控制输入电平进行调试。
3.波形输出
假如要查看PC13,可以输入PORTC.13回车。
关闭后,点击运行就可以看见波形输出了。
注:如果运行后没波形而停止后才显示波形,解决方法:
还有一些其他功能这里不再一一叙述了,如下: