大家好,我的问题如下:
我的16位定时器参考的是其独有的一个时钟系统,根据系统时钟2分频得到的。现在系统时钟是45MHz,那么这个定时器时钟是22.5MHz,然后我的定时器预分频器可以进行1、2、4、8、16、32、64、128分频。
我现在采用的方式为:
定时器时钟:22.5MHz 定时器预分频系数4,则定时器时钟频率是5.625MHz。然后我设定初值终值分别为0x0000——0xffff,这样我的定时时间就是(65534*1/5625000)结果是个无限不循环的小数0.01165048888888888888889……
此时根据四舍六入的习惯,我保留2位小数是0.01,保留3位小数是0.012。此时我遇到的问题是,要进行长时间定时,比如执行for循环10000次,我保留了2位小数和保留了3位小数会有20秒的误差。无论怎么改定时器初值终值,总是会有无法整除的现象,出现这些误差,避免不了。
我现在的办法是改变for循环的循环次数进行补误差,可是循环次数越多,误差越放大,难道只能是每次都去故读小数点后一位计算误差,改变循环次数进行补救这一种方法吗?
各位谁有更好的办法,请教教我,谢谢!
|