|
58 | 58 | //--------------------------------------------------------------------+
|
59 | 59 | // RCC Clock
|
60 | 60 | //--------------------------------------------------------------------+
|
| 61 | +#if 1 |
| 62 | +static inline void board_clock_init(void) |
| 63 | +{ |
| 64 | + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; |
| 65 | + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; |
| 66 | + |
| 67 | + /** Configure the main internal regulator output voltage */ |
| 68 | + HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1); |
| 69 | + |
| 70 | + /** Initializes the RCC Oscillators according to the specified parameters |
| 71 | + * in the RCC_OscInitTypeDef structure. */ |
| 72 | + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; |
| 73 | + RCC_OscInitStruct.HSIState = RCC_HSI_ON; |
| 74 | + RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1; |
| 75 | + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; |
| 76 | + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; |
| 77 | + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; |
| 78 | + RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1; |
| 79 | + RCC_OscInitStruct.PLL.PLLN = 8; |
| 80 | + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; |
| 81 | + RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2; |
| 82 | + RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2; |
| 83 | + HAL_RCC_OscConfig(&RCC_OscInitStruct); |
| 84 | + |
| 85 | + /** Initializes the CPU, AHB and APB buses clocks */ |
| 86 | + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1; |
| 87 | + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; |
| 88 | + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; |
| 89 | + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; |
| 90 | + HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2); |
| 91 | + |
| 92 | + // Configure CRS clock source |
| 93 | + __HAL_RCC_CRS_CLK_ENABLE(); |
| 94 | + RCC_CRSInitTypeDef RCC_CRSInitStruct = {0}; |
| 95 | + RCC_CRSInitStruct.Prescaler = RCC_CRS_SYNC_DIV1; |
| 96 | + RCC_CRSInitStruct.Source = RCC_CRS_SYNC_SOURCE_USB; |
| 97 | + RCC_CRSInitStruct.Polarity = RCC_CRS_SYNC_POLARITY_RISING; |
| 98 | + RCC_CRSInitStruct.ReloadValue = __HAL_RCC_CRS_RELOADVALUE_CALCULATE(48000000,1000); |
| 99 | + RCC_CRSInitStruct.ErrorLimitValue = 34; |
| 100 | + RCC_CRSInitStruct.HSI48CalibrationValue = 32; |
| 101 | + |
| 102 | + HAL_RCCEx_CRSConfig(&RCC_CRSInitStruct); |
| 103 | + |
| 104 | + /* Select HSI48 as USB clock source */ |
| 105 | + RCC_PeriphCLKInitTypeDef usb_clk = {0 }; |
| 106 | + usb_clk.PeriphClockSelection = RCC_PERIPHCLK_USB; |
| 107 | + usb_clk.UsbClockSelection = RCC_USBCLKSOURCE_HSI48; |
| 108 | + HAL_RCCEx_PeriphCLKConfig(&usb_clk); |
| 109 | + |
| 110 | + // Enable HSI48 |
| 111 | + RCC_OscInitTypeDef osc_hsi48 = {0}; |
| 112 | + osc_hsi48.OscillatorType = RCC_OSCILLATORTYPE_HSI48; |
| 113 | + osc_hsi48.HSI48State = RCC_HSI48_ON; |
| 114 | + HAL_RCC_OscConfig(&osc_hsi48); |
| 115 | +} |
| 116 | +#else |
61 | 117 | static inline void board_clock_init(void)
|
62 | 118 | {
|
63 | 119 | RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
@@ -93,8 +149,8 @@ static inline void board_clock_init(void)
|
93 | 149 | RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
|
94 | 150 |
|
95 | 151 | HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);
|
96 |
| - |
97 | 152 | }
|
| 153 | +#endif |
98 | 154 |
|
99 | 155 | #ifdef __cplusplus
|
100 | 156 | }
|
|
0 commit comments