25#define SYSCLK_FREQ_48MHz_HSE 48000000
28#ifdef SYSCLK_FREQ_8MHz_HSI
30#elif defined SYSCLK_FREQ_24MHZ_HSI
32#elif defined SYSCLK_FREQ_48MHZ_HSI
34#elif defined SYSCLK_FREQ_8MHz_HSE
36#elif defined SYSCLK_FREQ_24MHz_HSE
38#elif defined SYSCLK_FREQ_48MHz_HSE
44__I uint8_t
AHBPrescTable[16] = {1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8};
50#ifdef SYSCLK_FREQ_8MHz_HSI
51 static void SetSysClockTo_8MHz_HSI(
void);
52#elif defined SYSCLK_FREQ_24MHZ_HSI
53 static void SetSysClockTo_24MHZ_HSI(
void);
54#elif defined SYSCLK_FREQ_48MHZ_HSI
55 static void SetSysClockTo_48MHZ_HSI(
void);
56#elif defined SYSCLK_FREQ_8MHz_HSE
57 static void SetSysClockTo_8MHz_HSE(
void);
58#elif defined SYSCLK_FREQ_24MHz_HSE
59 static void SetSysClockTo_24MHz_HSE(
void);
60#elif defined SYSCLK_FREQ_48MHz_HSE
75 RCC->CTLR |= (uint32_t)0x00000001;
76 RCC->CFGR0 &= (uint32_t)0xF8FF0000;
77 RCC->CTLR &= (uint32_t)0xFEF6FFFF;
78 RCC->CTLR &= (uint32_t)0xFFFBFFFF;
79 RCC->CFGR0 &= (uint32_t)0xFFFEFFFF;
80 RCC->INTR = 0x009F0000;
82 RCC_AdjustHSICalibrationValue(0x10);
97 uint32_t tmp = 0, pllsource = 0;
99 tmp = RCC->CFGR0 & RCC_SWS;
110 pllsource = RCC->CFGR0 & RCC_PLLSRC;
111 if (pllsource == 0x00)
127 if(((RCC->CFGR0 & RCC_HPRE) >> 4) < 8)
147RCC->APB2PCENR |= RCC_APB2Periph_GPIOD;
148GPIOD->CFGLR&=(~0xF0);
152#ifdef SYSCLK_FREQ_8MHz_HSI
153 SetSysClockTo_8MHz_HSI();
154#elif defined SYSCLK_FREQ_24MHZ_HSI
155 SetSysClockTo_24MHZ_HSI();
156#elif defined SYSCLK_FREQ_48MHZ_HSI
157 SetSysClockTo_48MHZ_HSI();
158#elif defined SYSCLK_FREQ_8MHz_HSE
159 SetSysClockTo_8MHz_HSE();
160#elif defined SYSCLK_FREQ_24MHz_HSE
161 SetSysClockTo_24MHz_HSE();
162#elif defined SYSCLK_FREQ_48MHz_HSE
172#ifdef SYSCLK_FREQ_8MHz_HSI
181static void SetSysClockTo_8MHz_HSI(
void)
184 FLASH->ACTLR &= (uint32_t)((uint32_t)~FLASH_ACTLR_LATENCY);
185 FLASH->ACTLR |= (uint32_t)FLASH_ACTLR_LATENCY_0;
188 RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV3;
191#elif defined SYSCLK_FREQ_24MHZ_HSI
200static void SetSysClockTo_24MHZ_HSI(
void)
203 FLASH->ACTLR &= (uint32_t)((uint32_t)~FLASH_ACTLR_LATENCY);
204 FLASH->ACTLR |= (uint32_t)FLASH_ACTLR_LATENCY_0;
207 RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1;
211#elif defined SYSCLK_FREQ_48MHZ_HSI
220static void SetSysClockTo_48MHZ_HSI(
void)
224 tmp = *( uint8_t * )CFG0_PLL_TRIM;
228 RCC_AdjustHSICalibrationValue((tmp & 0x1F));
232 FLASH->ACTLR &= (uint32_t)((uint32_t)~FLASH_ACTLR_LATENCY);
233 FLASH->ACTLR |= (uint32_t)FLASH_ACTLR_LATENCY_1;
236 RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1;
239 RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC));
240 RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSI_Mul2);
243 RCC->CTLR |= RCC_PLLON;
245 while((RCC->CTLR & RCC_PLLRDY) == 0)
249 RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW));
250 RCC->CFGR0 |= (uint32_t)RCC_SW_PLL;
252 while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08)
257#elif defined SYSCLK_FREQ_8MHz_HSE
266static void SetSysClockTo_8MHz_HSE(
void)
268 __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
271 RCC->APB2PCENR |= RCC_AFIOEN;
272 AFIO->PCFR1 |= (1<<15);
274 RCC->CTLR |= ((uint32_t)RCC_HSEON);
279 HSEStatus = RCC->CTLR & RCC_HSERDY;
281 }
while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
283 if ((RCC->CTLR & RCC_HSERDY) != RESET)
285 HSEStatus = (uint32_t)0x01;
289 HSEStatus = (uint32_t)0x00;
292 if (HSEStatus == (uint32_t)0x01)
295 FLASH->ACTLR &= (uint32_t)((uint32_t)~FLASH_ACTLR_LATENCY);
296 FLASH->ACTLR |= (uint32_t)FLASH_ACTLR_LATENCY_0;
299 RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV3;
302 RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW));
303 RCC->CFGR0 |= (uint32_t)RCC_SW_HSE;
305 while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x04)
318#elif defined SYSCLK_FREQ_24MHz_HSE
327static void SetSysClockTo_24MHz_HSE(
void)
329 __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
332 RCC->APB2PCENR |= RCC_AFIOEN;
333 AFIO->PCFR1 |= (1<<15);
335 RCC->CTLR |= ((uint32_t)RCC_HSEON);
340 HSEStatus = RCC->CTLR & RCC_HSERDY;
342 }
while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
344 if ((RCC->CTLR & RCC_HSERDY) != RESET)
346 HSEStatus = (uint32_t)0x01;
350 HSEStatus = (uint32_t)0x00;
353 if (HSEStatus == (uint32_t)0x01)
356 FLASH->ACTLR &= (uint32_t)((uint32_t)~FLASH_ACTLR_LATENCY);
357 FLASH->ACTLR |= (uint32_t)FLASH_ACTLR_LATENCY_0;
360 RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1;
363 RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW));
364 RCC->CFGR0 |= (uint32_t)RCC_SW_HSE;
366 while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x04)
379#elif defined SYSCLK_FREQ_48MHz_HSE
390 __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
393 RCC->APB2PCENR |= RCC_AFIOEN;
394 AFIO->PCFR1 |= (1<<15);
396 RCC->CTLR |= ((uint32_t)RCC_HSEON);
401 HSEStatus = RCC->CTLR & RCC_HSERDY;
403 }
while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
405 if ((RCC->CTLR & RCC_HSERDY) != RESET)
407 HSEStatus = (uint32_t)0x01;
411 HSEStatus = (uint32_t)0x00;
414 if (HSEStatus == (uint32_t)0x01)
417 FLASH->ACTLR &= (uint32_t)((uint32_t)~FLASH_ACTLR_LATENCY);
418 FLASH->ACTLR |= (uint32_t)FLASH_ACTLR_LATENCY_1;
421 RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1;
424 RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC));
425 RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE_Mul2);
428 RCC->CTLR |= RCC_PLLON;
430 while((RCC->CTLR & RCC_PLLRDY) == 0)
434 RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW));
435 RCC->CFGR0 |= (uint32_t)RCC_SW_PLL;
437 while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08)
static void SetSysClock(void)
#define SYSCLK_FREQ_48MHz_HSE
static void SetSysClockTo_48MHz_HSE(void)
__I uint8_t AHBPrescTable[16]
void SystemCoreClockUpdate(void)