私はARM実験の初心者で、このプロセッサのデータの概念に問題があります。困った。タイマー間隔をチェックするコードがあります:
// get the current timer 0 count
unsigned long Timer0_GetTimestamp(void)
{
return T0TC;
}
// check to see if a timestamp is in the past
// returns 1 if in the past, 0 if not
int Timer0_TimestampExpiredCk(unsigned long timestamp)
{
unsigned long now = T0TC;
if (now > timestamp)
{
if ((now - timestamp) < 0x80000000)
return 1;
else
return 0;
}
else
{
if ((timestamp - now) >= 0x80000000)
return 1;
else
return 0;
}
}
// pause for a specific number of milliseconds
void Timer0_Delay(unsigned long milliseconds) {
unsigned long timestamp = Timer0_GetTimestamp() + milliseconds;
while (!Timer0_TimestampExpiredCk(timestamp));
}
「0x80000000」という数字に問題があります。この数を 2 の補数と見なすべきか、それとも単に 2 進数と見なすべきか? 2つの変数の差がゼロの場合、フラグを変更すると想定されています。間違っていたら訂正してください。
ありがとうございました