110 #include "stm32l4xx.h" 112 #if !defined (HSE_VALUE) 113 #define HSE_VALUE ((uint32_t)8000000) 116 #if !defined (MSI_VALUE) 117 #define MSI_VALUE ((uint32_t)4000000) 120 #if !defined (HSI_VALUE) 121 #define HSI_VALUE ((uint32_t)16000000) 144 #define VECT_TAB_OFFSET 0x000 170 uint32_t SystemCoreClock = 4000000;
172 const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
173 const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
174 const uint32_t MSIRangeTable[12] = {100000, 200000, 400000, 800000, 1000000, 2000000, \
175 4000000, 8000000, 16000000, 24000000, 32000000, 48000000};
201 #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) 202 SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));
206 RCC->CR |= RCC_CR_MSION;
209 RCC->CFGR = 0x00000000;
212 RCC->CR &= (uint32_t)0xEAF6FFFF;
215 RCC->PLLCFGR = 0x00001000;
218 RCC->CR &= (uint32_t)0xFFFBFFFF;
221 RCC->CIER = 0x00000000;
275 uint32_t tmp = 0, msirange = 0, pllvco = 0, pllr = 2, pllsource = 0, pllm = 2;
278 if((RCC->CR & RCC_CR_MSIRGSEL) == RESET)
280 msirange = (RCC->CSR & RCC_CSR_MSISRANGE) >> 8;
284 msirange = (RCC->CR & RCC_CR_MSIRANGE) >> 4;
287 msirange = MSIRangeTable[msirange];
290 switch (RCC->CFGR & RCC_CFGR_SWS)
293 SystemCoreClock = msirange;
308 pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC);
309 pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> 4) + 1 ;
322 pllvco = (msirange / pllm);
325 pllvco = pllvco * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 8);
326 pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> 25) + 1) * 2;
327 SystemCoreClock = pllvco/pllr;
331 SystemCoreClock = msirange;
336 tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
338 SystemCoreClock >>= tmp;
void SystemCoreClockUpdate(void)
Update SystemCoreClock variable according to Clock Register Values. The SystemCoreClock variable cont...
void SystemInit(void)
Setup the microcontroller system.