本文主要是介绍智林开发板Z32R串口例程波特率错误修正,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
手中有一个智林的开发板,型号Z32R的,里面的串口通信的例子,开始时测试时波特率9600,总是乱码。后来把通信的波特率无意提高到14400,居然没有乱码了。
后来看网上的教程,一般的开发板外面的晶振都是8MHz的,而智林这一款是12MHz。如果是8MHz,9倍频是72M,而现在是12MHz,还是9倍频,实际是102M,给超频了。
根据手册和网上的资料,发现设置时钟配置寄存器(RCC_CFGR),可以修正这个问题。
原来的参数设置在文件STM32_Init.c中,第129行开始
#define __RCC_CFGR_VAL 0x001D8402 //第18到21位是设置倍频的 0111设置为9倍频,第16位是设置HSE作为PLL输入时钟。第17位设置HSE不分频。第2位设置,PLL输出作为系统时钟。
#define __HSE 8000000
现在把参数修改为以下:
#define __RCC_CFGR_VAL 0x00118402 //把 第18到21位是设置倍频的 修改为0100设置为6倍频
#define __HSE 12000000 //把外频修改为12M
编译,下载,OK了。
应该是智林从别的地方copy程序(后来在st的官网上发现,这个程序,好像几乎一样)。没有测试。
这篇关于智林开发板Z32R串口例程波特率错误修正的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!