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

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

4

2 回答 2

13

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

于 2013-08-06T00:38:39.453 回答
2

代码尝试等待TA1R更改,然后返回TA1R.

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

于 2013-08-06T00:36:54.830 回答