最近在做STM32的云端项目中遇到个问题:相同代码换了一块实验板之后串口输出全是乱码,最后细细一想后发现是两块是实验板所用的外部晶振频率不一样。修改之后,问题解决。
接下来演示一下修改工程的方法。
修改(stm32f10x.h)文件中的外部时钟频率
可以用快捷键Ctrl+G数入119跳转到此行
#define HSE_VALUE ((uint32_t)8000000)
//修改为自己开发板所用的外部晶振频率
#define HSE_VALUE ((uint32_t)12000000)
然后修改(system_stmf10x.h)文件中的倍频系数
可以用快捷键Ctrl+G数入1056跳转到此行
#else
/* PLL configuration: PLLCLK = HSE * 9 = 72 MHz */
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
RCC_CFGR_PLLMULL));
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
#endif
//指针处修改为RCC_CFGR_PLLMULL6
#else
/* PLL configuration: PLLCLK = HSE * 9 = 72 MHz */
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
RCC_CFGR_PLLMULL));
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);
#endif
这样就解决了换开发板之后串口输出乱码的问题。