STM32F4/M4 波特率寄存器 计数公式

前言

STM32中,USART控制器中的波特率寄存器是可以写入分频数(USARTDIV)小数部分的
因此能够更精准地得到我们想要的波特率。

波特率:每秒钟传输的二进制代码的位数

波特率寄存器

位说明

波特率计算公式:

其中OVER8通过串口控制寄存器1(USART_CR1第15位来配置

它就是用来设置过采样大小的,为了获得更确定的电平信息,一般采样16倍过采样。

等换公式:

波特率寄存器配置公式1:

        思路:

以上USARTDIV的公式算出来的值是带有小数部分的,我们要想写入寄存器
就要将USARTDIV值对应的二进制整体左移四位,故十进制要扩大16倍
结合之前公式

波特率写入值 = Fck / 波特率                //此时是16倍过采样
波特率写入值 = Fck / 波特率 * 2
                //此时是16倍过采样

如配置USART1的波特率为9600

        代码
                

波特率寄存器配置公式2:

        思路:

根据公式算出USARTDIV,取其整数部分,再算其小数部分
最后分别写入波特率寄存器BRR的对应整数部分和小数部分位中

官方也给出的公式

①USARTDIV = Fck / 8*(2 - OVER8) / 波特率 
                    ②DIV_M = (u32)USARTDIV                                               
      ③DIV_F = (USARTDIV - DIV_M)*8*(2 - OVER8)

如配置USART1的波特率为9600

        代码

                

总结:

        其实其公式原理是一样的,算出DSARTDIV的值
将整数部分分别写入BRR            位 15:4 DIV_Mantissa[11:0]
将小数部分数分别写入BRR        位 3:0 DIV_Fraction[3:0]:

                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值