用12MHZ的外部晶振,串口输出是乱码

2019-07-21 06:21发布

我用的是是12MHZ的外部晶振,然后我倍频到72MHZ,我发现使用的串口的时候,串口是乱码,然后又换回8MHZ的晶振也倍频到72MHZ,串口正常,请问这是什么原因,要改什么地方的程序。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
cdshkf
1楼-- · 2019-07-21 08:24
 从8M晶振换12M晶振,如果还想是72M时钟,只需要改三个地方:
1、stm32f1x0.h中,#define HSE_VALUE    ((uint32_t)8000000)改为#define HSE_VALUE    ((uint32_t)12000000)
2、system_gd32f1x0.c中,使用48M的那个宏,即改为如下:
//#define SYSCLK_FREQ_HSE    HSE_VALUE
//#define SYSCLK_FREQ_24MHz  24000000  
//#define SYSCLK_FREQ_36MHz  36000000
#define SYSCLK_FREQ_48MHz  48000000
//#define SYSCLK_FREQ_56MHz  56000000
//#define SYSCLK_FREQ_72MHz  72000000
3、如果是在keil中调试下载,工程选项中修改如下,Xtal(MHz)标签旁从8.0改为12.0。


如果楼猪是这么改的,那么既然8M晶振倍频到72M时钟串口收发正常,12M倍频到72M也没有理由出现乱码。
cdshkf
2楼-- · 2019-07-21 12:06
把倍频的程序发上来看看,怀疑你用12M晶振倍频不止72M,超频的时候一般会出现串口乱码的情况的。
bluezap
3楼-- · 2019-07-21 17:10
是这样的我倍频也是用库函数的,如果8M是选择72M的那个宏定义,12M我就选48M的那个宏定义,因为库函数是以外部是8MHZ为准写的
bluezap
4楼-- · 2019-07-21 17:57
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-07-21 22:29
估计你的倍频设置有问题.
cdshkf
6楼-- · 2019-07-21 23:34
楼猪可以调试的时候观察RCC的CR和CFGR两个寄存器的值,然后对比用户手册,这样到底是多少主频的时钟不就清楚了吗。

一周热门 更多>