STM32F1使用12M晶振

  STM32F1官方默认及大部分场合下都是使用8MHz的外部晶振,STM32F1最大的主频时钟是72MHz,超频的除外。理论上,采用外部时钟作为时钟源时,可以选择4M、8M、12M等晶振,如果MCU使用最高72M主频,对于常用的8M晶振,配置MCU内部为8倍频即可,而在使用12M晶振,配置为6倍频即可。

  一般情况下,使用一款MCU时,建议采用官方推荐大小频率的晶振,过高频率的晶振对于外部电路来说,易产生辐射,EMC认证有相关要求。低频率晶振则需MCU内部倍频器支持。12MHz晶振是使用较为广泛,如8051 MCU、NXP系列MCU等都默认12M。如果产品种类多,使用了不同品牌的MCU,为了减少物料使用种类,可统一使用12M晶振。

  对于STM32F1使用12M晶振,只需对库文件作部分修改。
1)打开“stm32f10x.h”,将119行中8M的晶振主频

 #define HSE_VALUE    ((uint32_t)8000000)

修改为12M

#define HSE_VALUE    ((uint32_t)12000000)


2)打开“system_stm32f10x.c”,修改PLL参数,将1054——1057行中的72MHz主频配置参数

 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);

修改为

 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);

另外:若要使用其他频率主频,则修改对应的倍频系数,如使用24MHz主频修改倍频系数为“RCC_CFGR_PLLMULL2”,36MHz主频修改倍频系数为“RCC_CFGR_PLLMULL3”,其他依次类推。

3)工程配置修改,将晶振主频修改为12MHz,“Options for Target—>Target”。
这里写图片描述

posted @ 2018-05-26 15:11  Acuity  阅读(457)  评论(0编辑  收藏  举报