STM32的時鐘的修改方法(HSE使用16M無源晶振時)
ST公司提供的時鐘芯片是8MHZ,但是由于國內(nèi)技術(shù)的局限性和國外技術(shù)的壟斷,8M的芯片約2元/片,16M大約就是幾毛錢,所以考慮成本,設(shè)計中往往需要使用16MHZ的電平,但是ST公司提供的是庫函數(shù)的默認(rèn)的系統(tǒng)時鐘是8M,所以相關(guān)的PLL的倍頻因子也是設(shè)置的是9(RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);),若使用16M的晶振,則需要進(jìn)行相關(guān)代碼的修改;
第一步,全局搜索HSE_VALUE
#define HSE_VALUE((uint32_t)8000000)
修改為:
#define HSE_VALUE((uint32_t)12000000)
第二步,打開system_stm32f10x.c,修改PLL參數(shù),將
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軟件調(diào)試軟件的同學(xué)
MDK軟件上的“options..”的晶振的設(shè)置。