Advertisement
wojiaocbj

clock tree

Nov 11th, 2022
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.02 KB | None | 0 0
  1. void clock_init(u32 plln, u32 pllm, u32 pllp, u32 pllq, u32 pllr){
  2.     HAL_StatusTypeDef ret = HAL_OK;
  3.     RCC_ClkInitTypeDef RCC_ClkInitStruct;
  4.     RCC_OscInitTypeDef RCC_OscInitStruct;
  5.     MODIFY_REG(PWR->CR3, PWR_CR3_SCUEN, 0);
  6.     __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
  7.     while((PWR->D3CR & (PWR_D3CR_VOSRDY)) != PWR_D3CR_VOSRDY){}
  8.     RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  9.     RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  10.     RCC_OscInitStruct.HSIState = RCC_HSI_OFF;
  11.     RCC_OscInitStruct.CSIState = RCC_CSI_OFF;
  12.     RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  13.     RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  14.     RCC_OscInitStruct.PLL.PLLN = plln;
  15.     RCC_OscInitStruct.PLL.PLLM = pllm;
  16.     RCC_OscInitStruct.PLL.PLLP = pllp;
  17.     RCC_OscInitStruct.PLL.PLLQ = pllq;
  18.     RCC_OscInitStruct.PLL.PLLR = pllr;
  19.     RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;
  20.     RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2;
  21.     ret = HAL_RCC_OscConfig(&RCC_OscInitStruct);
  22.     if(ret)for(;;);
  23.     RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_D1PCLK1 | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2 | RCC_CLOCKTYPE_D3PCLK1);
  24.     RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  25.     RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
  26.     RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
  27.     RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
  28.     RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
  29.     RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;
  30.     RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV4;
  31.     ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
  32.     if(ret)for(;;);
  33.     __HAL_RCC_CSI_ENABLE();
  34.     __HAL_RCC_SYSCFG_CLK_ENABLE();
  35.     HAL_EnableCompensationCell();
  36.     __HAL_RCC_D2SRAM1_CLK_ENABLE();
  37.     __HAL_RCC_D2SRAM2_CLK_ENABLE();
  38.     __HAL_RCC_D2SRAM3_CLK_ENABLE();
  39.     __GPIOA_CLK_ENABLE();
  40.     __GPIOB_CLK_ENABLE();
  41.     __GPIOC_CLK_ENABLE();
  42.     __GPIOD_CLK_ENABLE();
  43.     __GPIOE_CLK_ENABLE();
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement