55#if !defined (HSE_VALUE)
56#define HSE_VALUE ((uint32_t)25000000)
59#if !defined (CSI_VALUE)
60 #define CSI_VALUE ((uint32_t)4000000)
63#if !defined (HSI_VALUE)
64 #define HSI_VALUE ((uint32_t)64000000)
95#if defined(USER_VECT_TAB_ADDRESS)
96#if defined(DUAL_CORE) && defined(CORE_CM4)
100#if defined(VECT_TAB_SRAM)
101#define VECT_TAB_BASE_ADDRESS D2_AXISRAM_BASE
103#define VECT_TAB_OFFSET 0x00000000U
106#define VECT_TAB_BASE_ADDRESS FLASH_BANK2_BASE
108#define VECT_TAB_OFFSET 0x00000000U
115#if defined(VECT_TAB_SRAM)
116#define VECT_TAB_BASE_ADDRESS D1_AXISRAM_BASE
118#define VECT_TAB_OFFSET 0x00000000U
121#define VECT_TAB_BASE_ADDRESS FLASH_BANK1_BASE
123#define VECT_TAB_OFFSET 0x00000000U
155 const uint8_t
D1CorePrescTable[16] = {0, 0, 0, 0, 1, 2, 3, 4, 1, 2, 3, 4, 6, 7, 8, 9};
182#if defined (DATA_IN_D2_SRAM)
183 __IO uint32_t tmpreg;
187 #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
188 SCB->CPACR |= ((3UL << (10*2))|(3UL << (11*2)));
193 if(FLASH_LATENCY_DEFAULT > (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY)))
196 MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, (uint32_t)(FLASH_LATENCY_DEFAULT));
200 RCC->CR |= RCC_CR_HSION;
203 RCC->CFGR = 0x00000000;
206 RCC->CR &= 0xEAF6ED7FU;
209 if(FLASH_LATENCY_DEFAULT < (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY)))
212 MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, (uint32_t)(FLASH_LATENCY_DEFAULT));
215#if defined(D3_SRAM_BASE)
217 RCC->D1CFGR = 0x00000000;
220 RCC->D2CFGR = 0x00000000;
223 RCC->D3CFGR = 0x00000000;
226 RCC->CDCFGR1 = 0x00000000;
229 RCC->CDCFGR2 = 0x00000000;
232 RCC->SRDCFGR = 0x00000000;
235 RCC->PLLCKSELR = 0x02020200;
238 RCC->PLLCFGR = 0x01FF0000;
240 RCC->PLL1DIVR = 0x01010280;
242 RCC->PLL1FRACR = 0x00000000;
245 RCC->PLL2DIVR = 0x01010280;
249 RCC->PLL2FRACR = 0x00000000;
251 RCC->PLL3DIVR = 0x01010280;
254 RCC->PLL3FRACR = 0x00000000;
257 RCC->CR &= 0xFFFBFFFFU;
260 RCC->CIER = 0x00000000;
262#if (STM32H7_DEV_ID == 0x450UL)
264 if((DBGMCU->IDCODE & 0xFFFF0000U) < 0x20000000U)
268 *((__IO uint32_t*)0x51008108) = 0x000000001U;
272#if defined(DATA_IN_D2_SRAM)
274#if defined(RCC_AHB2ENR_D2SRAM3EN)
275 RCC->AHB2ENR |= (RCC_AHB2ENR_D2SRAM1EN | RCC_AHB2ENR_D2SRAM2EN | RCC_AHB2ENR_D2SRAM3EN);
276#elif defined(RCC_AHB2ENR_D2SRAM2EN)
277 RCC->AHB2ENR |= (RCC_AHB2ENR_D2SRAM1EN | RCC_AHB2ENR_D2SRAM2EN);
279 RCC->AHB2ENR |= (RCC_AHB2ENR_AHBSRAM1EN | RCC_AHB2ENR_AHBSRAM2EN);
282 tmpreg = RCC->AHB2ENR;
286#if defined(DUAL_CORE) && defined(CORE_CM4)
288#if defined(USER_VECT_TAB_ADDRESS)
289 SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET;
293 if(READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN) == 0U)
296 SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
303 FMC_Bank1_R->BTCR[0] = 0x000030D2;
306 CLEAR_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
310#if defined(USER_VECT_TAB_ADDRESS)
311 SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET;
356 uint32_t pllp, pllsource, pllm, pllfracen, hsivalue, tmp;
357 uint32_t common_system_clock;
358 float_t fracn1, pllvco;
363 switch (RCC->CFGR & RCC_CFGR_SWS)
365 case RCC_CFGR_SWS_HSI:
366 common_system_clock = (uint32_t) (
HSI_VALUE >> ((RCC->CR & RCC_CR_HSIDIV)>> 3));
369 case RCC_CFGR_SWS_CSI:
373 case RCC_CFGR_SWS_HSE:
377 case RCC_CFGR_SWS_PLL1:
382 pllsource = (RCC->PLLCKSELR & RCC_PLLCKSELR_PLLSRC);
383 pllm = ((RCC->PLLCKSELR & RCC_PLLCKSELR_DIVM1)>> 4) ;
384 pllfracen = ((RCC->PLLCFGR & RCC_PLLCFGR_PLL1FRACEN)>>RCC_PLLCFGR_PLL1FRACEN_Pos);
385 fracn1 = (float_t)(uint32_t)(pllfracen* ((RCC->PLL1FRACR & RCC_PLL1FRACR_FRACN1)>> 3));
391 case RCC_PLLCKSELR_PLLSRC_HSI:
393 hsivalue = (
HSI_VALUE >> ((RCC->CR & RCC_CR_HSIDIV)>> 3)) ;
394 pllvco = ( (float_t)hsivalue / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );
398 case RCC_PLLCKSELR_PLLSRC_CSI:
399 pllvco = ((float_t)
CSI_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );
402 case RCC_PLLCKSELR_PLLSRC_HSE:
403 pllvco = ((float_t)
HSE_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );
407 hsivalue = (
HSI_VALUE >> ((RCC->CR & RCC_CR_HSIDIV)>> 3)) ;
408 pllvco = ((float_t)hsivalue / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 );
411 pllp = (((RCC->PLL1DIVR & RCC_PLL1DIVR_P1) >>9) + 1U ) ;
412 common_system_clock = (uint32_t)(float_t)(pllvco/(float_t)pllp);
416 common_system_clock = 0U;
421 common_system_clock = (uint32_t) (
HSI_VALUE >> ((RCC->CR & RCC_CR_HSIDIV)>> 3));
426#if defined (RCC_D1CFGR_D1CPRE)
427 tmp =
D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_D1CPRE)>> RCC_D1CFGR_D1CPRE_Pos];
430 common_system_clock >>= tmp;
436 tmp =
D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_CDCPRE)>> RCC_CDCFGR1_CDCPRE_Pos];
439 common_system_clock >>= tmp;
446#if defined(DUAL_CORE) && defined(CORE_CM4)
478#if defined(USE_PWR_LDO_SUPPLY)
481 PWR->CR3 = (PWR->CR3 & ~PWR_CR3_SMPSEN) | PWR_CR3_LDOEN;
484 PWR->CR3 |= PWR_CR3_LDOEN;
487 while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U)
489#elif defined(USE_PWR_EXTERNAL_SOURCE_SUPPLY)
492 PWR->CR3 = (PWR->CR3 & ~(PWR_CR3_SMPSEN | PWR_CR3_LDOEN)) | PWR_CR3_BYPASS;
494 PWR->CR3 = (PWR->CR3 & ~(PWR_CR3_LDOEN)) | PWR_CR3_BYPASS;
497 while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U)
499#elif defined(USE_PWR_DIRECT_SMPS_SUPPLY) && defined(SMPS)
501 PWR->CR3 &= ~(PWR_CR3_LDOEN);
503 while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U)
505#elif defined(USE_PWR_SMPS_1V8_SUPPLIES_LDO) && defined(SMPS)
507 PWR->CR3 |= PWR_CR3_SMPSLEVEL_0 | PWR_CR3_SMPSEN | PWR_CR3_LDOEN;
509 while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U)
511#elif defined(USE_PWR_SMPS_2V5_SUPPLIES_LDO) && defined(SMPS)
513 PWR->CR3 |= PWR_CR3_SMPSLEVEL_1 | PWR_CR3_SMPSEN | PWR_CR3_LDOEN;
515 while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U)
517#elif defined(USE_PWR_SMPS_1V8_SUPPLIES_EXT_AND_LDO) && defined(SMPS)
519 PWR->CR3 |= PWR_CR3_SMPSLEVEL_0 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_LDOEN;
521 while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U)
523#elif defined(USE_PWR_SMPS_2V5_SUPPLIES_EXT_AND_LDO) && defined(SMPS)
525 PWR->CR3 |= PWR_CR3_SMPSLEVEL_1 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_LDOEN;
527 while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U)
529#elif defined(USE_PWR_SMPS_1V8_SUPPLIES_EXT) && defined(SMPS)
531 PWR->CR3 = (PWR->CR3 & ~(PWR_CR3_LDOEN)) | PWR_CR3_SMPSLEVEL_0 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_BYPASS;
533 while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U)
535#elif defined(USE_PWR_SMPS_2V5_SUPPLIES_EXT) && defined(SMPS)
537 PWR->CR3 = (PWR->CR3 & ~(PWR_CR3_LDOEN)) | PWR_CR3_SMPSLEVEL_1 | PWR_CR3_SMPSEXTHP | PWR_CR3_SMPSEN | PWR_CR3_BYPASS;
539 while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0U)
void SystemInit(void)
Setup the microcontroller system Initialize the FPU setting and vector table location configuration.
void ExitRun0Mode(void)
Exit Run* mode and Configure the system Power Supply.
void SystemCoreClockUpdate(void)
Update SystemCoreClock variable according to Clock Register Values. The SystemCoreClock variable cont...
const uint8_t D1CorePrescTable[16]