繁体   English   中英

下面这段代码做了什么

[英]What does the following piece of code do

short rtimer_arch_now(void)
{
  short t1, t2;
  do {
    t1 = TA1R;
    t2 = TA1R;
  } while(t1 != t2);
  return t1;
}

TA1R是Timer_A寄存器。 我仍然不明白为什么有一个循环。 如果他们想要返回时间,他们只需返回TA1R。 循环是什么?

它会在您询问当前时间时尝试避免这种情况,但它会在时间滴答之前返回值。 因此,如果读数稳定,它只返回当前时间。

代码试图等到TA1R改变然后返回TA1R的旧值。

此代码仅在TA1R声明为volatile时才有效,否则编译器可以优化循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM