在日常调试中,使用串口打印log或者串口通信的用户是很多的,那么在不同的主频下,哪些波特率可用,哪些不可用呢,那么就需要计算误差来看了。
在代码中,波特率参数是么设置的:
void UART1_BaudRateCfg(uint32_t baudrate)
{
uint32_t x;
x = 10 * GetSysClock() / 8 / baudrate;
x = (x + 5) / 10;
R16_UART1_DL = (uint16_t)x;
}
结果一般是是小数,采取了四舍五入的方法,如果的得数大,那么四舍五入的影响就不大,如果结果个位数,那么0.4对于他而言误差是很大的,计算偏差大于%2不建议使用。