本帖最后由 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){
- ...
- }
|