【程序人生—随笔】
笔者简单聊聊生活中的事情,
之4月5号的时候,笔者的自行车突然有一天骑着骑着,就感觉很难骑,转头一看,发现车胎都瘪了, 首先想到的是补胎,网上购买了一套工具去补胎,
回来拆了,然后发现发现是一条裂纹,当时想着就补补,第一次补了一次,一打气就崩开了,第二次,一补直接爆了,吓我一跳。
然后就买了内胎,没买外胎,没买外胎,没买外胎,啊啊啊,因为当时就看到外胎破了,没想到可能是外胎导致的内胎破了,因为可能是石子这些导致的,真是熟视无睹,结果为后面埋雷了。
果然不出意外,意外就出现了,7月份的时候,早上骑着还正常,晚上就发现胎瘪了,然后马上想到是肯定是外胎导致的问题,想到没想,立马就买了内胎和外胎,都没拆下来看。(后续拆下来,看来还是石头之类磨的,很小的一个洞)
这就告诉了我们一个道理,有些存在的问题,看到了一定要思考一下,不然后面肯定出问题,不能熟视无睹,一些小错误,会导致后面很多成为无用功,最终还得重新来过。
工作上面也有很多时候碰到这样的问题,但是也是有时候企图蒙混过关,到时候还是这个问题,还得自己去解决,比如最近的这个timer问题。
之前软件timer就发现了这个问题,软件timer的实现在这篇文章介绍,软件定时器实现。
软件timer思想如下图所示,
现象如下:
上方的 id =2,ticks = 32766,指的是,定时器设置的多长时间后产生中断,
背景是:定时一段时间,打印 sys timer thread proc,但是设置时间后,明显时间没到,然后继续中断,直到时间到了,然后打印执行用户call back函数。
- 定时时间在满足条件的情况,正常肯定是设置时间后,然后就执行用户callback,这种明显是异常。
- 从48秒 到18秒,经过了30秒,然后时间设置的是32766,时间是32.7s,时间都有很大误差,当时觉得脑子肯定是抽了,才忽略了这个问题。
- 我们设想一下,如果中断timer时钟频率偏大,则定时指定的时间到了,那么时钟timer的时间没到,则会继续定时,直到定时的时间到,每次定时都早到,所以造成了频繁中断,。
- 再继续深入想一下,假如中断timer 频率快两倍,则肯定每次设置的时间都早到,而且大概是早到两倍的时间,看上图好像符合这个规律,
- 如果只是中断timer的频率不对,则总的定时应该是正常的,但是总的定时时间还差2s,说明时钟timer也有问题,
版权声明:
作者:ZhangYixi
链接:http://zyixi.xyz/%e3%80%90%e7%a8%8b%e5%ba%8f%e4%ba%ba%e7%94%9f-%e9%9a%8f%e7%ac%94%e3%80%91/
来源:一西站点
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论