嵌入式 STM32 串口波特率生成器BRR的值计算笔记

波特率寄存器,生成波特率
在这里插入图片描述
在这里插入图片描述

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

猜你喜欢

转载自blog.csdn.net/weixin_44291381/article/details/114819104