本小节介绍 KEIL 的常用调试方法,部分内容对 51 单片机也适用。KEIL 调试模式分为软件仿真和在线仿真。所谓软件仿真即用电脑模拟 51 或 32 的工作过程,可以在没有实际单片机开发板存在的情况下进行模拟运行。而硬件仿真则需要实际开发板的支持才能够进行(当然你的电脑也必不可少)。本节内容以 STM32F103RET6 为例进行介绍,并且使用软件仿真的功能进行模拟,这样的介绍将更全面一些。而硬件仿真可能会在软件仿真的基础上减少一些功能,这些就视具体情况而定了。不管是软件仿真还是硬件仿真(关于如何配置的问题可参考 STM32 工程模板相关内容),首先都是使用以下按钮进入调试模式:之后就会进入如下界面:这个界面和平常的编辑界面有很大不同,增加了不少调试功能。首先介绍基本的功能:1、Reset这个按钮用于将单片机复位的(类似于用复位按键复位),复位之后程序回到最开始处,即复位中断处理函数处:如果说你想让单片机在进入调试模式后直接运行到 main(),那么你可以在退出调试模式的情况下设置这个:这样程序将自动在 main 的第一条指令停止(在此之前的代码自动运行完了):注意:黄色光标指向的语句是准备执行的语句,但还没开始执行。2、Run(F5)使用这个按钮将使程序一直处于运行状态,直到代码运行到你设置的断点才会停止(设置的断点有可能在汇编位置,注意查看)。进入全速运行后,全速运行按钮变成灰色,而旁边的按钮将显示为红色,用于停止全速运行(此时程序将停在当前执行的代码里面):3、Step(F11)这个按钮用于单步调试。注意这里的单步是汇编层面上的,而不是 C 语言层面:这也就意味着将一步一步的执行每一条汇编指令,从另一个角度看,就是它能够深入到每一个函数内执行,对于精确定位代码很有帮助。4、Step Over(F10)如果你不想深入到每一个函数内(比如延时函数,你不可能一直在那单步运行吧),那么使用该按钮是不错的选择:使用这个调试按钮将直接跳过函数执行(不是说这个函数不执行,而是它能快速执行完这个函数体,并准备执行下一条语句),这样就可以节省不少按钮点击次数。5、Step Out(CTR+F11)当你不幸进入了函数内执行,怎么办,就是使用这个按钮了:这个按钮能快速执行完当前函数的剩下语句,然后跳出该函数体,准备执行下一条语句。6、Run to Cursor Line(CTR+F10)如果你觉得打断点太麻烦了,那么就试试这个按钮,这个按钮能直接运行到你的光标处(当然光标指示的语句还没开始运行呢)。按下按钮的效果就是这样(注意黄色光标位置和蓝色光标一样了,已经重合了):7、Show Next Statement文件切来切去,发现不知道现在的代码运行到哪里去了,怎么办?那试试这个光标。即使你把当前运行代码的源文件关闭了,使用它之后也会自动打开源文件,然后定位光标,相当方便。8、Nevigate使用 F12 跳转挺方便的,那怎么跳回去呢?就是这两个按钮了,往前往后跳就随你意了,不过这个跳转次数有限,别跳转太多哦。9、Bookmark如果使用 Nevigate 不是很方便的话,那么试试书签如何?这个可以10、Breakpoint如果你希望程序运行到某一段代码的时候停下来(断点位置还未执行),那么这些按钮将实现你的要求(当然你的配合前面的代码运行按钮)。当然断点设置可以直接在代码的左边位置直接设置:11、搜索有没有搞错,搜索也属于调试范畴?对我来说还真是。快捷键 CTRL+F,替换是 CTRL+H。很多时候你并不能找到一个标志符或者变量在哪里使用了,那么试试搜搜功能吧。它能搜到工程内所有你想要的符号。注意,搜索区域可以设置范围,可以通过以下选项选择你的搜索区域。12、Commd这个是命令输出窗口,如果你在调试过程中遇到问题了,那么看看这个窗口给你输出了什么信息吧。
以上内容都是鱼鹰亲自使用过的功能,感觉了解这些东西还是很有必要的,所以如果想让你的调试更便捷的话,那就试试这些功能吧。
0 评论