1
1
/* mbed Microcontroller Library
2
- * Copyright (c) 2006-2017 ARM Limited
2
+ * Copyright (c) 2006-2019 ARM Limited
3
+ * Copyright (c) 2006-2019 STMicroelectronics
4
+ * SPDX-License-Identifier: Apache-2.0
3
5
*
4
6
* Licensed under the Apache License, Version 2.0 (the "License");
5
7
* you may not use this file except in compliance with the License.
33
35
#include "stm32l4xx.h"
34
36
#include "mbed_assert.h"
35
37
36
- /*!< Uncomment the following line if you need to relocate your vector Table in
37
- Internal SRAM. */
38
- /* #define VECT_TAB_SRAM */
39
- #define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field.
40
- This value must be a multiple of 0x200. */
41
-
42
-
43
38
// clock source is selected with CLOCK_SOURCE in json config
44
39
#define USE_PLL_HSE_EXTC 0x8 // Use external clock (ST Link MCO - not enabled by default)
45
- #define USE_PLL_HSE_XTAL 0x4 // Use external xtal (X3 on board - not provided by default )
40
+ #define USE_PLL_HSE_XTAL 0x4 // Use external xtal (X2 on board)
46
41
#define USE_PLL_HSI 0x2 // Use HSI internal clock
47
42
#define USE_PLL_MSI 0x1 // Use MSI internal clock
48
43
49
- #define DEBUG_MCO (0) // Output the MCO on PA8 for debugging (0=OFF, 1=SYSCLK, 2=HSE, 3=HSI, 4=MSI)
50
-
51
44
#if ( ((CLOCK_SOURCE ) & USE_PLL_HSE_XTAL ) || ((CLOCK_SOURCE ) & USE_PLL_HSE_EXTC ) )
52
45
uint8_t SetSysClock_PLL_HSE (uint8_t bypass );
53
46
#endif /* ((CLOCK_SOURCE) & USE_PLL_HSE_XTAL) || ((CLOCK_SOURCE) & USE_PLL_HSE_EXTC) */
@@ -64,12 +57,10 @@ uint8_t SetSysClock_PLL_MSI(void);
64
57
/**
65
58
* @brief Configures the System clock source, PLL Multiplier and Divider factors,
66
59
* AHB/APBx prescalers and Flash settings
67
- * @note This function should be called only once the RCC clock configuration
68
- * is reset to the default reset state (done in SystemInit() function).
60
+ * @note This function is called in mbed_sdk_init() and hal_deepsleep() functions
69
61
* @param None
70
62
* @retval None
71
63
*/
72
-
73
64
void SetSysClock (void )
74
65
{
75
66
#if ((CLOCK_SOURCE ) & USE_PLL_HSE_EXTC )
@@ -99,11 +90,6 @@ void SetSysClock(void)
99
90
}
100
91
}
101
92
}
102
-
103
- // Output clock on MCO1 pin(PA8) for debugging purpose
104
- #if DEBUG_MCO == 1
105
- HAL_RCC_MCOConfig (RCC_MCO1 , RCC_MCO1SOURCE_SYSCLK , RCC_MCODIV_1 );
106
- #endif
107
93
}
108
94
109
95
#if ( ((CLOCK_SOURCE ) & USE_PLL_HSE_XTAL ) || ((CLOCK_SOURCE ) & USE_PLL_HSE_EXTC ) )
@@ -114,85 +100,56 @@ uint8_t SetSysClock_PLL_HSE(uint8_t bypass)
114
100
{
115
101
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0 };
116
102
RCC_OscInitTypeDef RCC_OscInitStruct = {0 };
117
- RCC_PeriphCLKInitTypeDef RCC_PeriphClkInit = {0 };
118
-
119
- // Used to gain time after DeepSleep in case HSI is used
120
- if (__HAL_RCC_GET_FLAG (RCC_FLAG_HSIRDY ) != RESET ) {
121
- return 0 ;
122
- }
103
+ RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0 };
123
104
124
- // Select MSI as system clock source to allow modification of the PLL configuration
125
- RCC_ClkInitStruct . ClockType = RCC_CLOCKTYPE_SYSCLK ;
126
- RCC_ClkInitStruct . SYSCLKSource = RCC_SYSCLKSOURCE_MSI ;
127
- HAL_RCC_ClockConfig ( & RCC_ClkInitStruct , FLASH_LATENCY_0 );
105
+ if ( HAL_PWREx_ControlVoltageScaling ( PWR_REGULATOR_VOLTAGE_SCALE1_BOOST ) != HAL_OK )
106
+ {
107
+ return 0 ; // FAIL
108
+ }
128
109
129
110
// Enable HSE oscillator and activate PLL with HSE as source
130
- RCC_OscInitStruct .OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI ;
111
+ RCC_OscInitStruct .OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_HSI48 ;
131
112
if (bypass == 0 ) {
132
- RCC_OscInitStruct .HSEState = RCC_HSE_ON ; // External 8 MHz xtal on OSC_IN/OSC_OUT
113
+ RCC_OscInitStruct .HSEState = RCC_HSE_ON ; // External 16 MHz xtal on OSC_IN/OSC_OUT
133
114
} else {
134
- RCC_OscInitStruct .HSEState = RCC_HSE_BYPASS ; // External 8 MHz clock on OSC_IN
115
+ RCC_OscInitStruct .HSEState = RCC_HSE_BYPASS ; // External 16 MHz clock on OSC_IN
135
116
}
136
117
RCC_OscInitStruct .HSIState = RCC_HSI_OFF ;
137
- RCC_OscInitStruct .PLL .PLLSource = RCC_PLLSOURCE_HSE ; // 8 MHz
118
+ #if DEVICE_USBDEVICE
119
+ RCC_OscInitStruct .HSI48State = RCC_HSI48_ON ;
120
+ #else
121
+ RCC_OscInitStruct .HSI48State = RCC_HSI48_OFF ;
122
+ #endif /* DEVICE_USBDEVICE */
123
+ RCC_OscInitStruct .PLL .PLLSource = RCC_PLLSOURCE_HSE ; // 16 MHz
138
124
RCC_OscInitStruct .PLL .PLLState = RCC_PLL_ON ;
139
- RCC_OscInitStruct .PLL .PLLM = 1 ; // VCO input clock = 8 MHz (8 MHz / 1)
140
- RCC_OscInitStruct .PLL .PLLN = 30 ; // VCO output clock = 240 MHz (8 MHz * 30)
125
+ RCC_OscInitStruct .PLL .PLLM = 4 ; // 4 MHz
126
+ RCC_OscInitStruct .PLL .PLLN = 60 ; // 240 MHz
141
127
RCC_OscInitStruct .PLL .PLLP = 7 ;
142
128
RCC_OscInitStruct .PLL .PLLQ = 2 ;
143
- RCC_OscInitStruct .PLL .PLLR = 2 ; // PLL clock = 120 MHz (240 MHz / 2)
129
+ RCC_OscInitStruct .PLL .PLLR = 2 ; // PLL clock = 120 MHz
144
130
145
131
if (HAL_RCC_OscConfig (& RCC_OscInitStruct ) != HAL_OK ) {
146
132
return 0 ; // FAIL
147
133
}
148
134
135
+ #if DEVICE_USBDEVICE
136
+ PeriphClkInitStruct .PeriphClockSelection = RCC_PERIPHCLK_USB ;
137
+ PeriphClkInitStruct .UsbClockSelection = RCC_USBCLKSOURCE_HSI48 ; /* 48 MHz */
138
+ if (HAL_RCCEx_PeriphCLKConfig (& PeriphClkInitStruct ) != HAL_OK ) {
139
+ return 0 ; // FAIL
140
+ }
141
+ #endif /* DEVICE_USBDEVICE */
142
+
149
143
// Select PLL clock as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers
150
144
RCC_ClkInitStruct .ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2 );
151
145
RCC_ClkInitStruct .SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK ; // 120 MHz
152
146
RCC_ClkInitStruct .AHBCLKDivider = RCC_SYSCLK_DIV1 ; // 120 MHz
153
147
RCC_ClkInitStruct .APB1CLKDivider = RCC_HCLK_DIV1 ; // 120 MHz
154
148
RCC_ClkInitStruct .APB2CLKDivider = RCC_HCLK_DIV1 ; // 120 MHz
155
- if (HAL_RCC_ClockConfig (& RCC_ClkInitStruct , FLASH_LATENCY_4 ) != HAL_OK ) {
156
- return 0 ; // FAIL
157
- }
158
-
159
- #if DEVICE_USBDEVICE
160
- RCC_PeriphClkInit .PeriphClockSelection = RCC_PERIPHCLK_USB ;
161
- RCC_PeriphClkInit .UsbClockSelection = RCC_USBCLKSOURCE_PLLSAI1 ;
162
- RCC_PeriphClkInit .PLLSAI1 .PLLSAI1Source = RCC_PLLSOURCE_HSE ;
163
- RCC_PeriphClkInit .PLLSAI1 .PLLSAI1M = 1 ;
164
- RCC_PeriphClkInit .PLLSAI1 .PLLSAI1N = 12 ; // 96 MHz
165
- RCC_PeriphClkInit .PLLSAI1 .PLLSAI1P = RCC_PLLP_DIV7 ;
166
- RCC_PeriphClkInit .PLLSAI1 .PLLSAI1Q = RCC_PLLQ_DIV2 ; // 48 MHz
167
- RCC_PeriphClkInit .PLLSAI1 .PLLSAI1R = RCC_PLLR_DIV2 ;
168
- RCC_PeriphClkInit .PLLSAI1 .PLLSAI1ClockOut = RCC_PLLSAI1_48M2CLK ;
169
- if (HAL_RCCEx_PeriphCLKConfig (& RCC_PeriphClkInit ) != HAL_OK ) {
170
- return 0 ; // FAIL
171
- }
172
- #endif /* DEVICE_USBDEVICE */
173
-
174
- // Disable MSI Oscillator
175
- RCC_OscInitStruct .OscillatorType = RCC_OSCILLATORTYPE_MSI ;
176
- RCC_OscInitStruct .MSIState = RCC_MSI_OFF ;
177
- RCC_OscInitStruct .PLL .PLLState = RCC_PLL_NONE ; // No PLL update
178
- HAL_RCC_OscConfig (& RCC_OscInitStruct );
179
-
180
- /* Select HSI as clock source for LPUART1 */
181
- RCC_PeriphClkInit .PeriphClockSelection = RCC_PERIPHCLK_LPUART1 ;
182
- RCC_PeriphClkInit .Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_HSI ;
183
- if (HAL_RCCEx_PeriphCLKConfig (& RCC_PeriphClkInit ) != HAL_OK ) {
149
+ if (HAL_RCC_ClockConfig (& RCC_ClkInitStruct , FLASH_LATENCY_5 ) != HAL_OK ) {
184
150
return 0 ; // FAIL
185
151
}
186
152
187
- // Output clock on MCO1 pin(PA8) for debugging purpose
188
- #if DEBUG_MCO == 2
189
- if (bypass == 0 ) {
190
- HAL_RCC_MCOConfig (RCC_MCO1 , RCC_MCO1SOURCE_HSE , RCC_MCODIV_2 ); // 4 MHz
191
- } else {
192
- HAL_RCC_MCOConfig (RCC_MCO1 , RCC_MCO1SOURCE_HSE , RCC_MCODIV_1 ); // 8 MHz
193
- }
194
- #endif
195
-
196
153
return 1 ; // OK
197
154
}
198
155
#endif /* ((CLOCK_SOURCE) & USE_PLL_HSE_XTAL) || ((CLOCK_SOURCE) & USE_PLL_HSE_EXTC) */
@@ -205,72 +162,62 @@ uint8_t SetSysClock_PLL_HSI(void)
205
162
{
206
163
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0 };
207
164
RCC_OscInitTypeDef RCC_OscInitStruct = {0 };
208
- RCC_PeriphCLKInitTypeDef RCC_PeriphClkInit = {0 };
165
+ RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0 };
209
166
210
167
// Select MSI as system clock source to allow modification of the PLL configuration
211
168
RCC_ClkInitStruct .ClockType = RCC_CLOCKTYPE_SYSCLK ;
212
169
RCC_ClkInitStruct .SYSCLKSource = RCC_SYSCLKSOURCE_MSI ;
213
- HAL_RCC_ClockConfig (& RCC_ClkInitStruct , FLASH_LATENCY_0 );
170
+ if (HAL_RCC_ClockConfig (& RCC_ClkInitStruct , FLASH_LATENCY_0 ) != HAL_OK ) {
171
+ return 0 ; // FAIL
172
+ }
214
173
215
174
// Enable HSI oscillator and activate PLL with HSI as source
216
- RCC_OscInitStruct .OscillatorType = RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_HSE ;
175
+ RCC_OscInitStruct .OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_HSI48 ;
217
176
RCC_OscInitStruct .HSEState = RCC_HSE_OFF ;
218
177
RCC_OscInitStruct .HSIState = RCC_HSI_ON ;
219
178
RCC_OscInitStruct .HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT ;
179
+ #if DEVICE_USBDEVICE
180
+ RCC_OscInitStruct .HSI48State = RCC_HSI48_ON ;
181
+ #else
182
+ RCC_OscInitStruct .HSI48State = RCC_HSI48_OFF ;
183
+ #endif /* DEVICE_USBDEVICE */
220
184
RCC_OscInitStruct .PLL .PLLState = RCC_PLL_ON ;
221
185
RCC_OscInitStruct .PLL .PLLSource = RCC_PLLSOURCE_HSI ; // 16 MHz
222
- RCC_OscInitStruct .PLL .PLLM = 2 ; // VCO input clock = 8 MHz (16 MHz / 2)
223
- RCC_OscInitStruct .PLL .PLLN = 30 ; // VCO output clock = 240 MHz (8 MHz * 30)
186
+ RCC_OscInitStruct .PLL .PLLM = 4 ; // 4 MHz
187
+ RCC_OscInitStruct .PLL .PLLN = 60 ; // 240 MHz
224
188
RCC_OscInitStruct .PLL .PLLP = 7 ;
225
189
RCC_OscInitStruct .PLL .PLLQ = 2 ;
226
- RCC_OscInitStruct .PLL .PLLR = 2 ; // PLL clock = 120 MHz (240 MHz / 2)
190
+ RCC_OscInitStruct .PLL .PLLR = 2 ; // PLL clock = 120 MHz
227
191
if (HAL_RCC_OscConfig (& RCC_OscInitStruct ) != HAL_OK ) {
228
192
return 0 ; // FAIL
229
193
}
230
194
195
+ #if DEVICE_USBDEVICE
196
+ PeriphClkInitStruct .PeriphClockSelection = RCC_PERIPHCLK_USB ;
197
+ PeriphClkInitStruct .UsbClockSelection = RCC_USBCLKSOURCE_HSI48 ; /* 48 MHz */
198
+ if (HAL_RCCEx_PeriphCLKConfig (& PeriphClkInitStruct ) != HAL_OK ) {
199
+ return 0 ; // FAIL
200
+ }
201
+ #endif /* DEVICE_USBDEVICE */
202
+
231
203
// Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers
232
204
RCC_ClkInitStruct .ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2 );
233
205
RCC_ClkInitStruct .SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK ; // 120 MHz
234
206
RCC_ClkInitStruct .AHBCLKDivider = RCC_SYSCLK_DIV1 ; // 120 MHz
235
207
RCC_ClkInitStruct .APB1CLKDivider = RCC_HCLK_DIV1 ; // 120 MHz
236
208
RCC_ClkInitStruct .APB2CLKDivider = RCC_HCLK_DIV1 ; // 120 MHz
237
- if (HAL_RCC_ClockConfig (& RCC_ClkInitStruct , FLASH_LATENCY_4 ) != HAL_OK ) {
238
- return 0 ; // FAIL
239
- }
240
-
241
- #if DEVICE_USBDEVICE
242
- RCC_PeriphClkInit .PeriphClockSelection = RCC_PERIPHCLK_USB ;
243
- RCC_PeriphClkInit .UsbClockSelection = RCC_USBCLKSOURCE_PLLSAI1 ;
244
- RCC_PeriphClkInit .PLLSAI1 .PLLSAI1Source = RCC_PLLSOURCE_HSI ;
245
- RCC_PeriphClkInit .PLLSAI1 .PLLSAI1M = 2 ;
246
- RCC_PeriphClkInit .PLLSAI1 .PLLSAI1N = 12 ;
247
- RCC_PeriphClkInit .PLLSAI1 .PLLSAI1P = RCC_PLLP_DIV7 ;
248
- RCC_PeriphClkInit .PLLSAI1 .PLLSAI1Q = RCC_PLLQ_DIV2 ;
249
- RCC_PeriphClkInit .PLLSAI1 .PLLSAI1R = RCC_PLLR_DIV2 ;
250
- RCC_PeriphClkInit .PLLSAI1 .PLLSAI1ClockOut = RCC_PLLSAI1_48M2CLK ;
251
- if (HAL_RCCEx_PeriphCLKConfig (& RCC_PeriphClkInit ) != HAL_OK ) {
209
+ if (HAL_RCC_ClockConfig (& RCC_ClkInitStruct , FLASH_LATENCY_5 ) != HAL_OK ) {
252
210
return 0 ; // FAIL
253
211
}
254
- #endif /* DEVICE_USBDEVICE */
255
212
256
213
// Disable MSI Oscillator
257
214
RCC_OscInitStruct .OscillatorType = RCC_OSCILLATORTYPE_MSI ;
258
215
RCC_OscInitStruct .MSIState = RCC_MSI_OFF ;
259
216
RCC_OscInitStruct .PLL .PLLState = RCC_PLL_NONE ; // No PLL update
260
- HAL_RCC_OscConfig (& RCC_OscInitStruct );
261
-
262
- /* Select HSI as clock source for LPUART1 */
263
- RCC_PeriphClkInit .PeriphClockSelection = RCC_PERIPHCLK_LPUART1 ;
264
- RCC_PeriphClkInit .Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_HSI ;
265
- if (HAL_RCCEx_PeriphCLKConfig (& RCC_PeriphClkInit ) != HAL_OK ) {
217
+ if (HAL_RCC_OscConfig (& RCC_OscInitStruct ) != HAL_OK ) {
266
218
return 0 ; // FAIL
267
219
}
268
220
269
- // Output clock on MCO1 pin(PA8) for debugging purpose
270
- #if DEBUG_MCO == 3
271
- HAL_RCC_MCOConfig (RCC_MCO1 , RCC_MCO1SOURCE_HSI , RCC_MCODIV_1 ); // 16 MHz
272
- #endif
273
-
274
221
return 1 ; // OK
275
222
}
276
223
#endif /* ((CLOCK_SOURCE) & USE_PLL_HSI) */
@@ -295,17 +242,22 @@ uint8_t SetSysClock_PLL_MSI(void)
295
242
296
243
HAL_RCCEx_DisableLSECSS ();
297
244
/* Enable MSI Oscillator and activate PLL with MSI as source */
298
- RCC_OscInitStruct .OscillatorType = RCC_OSCILLATORTYPE_MSI | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_HSE ;
299
- RCC_OscInitStruct .MSIState = RCC_MSI_ON ;
300
- RCC_OscInitStruct .HSEState = RCC_HSE_OFF ;
301
- RCC_OscInitStruct .HSIState = RCC_HSI_OFF ;
245
+ RCC_OscInitStruct .OscillatorType = RCC_OSCILLATORTYPE_MSI | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_HSI48 | RCC_OSCILLATORTYPE_HSE ;
246
+ RCC_OscInitStruct .MSIState = RCC_MSI_ON ;
247
+ RCC_OscInitStruct .HSEState = RCC_HSE_OFF ;
248
+ RCC_OscInitStruct .HSIState = RCC_HSI_OFF ;
249
+ #if DEVICE_USBDEVICE
250
+ RCC_OscInitStruct .HSI48State = RCC_HSI48_ON ;
251
+ #else
252
+ RCC_OscInitStruct .HSI48State = RCC_HSI48_OFF ;
253
+ #endif /* DEVICE_USBDEVICE */
302
254
RCC_OscInitStruct .MSICalibrationValue = RCC_MSICALIBRATION_DEFAULT ;
303
- RCC_OscInitStruct .MSIClockRange = RCC_MSIRANGE_11 ; /* 48 MHz */
255
+ RCC_OscInitStruct .MSIClockRange = RCC_MSIRANGE_6 ; /* 4 MHz */
304
256
RCC_OscInitStruct .PLL .PLLState = RCC_PLL_ON ;
305
257
RCC_OscInitStruct .PLL .PLLSource = RCC_PLLSOURCE_MSI ;
306
- RCC_OscInitStruct .PLL .PLLM = 6 ; /* 8 MHz */
307
- RCC_OscInitStruct .PLL .PLLN = 30 ; /* 240 MHz */
308
- RCC_OscInitStruct .PLL .PLLP = 5 ; /* 48 MHz */
258
+ RCC_OscInitStruct .PLL .PLLM = 1 ; /* 4 MHz */
259
+ RCC_OscInitStruct .PLL .PLLN = 60 ; /* 240 MHz */
260
+ RCC_OscInitStruct .PLL .PLLP = 7 ; /* 48 MHz */
309
261
RCC_OscInitStruct .PLL .PLLQ = 2 ; /* 120 MHz */
310
262
RCC_OscInitStruct .PLL .PLLR = 2 ; /* 120 MHz */
311
263
if (HAL_RCC_OscConfig (& RCC_OscInitStruct ) != HAL_OK ) {
@@ -315,10 +267,11 @@ uint8_t SetSysClock_PLL_MSI(void)
315
267
HAL_RCCEx_EnableMSIPLLMode ();
316
268
317
269
#if DEVICE_USBDEVICE
318
- /* Select MSI output as USB clock source */
319
270
PeriphClkInitStruct .PeriphClockSelection = RCC_PERIPHCLK_USB ;
320
- PeriphClkInitStruct .UsbClockSelection = RCC_USBCLKSOURCE_MSI ; /* 48 MHz */
321
- HAL_RCCEx_PeriphCLKConfig (& PeriphClkInitStruct );
271
+ PeriphClkInitStruct .UsbClockSelection = RCC_USBCLKSOURCE_HSI48 ; /* 48 MHz */
272
+ if (HAL_RCCEx_PeriphCLKConfig (& PeriphClkInitStruct ) != HAL_OK ) {
273
+ return 0 ; // FAIL
274
+ }
322
275
#endif /* DEVICE_USBDEVICE */
323
276
324
277
// Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers
@@ -327,22 +280,10 @@ uint8_t SetSysClock_PLL_MSI(void)
327
280
RCC_ClkInitStruct .AHBCLKDivider = RCC_SYSCLK_DIV1 ; /* 120 MHz */
328
281
RCC_ClkInitStruct .APB1CLKDivider = RCC_HCLK_DIV1 ; /* 120 MHz */
329
282
RCC_ClkInitStruct .APB2CLKDivider = RCC_HCLK_DIV1 ; /* 120 MHz */
330
- if (HAL_RCC_ClockConfig (& RCC_ClkInitStruct , FLASH_LATENCY_4 ) != HAL_OK ) {
283
+ if (HAL_RCC_ClockConfig (& RCC_ClkInitStruct , FLASH_LATENCY_5 ) != HAL_OK ) {
331
284
return 0 ; // FAIL
332
285
}
333
286
334
- /* Select LSE as clock source for LPUART1 */
335
- PeriphClkInitStruct .PeriphClockSelection = RCC_PERIPHCLK_LPUART1 ;
336
- PeriphClkInitStruct .Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_LSE ;
337
- if (HAL_RCCEx_PeriphCLKConfig (& PeriphClkInitStruct ) != HAL_OK ) {
338
- return 0 ; // FAIL
339
- }
340
-
341
- // Output clock on MCO1 pin(PA8) for debugging purpose
342
- #if DEBUG_MCO == 4
343
- HAL_RCC_MCOConfig (RCC_MCO1 , RCC_MCO1SOURCE_MSI , RCC_MCODIV_2 ); // 2 MHz
344
- #endif
345
-
346
287
return 1 ; // OK
347
288
}
348
289
#endif /* ((CLOCK_SOURCE) & USE_PLL_MSI) */
0 commit comments