STM32的时钟的修改方法(HSE使用16M无源晶振时)
扫描二维码
随时随地手机看文章
ST公司提供的时钟芯片是8MHZ,但是由于国内技术的局限性和国外技术的垄断,8M的芯片约2元/片,16M大约就是几毛钱,所以考虑成本,设计中往往需要使用16MHZ的电平,但是ST公司提供的是库函数的默认的系统时钟是8M,所以相关的PLL的倍频因子也是设置的是9(RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);),若使用16M的晶振,则需要进行相关代码的修改;
第一步,全局搜索HSE_VALUE
#define HSE_VALUE((uint32_t)8000000)
修改为:
#define HSE_VALUE((uint32_t)12000000)
第二步,打开system_stm32f10x.c,修改PLL参数,将
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);//12MHZ,SYSCLK=HSE*6=72MHZ
或者一句RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6); 就可以解决了
第三步,这一步是对于使用IDE软件调试软件的同学
MDK软件上的“options..”的晶振的设置。