[英]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.