Skip to content

Commit 95e58e6

Browse files
committed
Enable USB clock for Nucleo L053R8
Fix #1181 Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent 2fe15c1 commit 95e58e6

File tree

1 file changed

+28
-19
lines changed

1 file changed

+28
-19
lines changed

variants/NUCLEO_L053R8/variant.cpp

+28-19
Original file line numberDiff line numberDiff line change
@@ -116,35 +116,44 @@ extern "C" {
116116
*/
117117
WEAK void SystemClock_Config(void)
118118
{
119-
RCC_OscInitTypeDef RCC_OscInitStruct;
120-
RCC_ClkInitTypeDef RCC_ClkInitStruct;
121-
RCC_PeriphCLKInitTypeDef PeriphClkInit;
122-
123-
__HAL_RCC_PWR_CLK_ENABLE();
119+
RCC_OscInitTypeDef RCC_OscInitStruct = {};
120+
RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
124121

122+
/* Configure the main internal regulator output voltage */
125123
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
126-
127-
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
128-
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
129-
RCC_OscInitStruct.HSICalibrationValue = 16;
124+
/*
125+
* Initializes the RCC Oscillators according to the specified parameters
126+
* in the RCC_OscInitTypeDef structure.
127+
*/
128+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
129+
RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
130130
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
131-
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
132-
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_4;
133-
RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_2;
134-
HAL_RCC_OscConfig(&RCC_OscInitStruct);
135-
131+
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
132+
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_12;
133+
RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_3;
134+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
135+
Error_Handler();
136+
}
137+
/* Initializes the CPU, AHB and APB buses clocks */
136138
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
137139
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
138140
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
139141
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
140142
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
141143
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
142-
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1);
143144

144-
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_I2C1;
145-
PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1;
146-
PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_PCLK1;
147-
HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);
145+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) {
146+
Error_Handler();
147+
}
148+
149+
#ifdef USBCON
150+
RCC_PeriphCLKInitTypeDef PeriphClkInit = {};
151+
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB;
152+
PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL;
153+
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) {
154+
Error_Handler();
155+
}
156+
#endif
148157
}
149158

150159
#ifdef __cplusplus

0 commit comments

Comments
 (0)