本帖最后由 cool_coder 于 2015-12-1 14:59 编辑
既然LZ用了16位的变量,只判断20秒左右的差值,那么判断间隔肯定不会大于65536秒的,对吧?所关心的溢出问题,也应该仅出现在65535附近的一小段时间里。所以,不用担心几天,几年的问题,只关心附近这几分钟就可以了。
uint16_t TimeDiff(uint16_t tmStart, uint16_t tmStop)
{
if(tmStop >= tmStart){
return (tmStop - tmStart);
}else{
return (65536 - tmStart + tmStop);
}
}
……
if(TimeDiff(a,b) > 20){
...
}
|