嵌入式:Keil调试时,Memory窗口的更新时机

相关阅读嵌入式icon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12768532.html?spm=1001.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窗口中输入寄存器处的值根据当前的按钮是否按下进行更新,结果如下。

按键按下前:

按键按下后:

        需要注意的是,以上的三种情况,只会在挂起时更新一次,所以此后再改变按钮状态,无法被观察到更新。

Periodic Window Update

        当开启了该选项后,程序在全速运行时会进行周期性更新,结果与程序挂起相同。

手动更新

        当程序处于挂起状态,且点击了后,会强制进行一次更新,结果结果与程序挂起相同。

JMem.exe

        JMem.exe是Jlink提供的观察Memory的软件,他可以设置的周期更新的时间,可以在在全速运行、程序挂起时都执行周期更新,如下图所示。

  • 18
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日晨难再

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值