STM8L因时钟频率过低造成的串口接收问题
在调试stm8L101的时候发现,使用115200的波特率发送数据,在串口调试助手发现比其他单片机显示慢,能感觉到字符是一个一个跳出来的。
当然问题的重点不在这,调试串口接收遇到了蛋疼的问题,串口接收不完整,然而改成9600的波特率却没为题了。由此想到可能是单片机时钟频率太低造成的数据处理不完。使用 u32_clk_freq = CLK_GetClockFreq();获取到时钟频率,果然发现时钟频率为2M。使用CLK_MasterPrescalerConfig(CLK_MasterPrescaler_HSIDiv1);将时钟分频改为1分频后(即时钟频率16M),再使用115200的波特率收发就没问题了。