ch582m波特率计算问题

我在官方库里面发现波特率计算公式有一些出入,特此请教。

void UART0_BaudRateCfg(uint32_t baudrate)
{
    uint32_t x;

    x = 10 * GetSysClock() / 8 / baudrate;
    x = (x + 5) / 10;
    R16_UART0_DL = (uint16_t)x;
}

疑问的点是为什么要先乘10,然后再加5除以10,这是在规避什么错误吗?因为看datasheet的公式是 波特率公式 =Fsys * 2 / R8_UARTx_DIV / 16 / R16_UARTx_DL,没有乘10除以10的步骤。

先*10 是为了在不能被整除时,结合x = (x + 5) / 10;进行四舍五入的运算。


只有登录才能回复,可以选择微信账号登录