假设变量 ticks_now、tick_old<=0x00ffffff,且在0-0x00ffffff循环,求tick_now、tick_old过了多少间隔
static uint32_t ticks_diff_get(uint32_t ticks_now, uint32_t ticks_old)
{return ((ticks_now - ticks_old) & 0x00ffffff);
}
1、当ticks_now>=tick_old时,函数返回tick_now-tick_old
2、当ticks_now<=tick_old时,即ticks_now从tick_old增到0x00ffffff到0再到tick_now,例如:
ticks_now = 1,ticks_old = 0x00ffffff,负数在计算机中保存为补码,故-0x00ffffff = 0xff000001,原式= (1+0xff000001)&0x00ffffff = 0x02;