dffzh 发表于 2025-7-30 16:34

Keil开发实操指南:变量仿真调试的基本方法

在使用Keil进行仿真调试时,会经常需要实时查看某个变量(全局变量、局部变量等)值的变化情况,以此来判断程序是否正常运行或者变量值变化是否正常。但是,对于全局变量和局部变量,其仿真调试的方法是不一样的,本文进行介绍。1、全局变量这里的全局变量包括基本数据类型(整型、浮点型等)和复杂数据类型(结构体、联合体等),也包括数组。
§ 如果需要在全速运行程序期间实时监控变量的数据变化,需要勾选“Periodic Window Update”, 如下图:打开窗口“Watch Windows”用于存放需要监控的变量:打开后如下:会显示变量名称、当前值和变量数据类型;双击“<Enter expression>”即可将变量拷贝到窗口里,比如如果需要监控main程序是否正常运行,那就可以将自定义的全局变量gRunCount放入窗口里,如下图:
注意:需要暂停运行程序才能执行拷贝操作。默认显示制式为十六进制,如下图:去掉勾选即可显示十进制,如下图:重新运行程序后,当前值填充绿色,说明其值在实时更新,如下图:如果需要监控全局结构体变量,直接拷贝到窗口里,就可以看到所有成员变量的当前值,如下图:制式模式对浮点数据类型的设置无效。如果需要监控全局数组,直接将数组名拷贝到窗口里即可,如下图所示:如果需要在全速运行程序期间通过修改某个变量(该变量值不会实时更新)的值来调试程序的运行情况,则可以直接通过输入新值到“Value”窗口里实现(不需要暂停运行程序)。比如需要修改变量WEIGHT_RANGE_MAX的值为20,则可以双击“Value”框后输入新值并按回车键即可:2、局部变量这里的局部变量也包括基本数据类型(整型、浮点型等)和复杂数据类型(结构体、联合体等),还包括静态变量(static)。如果需要在程序运行期间监控局部变量的数据变化,则必须通过设置断点(Breakpoint)进行单步调试的方式执行,即不能在全速运行程序时实时查看局部变量的值变化情况。
如果将局部变量放入监控窗口里,在全速运行程序时,其值会报错,如下图:当你在变量被使用的代码位置设置一个断点后再运行一次程序,程序运行到断点位置后,就可以看到变量的当前值:因此,如果真的需要监控函数内部的局部变量的实时变化情况,可以将其临时更改为全局变量,待程序验证无误后再改回去即可。
页: [1]
查看完整版本: Keil开发实操指南:变量仿真调试的基本方法