【STM32】【调试】如何使用keil5实时查看变量的数值-Jojo

前注:本文章主要讲解【调试】【固件库(标准库)】【HAL库】

内容为 'Jojo'编写,日常学习总结,内容如有不足、不妥之处请私信告知,谢谢!

 1.打开工程进入调试界面

 

进入调试界面需要连接芯片

 2.选择需要查看的变量

  3.右击选中“Add 'sys_clk' to... ”的变量,watch1,watch都可。

   4.找到窗口。窗口中的值为当前变量值

    5.右击   去勾√Hex显示(16禁止) 以十进制显示(人看的那个)

   6.实时查看数值

在菜单栏中找到view 选中Periodic Window Update(实时显示串口)

   7.在watch窗口查看数值 右边为变量类型

 

 Memory为存储器窗口

### Keil调试模式下查看和读取变量的方法 #### 设置编译器优化级别 当遇到在Keil v4.73调试模式下无法查看局部变量的情况时,这可能是由于编译器进行了过度优化所致。默认情况下,C/C++设置中的优化级别为`O2`,此级别的优化可能会使某些局部变量被移除或内联处理,从而影响到它们在调试期间的可见性[^1]。 为了能够在调试过程中顺利观察这些临时量的变化情况,建议暂时调整项目属性里的编译选项至较低等级——即选择不执行任何类型的代码改进措施(`O0`)。完成必要的测试之后再恢复原有的配置以确保最终发布的应用程序具有良好的运行效率。 ```c++ // 修改前后的对比示意 #pragma optimize("", off) // 关闭当前文件内的所有函数优化 (仅适用于IAR, 对应概念) ``` 请注意上述操作只针对特定场景有效;如果是在更高版本如Keil MDK 5.x系列里遇到了相似难题,则可能还需要额外关注链接阶段发生的优化行为(Link-Time Optimization),因为这类特性可能导致全局数据结构也变得难以访问[^3]。 #### 使用Watch窗口监控目标对象 启动仿真后,在IDE界面左侧通常能找到名为“Watch”的面板区域。通过点击右键菜单项可以选择添加新的监视表达式来跟踪感兴趣的内存地址或是命名实体(比如单个整数型标量、指针所指向的内容等)。 对于数组类型的数据成员而言,可以直接输入完整的索引范围作为参数传递给watcher实例化过程之中: ```cpp int array[10]; for(int i=0; i<10; ++i){ array[i]=i*2; } // 添加整个数组进入观察列表:"array" ``` 此外还可以利用条件断点功能配合自定义逻辑判断语句实现更精细的过程控制,一旦满足设定标准便会自动暂停执行流并允许开发者即时查阅最新状态下的各个要素数值变化趋势。 #### 利用命令行接口发送指令 除了图形化的交互手段之外,Keil还提供了基于文本形式的操作方式供高级用户灵活运用。借助内置API `exec()` 函数可以在任意位置嵌入一条或多条用于操控模拟环境内部机制的有效字符串序列,进而达到动态获取实时信息的目的[^2]。 例如要查询某个寄存器的具体内容可尝试如下做法: ```assembly void someFunction(void){ ... exec("R PC"); // 显示程序计数器PC当前位置 ... } ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值