WCH沁恒单片机
直播中

宜家

8年用户 1098经验值
私信 关注
[问答]

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的步骤。

回帖(1)

周臻庸

2022-8-3 11:30:49
先*10 是为了在不能被整除时,结合x = (x + 5) / 10;进行四舍五入的运算。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分