相关阅读嵌入式https://blog.csdn.net/weixin_45791458/category_12768532.html?spm1001.2014.3001.5482在Keil中调试程序时Memory窗口是一个很有用的工具它们由调试器厂商提供并嵌入IDE可以实时显示存储器中的数据值本文将探讨其更新时机问题。根据Keil官方的文档Memory窗口在以下三种情况下会更新。每当程序执行进入挂起状态时这可能发生在程序执行遇到断点时或程序在全速运行时使用Stop按钮停止时或单步执行时。当程序在全速运行时且View-Periodic Window Update选项被打开这会导致Memory窗口每隔一定时间进行更新目前没有找到控制这个时间的方法。当程序处于挂起状态点击了Toolbox-Update Windows时会更新一次。下面将分别对这三点进行实验本文的所有实验使用Keil配合Jlink调试器。使用STM32F103单片机上的GPIO外设进行测试开发板上有一个按键连接至该GPIO所以当按键按下时外设的输入寄存器值会发生改变。程序进入挂起状态在首先进行了GPIO的一系列初始化后程序执行遇到断点单步执行或使用Stop按钮停止时Memory窗口中输入寄存器处的值根据当前的按钮是否按下进行更新结果如下。按键按下前按键按下后需要注意的是以上的三种情况只会在程序挂起时更新一次所以在程序处于挂起状态时再改变按钮状态无法观察到更新。程序全速运行当开启了该选项后程序在全速运行时会进行周期性更新结果与程序挂起相同。手动更新当程序处于挂起状态且点击了后会强制进行一次更新结果结果与程序挂起相同。JMem.exeJMem.exe是Jlink提供的观察Memory的软件他可以设置的周期更新的时间可以在全速运行、程序挂起时都进行周期性更新如下图所示。
阅读完成 · 觉得有帮助?