我在官方库里面发现波特率计算公式有一些出入,特此请教。
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的步骤。
2022-8-3 11:30:49
先*10 是为了在不能被整除时,结合x = (x + 5) / 10;进行四舍五入的运算。
先*10 是为了在不能被整除时,结合x = (x + 5) / 10;进行四舍五入的运算。
举报