short rtimer_arch_now(void)
{
short t1, t2;
do {
t1 = TA1R;
t2 = TA1R;
} while(t1 != t2);
return t1;
}
TA1R是Timer_A寄存器。我仍然不明白为什么有一个循环。如果他们想要返回时间,他们只需返回TA1R。什么是循环?
答案 0 :(得分:13)
它会在您询问当前时间时尝试避免这种情况,但它会在时间滴答之前返回值。因此,如果读数稳定,它只返回当前时间。
答案 1 :(得分:2)
代码正在尝试等待TA1R
更改,然后返回旧值TA1R
。
此代码仅在TA1R
声明为volatile
时才有效,否则编译器可以优化循环。