用T2做波特率发生器没有改善。只看后面一部分:
16e6/16/115200=8.680555555555555
16e6/2/16/115200=4.340277777777778
16e6/4/16/115200=2.170138888888889
这几个尾数距离整数都很远,而且整数部分也很小,注定取整以后误差很大。
现在看你的附件里面的代码:
x = 10 * 16000000 / 16 / 115200; // 这里截断以后x是86
x2 = x % 10; // x2=6
x /= 10; // 这里x为8
if ( x2 >= 5 ) x ++; // 这里x为9
实际上就是8.68取整到了9,误差多少呢?大约3.7%,根本就不可用。
|