Skip to content

Commit 6280cba

Browse files
committed
tested with g0b1 nucleo
1 parent 6b44d8f commit 6280cba

File tree

1 file changed

+57
-1
lines changed
  • hw/bsp/stm32g0/boards/stm32g0b1nucleo

1 file changed

+57
-1
lines changed

hw/bsp/stm32g0/boards/stm32g0b1nucleo/board.h

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,62 @@
5858
//--------------------------------------------------------------------+
5959
// RCC Clock
6060
//--------------------------------------------------------------------+
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
61117
static inline void board_clock_init(void)
62118
{
63119
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
@@ -93,8 +149,8 @@ static inline void board_clock_init(void)
93149
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
94150

95151
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);
96-
97152
}
153+
#endif
98154

99155
#ifdef __cplusplus
100156
}

0 commit comments

Comments
 (0)