外设寄存器窗口的注意事项

外设寄存器窗口的注意事项

很多 IDE (例如 GNU MCU Eclipse、TrueSTUDIO)都提供了外设寄存器窗口,在调试外设驱动时可以方便地观察外设寄存器的变更加快外设驱动的调试过程,但是外设寄存器窗口显示的值也是从外设寄存器读过来的,而有些外设寄存器的读取操作是有副作用的,例如读取状态寄存器可能会清除状态位,状态位被外设寄存器窗口的读取过程清除了之后,程序去读取状态寄存器时就没有办法读到正确的状态位了,还有一种情况是读取FIFO,数据就少了。

https://blog.csdn.net/zoomdy/article/details/90668204
zoomdy at 163 dot com

外设寄存器窗口的原理

外设寄存器窗口要显示外设寄存器的值,就要去读取外设寄存器。外设寄存器窗口向调试器获取指定地址的数值,调试器通过调试接口去读取对应地址的数值。也就是说,外设寄存器窗口通过调试接口读取了外设寄存器。外设没有办法区分是调试器来读取寄存器还是在CPU中执行的程序来读取寄存器,只知道读取了寄存器。这样一来,如果读取寄存器有附加作用,那么外设寄存器窗口的这个读取操作可能就会引起问题。

读清除

有些状态寄存器是通过读来进行清除操作的,碰上这种寄存器,那么使用外设寄存器窗口去观察过寄存器的值之后,后续程序去读取寄存器时,某些标志位已经被清除了。即外设寄存器窗口的读操作已经清除了状态位。

FIFO

FIFO 被读取一次,就会弹出一组数据,外设寄存器窗口来读时同样会弹出数据,因此使用外设寄存器窗口观察 FIFO 寄存器会发现数据丢失的情况,弹出的数据被外设寄存器窗口消费掉了。

总结

外设寄存器窗口是个很好的调试工具,但是要小心它的读取带来的副作用。当发生非预期状况时,要想到可能是外设寄存器窗口的读取引起的。如果不知道这一点,外设寄存器窗口反而就变成一个坑了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值