问题:使用F460官方串口例程,将波特率设置为9600失败。
原因:通过仿真,发现设置波特率返回的错误信息是ErrorInvalidParameter(误差无效参数)。分析华大提供的设置波特率函数,发现在串口时钟设置为不分频的情况下,9600以下的波特率通过代码第1429行计算后,第1432行的判断是不成立的,DIV_Integer的值远大于0xFF(感兴趣的可自行计算一下)。
下面是华大F460串口波特率设置程序(官方库)。
结论:在使用较低波特率进行通信时,需将串口时钟频率降低。串口时钟在100MHz的情况下,想使用9600波特率,分频系数不低于8分频。我使用的是16分频,使用正常。