今天下午200M晶振到手,焊上去重新分配了一下线程时钟,测了一下延时,果然舒服多了。
但是测串口的时候9600和921600乱码了,而115200和25600正常,咨询了官方老哥之后才知道两种乱码原因还不一样。
首先来看一下串口初始化代码。
引脚部分很简单,照着例子改就行,核心是三个频率:时钟分频、外设时钟、波特率。
外设时钟=系统时钟/时钟分频
我用的外部有源晶振做系统时钟200M,分频256,所以外设时钟=200000000/256=781250。
那么如何确定系统分频呢(敲黑板),我的串口乱码就是因为分频错了。官方说明是 外设时钟/波特率 的结果最好在100到200之间。
我的9600乱码是因为当时时钟分频选了64,外设时钟/波特率 超过了255,溢出了。
921600乱码是因为当时时钟分频也选了64,外设时钟/波特率 才3点多,不够。
离线