本节介绍KEIL的常用调试方法,部分内容也适用于51单片机。
KEIL调试方式分为软件仿真和在线仿真。 所谓软件模拟就是用计算机模拟51或32的工作过程,无需实际的单片机开发板存在就可以进行模拟。 硬件模拟需要有实际开发板的支持(当然你的电脑也是必不可少的)。
本节以STM32F103RET6为例,使用软件仿真功能进行仿真。 这样的介绍会更加全面。 硬件模拟可能会在软件模拟的基础上减少一些功能,这要根据具体情况而定。
无论是软件模拟还是硬件模拟(有关如何配置的问题单片机仿真软件教程,请参考STM32工程模板的相关内容),首先使用以下按钮进入调试模式:
然后你会进入如下界面:
这个界面与通常的编辑界面有很大不同,增加了很多调试功能。
首先介绍一下基本功能:
1.重置
该按钮用于重置微控制器(类似于使用重置按钮)。 复位后,程序回到开头,即复位中断处理函数:
如果你希望微控制器在进入调试模式后直接运行到main(),那么你可以在退出调试模式时设置:
这样程序就会自动停在main的第一条指令处(在此之前的代码会自动运行完毕):
注意:黄色光标所指的语句是准备执行的语句,但尚未开始执行。
2. 运行(F5)
使用此按钮将使程序保持运行,直到代码到达您设置的断点(断点可能位于汇编位置,因此请仔细检查)。
进入全速运行后,全速运行按钮会变成灰色,旁边的按钮会显示为红色,用于停止全速运行(此时程序会停止在当前正在执行的程序中)代码):
3. 步骤(F11)
该按钮用于单步调试。 请注意,这里的单步是在汇编级别,而不是 C 语言级别:
这意味着每条汇编指令都会一步步执行。 从另一个角度来说,它可以深入到每个函数中执行,这对于准确定位代码非常有帮助。
4. 跨步 (F10)
如果你不想深入了解每个功能(比如一个延迟功能,你总不能一步运行它),那么使用这个按钮是一个不错的选择:
使用这个调试按钮会直接跳过函数执行(不是说函数不会被执行,而是可以快速执行函数体并准备执行下一条语句),这样可以节省大量的按钮点击次数。
5. 退出 (CTR+F11)
当您不幸在函数中进入执行状态时该怎么办? 只需使用这个按钮:
该按钮可以快速执行当前函数的剩余语句,然后跳出函数体,准备执行下一条语句。
6. 运行到光标所在行(CTR+F10)
如果你觉得断点太麻烦,那就试试这个按钮吧。 这个按钮可以直接运行到你的光标处(当然,光标指示的语句还没有开始运行)。
按下按钮的效果是这样的(注意黄色光标和蓝色光标的位置是一样的,它们已经重叠了):
7. 显示下一条语句
我来回切文件,发现不知道当前代码运行在哪里。 我应该怎么办? 然后试试这个光标。 即使你关闭了当前运行代码的源文件,使用完后它也会自动打开源文件,然后定位光标,相当方便。
8.导航
使用F12跳转很方便,但是如何跳回来呢? 这是两个按钮。 您可以根据需要来回跳跃。 不过跳跃的次数是有限的,所以不要跳太多。
9.书签
如果使用Newigate不是很方便,试试书签怎么样?
这是可以接受的
10.断点
如果你想让程序在到达某段代码时停止(断点位置还没有执行完)单片机仿真软件教程,那么这些按钮就可以满足你的要求(当然,你必须匹配前面的代码运行按钮)。
当然,断点设置可以直接在代码左侧设置:
11. 搜索
有没有什么错误? 搜索也属于调试范畴? 这对我来说是真的。 快捷键是CTRL+F,替换键是CTRL+H。
很多时候您找不到标识符或变量的使用位置,因此请尝试搜索功能。 它可以在项目中搜索您想要的所有符号。
请注意,搜索区域可以设置为一个范围,您可以通过以下选项选择您的搜索区域。
12.命令
这是命令输出窗口。 如果您在调试过程中遇到问题,请看看这个窗口为您输出了哪些信息!
以上内容均为Osprey亲自使用过的功能。 我觉得了解这些东西是很有必要的,所以如果你想让你的调试更加方便,那就试试这些功能吧。