在修改了时钟源后,发现gd32串口输入输出的数据乱码了。。。。
经排查发现原因是:①时钟源配置出错
当前使用的芯片是GD32F305RC,时钟频率最高可达到120Mhz。
在修改使用源后,即使用如下宏定义,
#define __SYSTEM_CLOCK_120M_PLL_HXTAL (uint32_t)120000000
还需要根据开发板上的晶振修改晶振的宏
在gd32f30x.h
的文件中定义了#define HXTAL_VALUE
#if !defined HXTAL_VALUE
#ifdef GD32F30xCL
#define HXTAL_VALUE ((uint32_t)250000000)
#else
#define HXTAL_VALUE ((uint32_t)8000000)
#endif /* HXTAL_VALUE */
#endif /* high speed crystal osc value */
因为定义了#define GD32F30x_CL
,所以是#define HXTAL_VALUE ((uint32_t)250000000)
在修改system_gd32f30x.c
文件中的static void system_clock_120m_hxtal(void)
函数,根据开发板上的晶振修改RCU_CFG1
,把CK_PREDIV0
调成 4MHZ
检查开发板的晶振,发现其石英晶振位8MHZ,把HXTAL_VALUE
修改为#define HXTAL_VALUE ((uint32_t)8000000)
即解决问题!