本帖最后由 chenxiaolang 于 2019-12-20 22:21 编辑
本ARM小白在调试HC32F030J8TA时发现官方库函数配置有误地方,情况如下,欢迎大家发表意见讨论。
1、调试UART1,接收和发送映射至PA03、PA04,内核频率32MH,外设频率8MHz.下图是配置UART1参数代码,其中CNT值对波特率至关重要。
2、从单片机向PC发送一个字节0x5A,发现PC端串口助手设置成115200波特率时接收的数据根本不对,改成12800后,接收正常。
3、查证HC32配置波特率的公式如下,按此公式,求得SCNT = 8.68。
4、单步调试查看库函数计算结果,结果为8,也就说直接舍弃了小数部分,没有进行四舍五入的处理。
5、但实际上,CNT取值8和9对波特率的影响非常大,请参照官方提供的参考值。取8更接近12800,8.68四舍五入应该取9,更接近115200。
6、其实从上述计算也能看出来,理论CNT值约接近整数(舍弃或进位的部分越小),波特率误差越小。若实际需要的精度较高,建议调整PCLK和波特率,找到一个合适的CNT。我的解决办法是采用32MHz外设频率。
|