楼上是刚学MCU吧.
24M是外设的时钟,对常见的单片机来说,就是系统时钟,这些MCU没有倍频,所以这个24M也就是晶振或内部振荡器的频率.
波特率是用一个定时器来产生的,它的输入时钟24M,我希望它能每秒产生115200个数据,所以我得搞一个定时器,这个定时器需要设成多少呢.就是24/115200,但是这个芯片可能内部有4分频,所以再除以4.
除下来的结果不是整数,而定时器里设的值只能是整数,取整的数据是52.而用这个数据去计算,于是就出现了一点误差.
对于一个16位的定时器,最大数值65535,再加1就溢出了.而它可能只能向上计算,所以我给它一个初始值,让它在52个计数后溢出,所以预设值就是65536-52.
你上课估计打瞌睡了.这个一定会讲的. |