在从IAR移植到KEIL过程中(IAR库函数使用V2.0.3keil库函数使用V3.5.0),发现串口的数据一直接收不到,串口的配置全部完成,所以怀疑库对时钟的设置有问题。
自从用了keil5以后很少自己添加库函数以及启动文件,全部使用keil自带的manage run-time environment功能,后来发现一个问题自带库中指引的库函数为安装目录下的文件,多个程序公用一堆库,当你因为需求要更改库函数时,将所有使用自带库的程序都进行了改动,所以不推荐使用keil自带的官方库函数。
回归正题,在通过单片机向PC发送固定数据时,串口可以接收数据,但数据不正确,并且每次复位后不相同,确定时钟出现问题,最后定位问题在stm32f10x.h中的第115行
此处为定义外部输入时钟值,然后串口根据这个值去计算波特率,在第119行处将值更改为自己实际外部输入频率即可。