波特率寄存器,生成波特率
fck | 时钟源 |
over8 | 八倍采样=1 16倍采样=0 |
USARTDIV | 串口分频值(未知需要求出来) |
USARTDIV = fCK / 波特率 X 8 X (2-OVER8)
举例:
Fck = 84MHz
OVER8=0 (16倍过采样)
波特率=115200
则:
USARTDIV = 84000000/(115200 X 8 X 2)=45.57291666666666666666666666667
USARTDIV的整数部分:
u32 DIV_M = (u32)USARTDIV
小数部分:
1.因为小数部分不能直接写入,4个bit的最大值为f,也就是16,所以*16
2.小数部分的最终值需要四舍五入所以➕0.5
u32 DIV_F=(DIV-DIV_M)*16 + 0.5=9.1666666666666666666667