comparison l476rg/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc.h @ 0:32a3b1785697

a rough draft of Hardware Abstraction Layer for C++ STM32L476RG drivers
author cin
date Thu, 12 Jan 2017 02:45:43 +0300
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:32a3b1785697
1 /**
2 ******************************************************************************
3 * @file stm32l4xx_hal_rcc.h
4 * @author MCD Application Team
5 * @version V1.6.0
6 * @date 28-October-2016
7 * @brief Header file of RCC HAL module.
8 ******************************************************************************
9 * @attention
10 *
11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
12 *
13 * Redistribution and use in source and binary forms, with or without modification,
14 * are permitted provided that the following conditions are met:
15 * 1. Redistributions of source code must retain the above copyright notice,
16 * this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above copyright notice,
18 * this list of conditions and the following disclaimer in the documentation
19 * and/or other materials provided with the distribution.
20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
21 * may be used to endorse or promote products derived from this software
22 * without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 *
35 ******************************************************************************
36 */
37
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32L4xx_HAL_RCC_H
40 #define __STM32L4xx_HAL_RCC_H
41
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45
46 /* Includes ------------------------------------------------------------------*/
47 #include "stm32l4xx_hal_def.h"
48
49 /** @addtogroup STM32L4xx_HAL_Driver
50 * @{
51 */
52
53 /** @addtogroup RCC
54 * @{
55 */
56
57 /* Exported types ------------------------------------------------------------*/
58 /** @defgroup RCC_Exported_Types RCC Exported Types
59 * @{
60 */
61
62 /**
63 * @brief RCC PLL configuration structure definition
64 */
65 typedef struct
66 {
67 uint32_t PLLState; /*!< The new state of the PLL.
68 This parameter can be a value of @ref RCC_PLL_Config */
69
70 uint32_t PLLSource; /*!< RCC_PLLSource: PLL entry clock source.
71 This parameter must be a value of @ref RCC_PLL_Clock_Source */
72
73 uint32_t PLLM; /*!< PLLM: Division factor for PLL VCO input clock.
74 This parameter must be a number between Min_Data = 1 and Max_Data = 8 */
75
76 uint32_t PLLN; /*!< PLLN: Multiplication factor for PLL VCO output clock.
77 This parameter must be a number between Min_Data = 8 and Max_Data = 86 */
78
79 uint32_t PLLP; /*!< PLLP: Division factor for SAI clock.
80 This parameter must be a value of @ref RCC_PLLP_Clock_Divider */
81
82 uint32_t PLLQ; /*!< PLLQ: Division factor for SDMMC1, RNG and USB clocks.
83 This parameter must be a value of @ref RCC_PLLQ_Clock_Divider */
84
85 uint32_t PLLR; /*!< PLLR: Division for the main system clock.
86 User have to set the PLLR parameter correctly to not exceed max frequency 80MHZ.
87 This parameter must be a value of @ref RCC_PLLR_Clock_Divider */
88
89 }RCC_PLLInitTypeDef;
90
91 /**
92 * @brief RCC Internal/External Oscillator (HSE, HSI, MSI, LSE and LSI) configuration structure definition
93 */
94 typedef struct
95 {
96 uint32_t OscillatorType; /*!< The oscillators to be configured.
97 This parameter can be a value of @ref RCC_Oscillator_Type */
98
99 uint32_t HSEState; /*!< The new state of the HSE.
100 This parameter can be a value of @ref RCC_HSE_Config */
101
102 uint32_t LSEState; /*!< The new state of the LSE.
103 This parameter can be a value of @ref RCC_LSE_Config */
104
105 uint32_t HSIState; /*!< The new state of the HSI.
106 This parameter can be a value of @ref RCC_HSI_Config */
107
108 uint32_t HSICalibrationValue; /*!< The calibration trimming value (default is RCC_HSICALIBRATION_DEFAULT).
109 This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x1F on STM32L43x/STM32L44x/STM32L47x/STM32L48x devices.
110 This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7F on the other devices */
111
112 uint32_t LSIState; /*!< The new state of the LSI.
113 This parameter can be a value of @ref RCC_LSI_Config */
114
115 uint32_t MSIState; /*!< The new state of the MSI.
116 This parameter can be a value of @ref RCC_MSI_Config */
117
118 uint32_t MSICalibrationValue; /*!< The calibration trimming value (default is RCC_MSICALIBRATION_DEFAULT).
119 This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF */
120
121 uint32_t MSIClockRange; /*!< The MSI frequency range.
122 This parameter can be a value of @ref RCC_MSI_Clock_Range */
123
124 uint32_t HSI48State; /*!< The new state of the HSI48 (only applicable to STM32L43x/STM32L44x/STM32L45x/STM32L46x devices).
125 This parameter can be a value of @ref RCC_HSI48_Config */
126
127 RCC_PLLInitTypeDef PLL; /*!< Main PLL structure parameters */
128
129 }RCC_OscInitTypeDef;
130
131 /**
132 * @brief RCC System, AHB and APB busses clock configuration structure definition
133 */
134 typedef struct
135 {
136 uint32_t ClockType; /*!< The clock to be configured.
137 This parameter can be a value of @ref RCC_System_Clock_Type */
138
139 uint32_t SYSCLKSource; /*!< The clock source used as system clock (SYSCLK).
140 This parameter can be a value of @ref RCC_System_Clock_Source */
141
142 uint32_t AHBCLKDivider; /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK).
143 This parameter can be a value of @ref RCC_AHB_Clock_Source */
144
145 uint32_t APB1CLKDivider; /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK).
146 This parameter can be a value of @ref RCC_APB1_APB2_Clock_Source */
147
148 uint32_t APB2CLKDivider; /*!< The APB2 clock (PCLK2) divider. This clock is derived from the AHB clock (HCLK).
149 This parameter can be a value of @ref RCC_APB1_APB2_Clock_Source */
150
151 }RCC_ClkInitTypeDef;
152
153 /**
154 * @}
155 */
156
157 /* Exported constants --------------------------------------------------------*/
158 /** @defgroup RCC_Exported_Constants RCC Exported Constants
159 * @{
160 */
161
162 /** @defgroup RCC_Timeout_Value Timeout Values
163 * @{
164 */
165 #define RCC_DBP_TIMEOUT_VALUE ((uint32_t)2U) /* 2 ms (minimum Tick + 1) */
166 #define RCC_LSE_TIMEOUT_VALUE LSE_STARTUP_TIMEOUT
167 /**
168 * @}
169 */
170
171 /** @defgroup RCC_Oscillator_Type Oscillator Type
172 * @{
173 */
174 #define RCC_OSCILLATORTYPE_NONE ((uint32_t)0x00000000U) /*!< Oscillator configuration unchanged */
175 #define RCC_OSCILLATORTYPE_HSE ((uint32_t)0x00000001U) /*!< HSE to configure */
176 #define RCC_OSCILLATORTYPE_HSI ((uint32_t)0x00000002U) /*!< HSI to configure */
177 #define RCC_OSCILLATORTYPE_LSE ((uint32_t)0x00000004U) /*!< LSE to configure */
178 #define RCC_OSCILLATORTYPE_LSI ((uint32_t)0x00000008U) /*!< LSI to configure */
179 #define RCC_OSCILLATORTYPE_MSI ((uint32_t)0x00000010U) /*!< MSI to configure */
180 #if defined(RCC_HSI48_SUPPORT)
181 #define RCC_OSCILLATORTYPE_HSI48 ((uint32_t)0x00000020U) /*!< HSI48 to configure */
182 #endif /* RCC_HSI48_SUPPORT */
183 /**
184 * @}
185 */
186
187 /** @defgroup RCC_HSE_Config HSE Config
188 * @{
189 */
190 #define RCC_HSE_OFF ((uint32_t)0x00000000U) /*!< HSE clock deactivation */
191 #define RCC_HSE_ON RCC_CR_HSEON /*!< HSE clock activation */
192 #define RCC_HSE_BYPASS ((uint32_t)(RCC_CR_HSEBYP | RCC_CR_HSEON)) /*!< External clock source for HSE clock */
193 /**
194 * @}
195 */
196
197 /** @defgroup RCC_LSE_Config LSE Config
198 * @{
199 */
200 #define RCC_LSE_OFF ((uint32_t)0x00000000U) /*!< LSE clock deactivation */
201 #define RCC_LSE_ON RCC_BDCR_LSEON /*!< LSE clock activation */
202 #define RCC_LSE_BYPASS ((uint32_t)(RCC_BDCR_LSEBYP | RCC_BDCR_LSEON)) /*!< External clock source for LSE clock */
203 /**
204 * @}
205 */
206
207 /** @defgroup RCC_HSI_Config HSI Config
208 * @{
209 */
210 #define RCC_HSI_OFF ((uint32_t)0x00000000U) /*!< HSI clock deactivation */
211 #define RCC_HSI_ON RCC_CR_HSION /*!< HSI clock activation */
212
213 #if defined(STM32L431xx) || defined(STM32L432xx) || defined(STM32L433xx) || defined(STM32L442xx) || defined(STM32L443xx) || \
214 defined(STM32L471xx) || defined(STM32L475xx) || defined(STM32L476xx) || defined(STM32L485xx) || defined(STM32L486xx)
215 #define RCC_HSICALIBRATION_DEFAULT ((uint32_t)0x10U) /* Default HSI calibration trimming value */
216 #else
217 #define RCC_HSICALIBRATION_DEFAULT ((uint32_t)0x40U) /* Default HSI calibration trimming value */
218 #endif /* STM32L431xx || STM32L432xx || STM32L433xx || STM32L442xx || STM32L443xx || */
219 /* STM32L471xx || STM32L475xx || STM32L476xx || STM32L485xx || STM32L486xx */
220 /**
221 * @}
222 */
223
224 /** @defgroup RCC_LSI_Config LSI Config
225 * @{
226 */
227 #define RCC_LSI_OFF ((uint32_t)0x00000000U) /*!< LSI clock deactivation */
228 #define RCC_LSI_ON RCC_CSR_LSION /*!< LSI clock activation */
229 /**
230 * @}
231 */
232
233 /** @defgroup RCC_MSI_Config MSI Config
234 * @{
235 */
236 #define RCC_MSI_OFF ((uint32_t)0x00000000U) /*!< MSI clock deactivation */
237 #define RCC_MSI_ON RCC_CR_MSION /*!< MSI clock activation */
238
239 #define RCC_MSICALIBRATION_DEFAULT ((uint32_t)0) /*!< Default MSI calibration trimming value */
240 /**
241 * @}
242 */
243
244 #if defined(RCC_HSI48_SUPPORT)
245 /** @defgroup RCC_HSI48_Config HSI48 Config
246 * @{
247 */
248 #define RCC_HSI48_OFF ((uint32_t)0x00000000U) /*!< HSI48 clock deactivation */
249 #define RCC_HSI48_ON RCC_CRRCR_HSI48ON /*!< HSI48 clock activation */
250 /**
251 * @}
252 */
253 #else
254 /** @defgroup RCC_HSI48_Config HSI48 Config
255 * @{
256 */
257 #define RCC_HSI48_OFF ((uint32_t)0x00000000U) /*!< HSI48 clock deactivation */
258 /**
259 * @}
260 */
261 #endif /* RCC_HSI48_SUPPORT */
262
263 /** @defgroup RCC_PLL_Config PLL Config
264 * @{
265 */
266 #define RCC_PLL_NONE ((uint32_t)0x00000000U) /*!< PLL configuration unchanged */
267 #define RCC_PLL_OFF ((uint32_t)0x00000001U) /*!< PLL deactivation */
268 #define RCC_PLL_ON ((uint32_t)0x00000002U) /*!< PLL activation */
269 /**
270 * @}
271 */
272
273 /** @defgroup RCC_PLLP_Clock_Divider PLLP Clock Divider
274 * @{
275 */
276 #if defined(RCC_PLLP_DIV_2_31_SUPPORT)
277 #define RCC_PLLP_DIV2 ((uint32_t)0x00000002U) /*!< PLLP division factor = 2 */
278 #define RCC_PLLP_DIV3 ((uint32_t)0x00000003U) /*!< PLLP division factor = 3 */
279 #define RCC_PLLP_DIV4 ((uint32_t)0x00000004U) /*!< PLLP division factor = 4 */
280 #define RCC_PLLP_DIV5 ((uint32_t)0x00000005U) /*!< PLLP division factor = 5 */
281 #define RCC_PLLP_DIV6 ((uint32_t)0x00000006U) /*!< PLLP division factor = 6 */
282 #define RCC_PLLP_DIV7 ((uint32_t)0x00000007U) /*!< PLLP division factor = 7 */
283 #define RCC_PLLP_DIV8 ((uint32_t)0x00000008U) /*!< PLLP division factor = 8 */
284 #define RCC_PLLP_DIV9 ((uint32_t)0x00000009U) /*!< PLLP division factor = 9 */
285 #define RCC_PLLP_DIV10 ((uint32_t)0x0000000AU) /*!< PLLP division factor = 10 */
286 #define RCC_PLLP_DIV11 ((uint32_t)0x0000000BU) /*!< PLLP division factor = 11 */
287 #define RCC_PLLP_DIV12 ((uint32_t)0x0000000CU) /*!< PLLP division factor = 12 */
288 #define RCC_PLLP_DIV13 ((uint32_t)0x0000000DU) /*!< PLLP division factor = 13 */
289 #define RCC_PLLP_DIV14 ((uint32_t)0x0000000EU) /*!< PLLP division factor = 14 */
290 #define RCC_PLLP_DIV15 ((uint32_t)0x0000000FU) /*!< PLLP division factor = 15 */
291 #define RCC_PLLP_DIV16 ((uint32_t)0x00000010U) /*!< PLLP division factor = 16 */
292 #define RCC_PLLP_DIV17 ((uint32_t)0x00000011U) /*!< PLLP division factor = 17 */
293 #define RCC_PLLP_DIV18 ((uint32_t)0x00000012U) /*!< PLLP division factor = 18 */
294 #define RCC_PLLP_DIV19 ((uint32_t)0x00000013U) /*!< PLLP division factor = 19 */
295 #define RCC_PLLP_DIV20 ((uint32_t)0x00000014U) /*!< PLLP division factor = 20 */
296 #define RCC_PLLP_DIV21 ((uint32_t)0x00000015U) /*!< PLLP division factor = 21 */
297 #define RCC_PLLP_DIV22 ((uint32_t)0x00000016U) /*!< PLLP division factor = 22 */
298 #define RCC_PLLP_DIV23 ((uint32_t)0x00000017U) /*!< PLLP division factor = 23 */
299 #define RCC_PLLP_DIV24 ((uint32_t)0x00000018U) /*!< PLLP division factor = 24 */
300 #define RCC_PLLP_DIV25 ((uint32_t)0x00000019U) /*!< PLLP division factor = 25 */
301 #define RCC_PLLP_DIV26 ((uint32_t)0x0000001AU) /*!< PLLP division factor = 26 */
302 #define RCC_PLLP_DIV27 ((uint32_t)0x0000001BU) /*!< PLLP division factor = 27 */
303 #define RCC_PLLP_DIV28 ((uint32_t)0x0000001CU) /*!< PLLP division factor = 28 */
304 #define RCC_PLLP_DIV29 ((uint32_t)0x0000001DU) /*!< PLLP division factor = 29 */
305 #define RCC_PLLP_DIV30 ((uint32_t)0x0000001EU) /*!< PLLP division factor = 30 */
306 #define RCC_PLLP_DIV31 ((uint32_t)0x0000001FU) /*!< PLLP division factor = 31 */
307 #else
308 #define RCC_PLLP_DIV7 ((uint32_t)0x00000007U) /*!< PLLP division factor = 7 */
309 #define RCC_PLLP_DIV17 ((uint32_t)0x00000011U) /*!< PLLP division factor = 17 */
310 #endif /* RCC_PLLP_DIV_2_31_SUPPORT */
311 /**
312 * @}
313 */
314
315 /** @defgroup RCC_PLLQ_Clock_Divider PLLQ Clock Divider
316 * @{
317 */
318 #define RCC_PLLQ_DIV2 ((uint32_t)0x00000002U) /*!< PLLQ division factor = 2 */
319 #define RCC_PLLQ_DIV4 ((uint32_t)0x00000004U) /*!< PLLQ division factor = 4 */
320 #define RCC_PLLQ_DIV6 ((uint32_t)0x00000006U) /*!< PLLQ division factor = 6 */
321 #define RCC_PLLQ_DIV8 ((uint32_t)0x00000008U) /*!< PLLQ division factor = 8 */
322 /**
323 * @}
324 */
325
326 /** @defgroup RCC_PLLR_Clock_Divider PLLR Clock Divider
327 * @{
328 */
329 #define RCC_PLLR_DIV2 ((uint32_t)0x00000002U) /*!< PLLR division factor = 2 */
330 #define RCC_PLLR_DIV4 ((uint32_t)0x00000004U) /*!< PLLR division factor = 4 */
331 #define RCC_PLLR_DIV6 ((uint32_t)0x00000006U) /*!< PLLR division factor = 6 */
332 #define RCC_PLLR_DIV8 ((uint32_t)0x00000008U) /*!< PLLR division factor = 8 */
333 /**
334 * @}
335 */
336
337 /** @defgroup RCC_PLL_Clock_Source PLL Clock Source
338 * @{
339 */
340 #define RCC_PLLSOURCE_NONE ((uint32_t)0x00000000U) /*!< No clock selected as PLL entry clock source */
341 #define RCC_PLLSOURCE_MSI RCC_PLLCFGR_PLLSRC_MSI /*!< MSI clock selected as PLL entry clock source */
342 #define RCC_PLLSOURCE_HSI RCC_PLLCFGR_PLLSRC_HSI /*!< HSI clock selected as PLL entry clock source */
343 #define RCC_PLLSOURCE_HSE RCC_PLLCFGR_PLLSRC_HSE /*!< HSE clock selected as PLL entry clock source */
344 /**
345 * @}
346 */
347
348 /** @defgroup RCC_PLL_Clock_Output PLL Clock Output
349 * @{
350 */
351 #if defined(RCC_PLLSAI2_SUPPORT)
352 #define RCC_PLL_SAI3CLK RCC_PLLCFGR_PLLPEN /*!< PLLSAI3CLK selection from main PLL (for devices with PLLSAI2) */
353 #else
354 #define RCC_PLL_SAI2CLK RCC_PLLCFGR_PLLPEN /*!< PLLSAI2CLK selection from main PLL (for devices without PLLSAI2) */
355 #endif /* RCC_PLLSAI2_SUPPORT */
356 #define RCC_PLL_48M1CLK RCC_PLLCFGR_PLLQEN /*!< PLL48M1CLK selection from main PLL */
357 #define RCC_PLL_SYSCLK RCC_PLLCFGR_PLLREN /*!< PLLCLK selection from main PLL */
358 /**
359 * @}
360 */
361
362 /** @defgroup RCC_PLLSAI1_Clock_Output PLLSAI1 Clock Output
363 * @{
364 */
365 #define RCC_PLLSAI1_SAI1CLK RCC_PLLSAI1CFGR_PLLSAI1PEN /*!< PLLSAI1CLK selection from PLLSAI1 */
366 #define RCC_PLLSAI1_48M2CLK RCC_PLLSAI1CFGR_PLLSAI1QEN /*!< PLL48M2CLK selection from PLLSAI1 */
367 #define RCC_PLLSAI1_ADC1CLK RCC_PLLSAI1CFGR_PLLSAI1REN /*!< PLLADC1CLK selection from PLLSAI1 */
368 /**
369 * @}
370 */
371
372 #if defined(RCC_PLLSAI2_SUPPORT)
373
374 /** @defgroup RCC_PLLSAI2_Clock_Output PLLSAI2 Clock Output
375 * @{
376 */
377 #define RCC_PLLSAI2_SAI2CLK RCC_PLLSAI2CFGR_PLLSAI2PEN /*!< PLLSAI2CLK selection from PLLSAI2 */
378 #define RCC_PLLSAI2_ADC2CLK RCC_PLLSAI2CFGR_PLLSAI2REN /*!< PLLADC2CLK selection from PLLSAI2 */
379 /**
380 * @}
381 */
382
383 #endif /* RCC_PLLSAI2_SUPPORT */
384
385 /** @defgroup RCC_MSI_Clock_Range MSI Clock Range
386 * @{
387 */
388 #define RCC_MSIRANGE_0 RCC_CR_MSIRANGE_0 /*!< MSI = 100 KHz */
389 #define RCC_MSIRANGE_1 RCC_CR_MSIRANGE_1 /*!< MSI = 200 KHz */
390 #define RCC_MSIRANGE_2 RCC_CR_MSIRANGE_2 /*!< MSI = 400 KHz */
391 #define RCC_MSIRANGE_3 RCC_CR_MSIRANGE_3 /*!< MSI = 800 KHz */
392 #define RCC_MSIRANGE_4 RCC_CR_MSIRANGE_4 /*!< MSI = 1 MHz */
393 #define RCC_MSIRANGE_5 RCC_CR_MSIRANGE_5 /*!< MSI = 2 MHz */
394 #define RCC_MSIRANGE_6 RCC_CR_MSIRANGE_6 /*!< MSI = 4 MHz */
395 #define RCC_MSIRANGE_7 RCC_CR_MSIRANGE_7 /*!< MSI = 8 MHz */
396 #define RCC_MSIRANGE_8 RCC_CR_MSIRANGE_8 /*!< MSI = 16 MHz */
397 #define RCC_MSIRANGE_9 RCC_CR_MSIRANGE_9 /*!< MSI = 24 MHz */
398 #define RCC_MSIRANGE_10 RCC_CR_MSIRANGE_10 /*!< MSI = 32 MHz */
399 #define RCC_MSIRANGE_11 RCC_CR_MSIRANGE_11 /*!< MSI = 48 MHz */
400 /**
401 * @}
402 */
403
404 /** @defgroup RCC_System_Clock_Type System Clock Type
405 * @{
406 */
407 #define RCC_CLOCKTYPE_SYSCLK ((uint32_t)0x00000001U) /*!< SYSCLK to configure */
408 #define RCC_CLOCKTYPE_HCLK ((uint32_t)0x00000002U) /*!< HCLK to configure */
409 #define RCC_CLOCKTYPE_PCLK1 ((uint32_t)0x00000004U) /*!< PCLK1 to configure */
410 #define RCC_CLOCKTYPE_PCLK2 ((uint32_t)0x00000008U) /*!< PCLK2 to configure */
411 /**
412 * @}
413 */
414
415 /** @defgroup RCC_System_Clock_Source System Clock Source
416 * @{
417 */
418 #define RCC_SYSCLKSOURCE_MSI RCC_CFGR_SW_MSI /*!< MSI selection as system clock */
419 #define RCC_SYSCLKSOURCE_HSI RCC_CFGR_SW_HSI /*!< HSI selection as system clock */
420 #define RCC_SYSCLKSOURCE_HSE RCC_CFGR_SW_HSE /*!< HSE selection as system clock */
421 #define RCC_SYSCLKSOURCE_PLLCLK RCC_CFGR_SW_PLL /*!< PLL selection as system clock */
422 /**
423 * @}
424 */
425
426 /** @defgroup RCC_System_Clock_Source_Status System Clock Source Status
427 * @{
428 */
429 #define RCC_SYSCLKSOURCE_STATUS_MSI RCC_CFGR_SWS_MSI /*!< MSI used as system clock */
430 #define RCC_SYSCLKSOURCE_STATUS_HSI RCC_CFGR_SWS_HSI /*!< HSI used as system clock */
431 #define RCC_SYSCLKSOURCE_STATUS_HSE RCC_CFGR_SWS_HSE /*!< HSE used as system clock */
432 #define RCC_SYSCLKSOURCE_STATUS_PLLCLK RCC_CFGR_SWS_PLL /*!< PLL used as system clock */
433 /**
434 * @}
435 */
436
437 /** @defgroup RCC_AHB_Clock_Source AHB Clock Source
438 * @{
439 */
440 #define RCC_SYSCLK_DIV1 RCC_CFGR_HPRE_DIV1 /*!< SYSCLK not divided */
441 #define RCC_SYSCLK_DIV2 RCC_CFGR_HPRE_DIV2 /*!< SYSCLK divided by 2 */
442 #define RCC_SYSCLK_DIV4 RCC_CFGR_HPRE_DIV4 /*!< SYSCLK divided by 4 */
443 #define RCC_SYSCLK_DIV8 RCC_CFGR_HPRE_DIV8 /*!< SYSCLK divided by 8 */
444 #define RCC_SYSCLK_DIV16 RCC_CFGR_HPRE_DIV16 /*!< SYSCLK divided by 16 */
445 #define RCC_SYSCLK_DIV64 RCC_CFGR_HPRE_DIV64 /*!< SYSCLK divided by 64 */
446 #define RCC_SYSCLK_DIV128 RCC_CFGR_HPRE_DIV128 /*!< SYSCLK divided by 128 */
447 #define RCC_SYSCLK_DIV256 RCC_CFGR_HPRE_DIV256 /*!< SYSCLK divided by 256 */
448 #define RCC_SYSCLK_DIV512 RCC_CFGR_HPRE_DIV512 /*!< SYSCLK divided by 512 */
449 /**
450 * @}
451 */
452
453 /** @defgroup RCC_APB1_APB2_Clock_Source APB1 APB2 Clock Source
454 * @{
455 */
456 #define RCC_HCLK_DIV1 RCC_CFGR_PPRE1_DIV1 /*!< HCLK not divided */
457 #define RCC_HCLK_DIV2 RCC_CFGR_PPRE1_DIV2 /*!< HCLK divided by 2 */
458 #define RCC_HCLK_DIV4 RCC_CFGR_PPRE1_DIV4 /*!< HCLK divided by 4 */
459 #define RCC_HCLK_DIV8 RCC_CFGR_PPRE1_DIV8 /*!< HCLK divided by 8 */
460 #define RCC_HCLK_DIV16 RCC_CFGR_PPRE1_DIV16 /*!< HCLK divided by 16 */
461 /**
462 * @}
463 */
464
465 /** @defgroup RCC_RTC_Clock_Source RTC Clock Source
466 * @{
467 */
468 #define RCC_RTCCLKSOURCE_NO_CLK ((uint32_t)0x00000000U) /*!< No clock used as RTC clock */
469 #define RCC_RTCCLKSOURCE_LSE RCC_BDCR_RTCSEL_0 /*!< LSE oscillator clock used as RTC clock */
470 #define RCC_RTCCLKSOURCE_LSI RCC_BDCR_RTCSEL_1 /*!< LSI oscillator clock used as RTC clock */
471 #define RCC_RTCCLKSOURCE_HSE_DIV32 RCC_BDCR_RTCSEL /*!< HSE oscillator clock divided by 32 used as RTC clock */
472 /**
473 * @}
474 */
475
476 /** @defgroup RCC_MCO_Index MCO Index
477 * @{
478 */
479 #define RCC_MCO1 ((uint32_t)0x00000000U)
480 #define RCC_MCO RCC_MCO1 /*!< MCO1 to be compliant with other families with 2 MCOs*/
481 /**
482 * @}
483 */
484
485 /** @defgroup RCC_MCO1_Clock_Source MCO1 Clock Source
486 * @{
487 */
488 #define RCC_MCO1SOURCE_NOCLOCK ((uint32_t)0x00000000U) /*!< MCO1 output disabled, no clock on MCO1 */
489 #define RCC_MCO1SOURCE_SYSCLK RCC_CFGR_MCOSEL_0 /*!< SYSCLK selection as MCO1 source */
490 #define RCC_MCO1SOURCE_MSI RCC_CFGR_MCOSEL_1 /*!< MSI selection as MCO1 source */
491 #define RCC_MCO1SOURCE_HSI (RCC_CFGR_MCOSEL_0| RCC_CFGR_MCOSEL_1) /*!< HSI selection as MCO1 source */
492 #define RCC_MCO1SOURCE_HSE RCC_CFGR_MCOSEL_2 /*!< HSE selection as MCO1 source */
493 #define RCC_MCO1SOURCE_PLLCLK (RCC_CFGR_MCOSEL_0|RCC_CFGR_MCOSEL_2) /*!< PLLCLK selection as MCO1 source */
494 #define RCC_MCO1SOURCE_LSI (RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_2) /*!< LSI selection as MCO1 source */
495 #define RCC_MCO1SOURCE_LSE (RCC_CFGR_MCOSEL_0|RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_2) /*!< LSE selection as MCO1 source */
496 #if defined(RCC_HSI48_SUPPORT)
497 #define RCC_MCO1SOURCE_HSI48 RCC_CFGR_MCOSEL_3 /*!< HSI48 selection as MCO1 source (STM32L43x/STM32L44x devices) */
498 #endif /* RCC_HSI48_SUPPORT */
499 /**
500 * @}
501 */
502
503 /** @defgroup RCC_MCOx_Clock_Prescaler MCO1 Clock Prescaler
504 * @{
505 */
506 #define RCC_MCODIV_1 RCC_CFGR_MCOPRE_DIV1 /*!< MCO not divided */
507 #define RCC_MCODIV_2 RCC_CFGR_MCOPRE_DIV2 /*!< MCO divided by 2 */
508 #define RCC_MCODIV_4 RCC_CFGR_MCOPRE_DIV4 /*!< MCO divided by 4 */
509 #define RCC_MCODIV_8 RCC_CFGR_MCOPRE_DIV8 /*!< MCO divided by 8 */
510 #define RCC_MCODIV_16 RCC_CFGR_MCOPRE_DIV16 /*!< MCO divided by 16 */
511 /**
512 * @}
513 */
514
515 /** @defgroup RCC_Interrupt Interrupts
516 * @{
517 */
518 #define RCC_IT_LSIRDY RCC_CIFR_LSIRDYF /*!< LSI Ready Interrupt flag */
519 #define RCC_IT_LSERDY RCC_CIFR_LSERDYF /*!< LSE Ready Interrupt flag */
520 #define RCC_IT_MSIRDY RCC_CIFR_MSIRDYF /*!< MSI Ready Interrupt flag */
521 #define RCC_IT_HSIRDY RCC_CIFR_HSIRDYF /*!< HSI16 Ready Interrupt flag */
522 #define RCC_IT_HSERDY RCC_CIFR_HSERDYF /*!< HSE Ready Interrupt flag */
523 #define RCC_IT_PLLRDY RCC_CIFR_PLLRDYF /*!< PLL Ready Interrupt flag */
524 #define RCC_IT_PLLSAI1RDY RCC_CIFR_PLLSAI1RDYF /*!< PLLSAI1 Ready Interrupt flag */
525 #if defined(RCC_PLLSAI2_SUPPORT)
526 #define RCC_IT_PLLSAI2RDY RCC_CIFR_PLLSAI2RDYF /*!< PLLSAI2 Ready Interrupt flag */
527 #endif /* RCC_PLLSAI2_SUPPORT */
528 #define RCC_IT_CSS RCC_CIFR_CSSF /*!< Clock Security System Interrupt flag */
529 #define RCC_IT_LSECSS RCC_CIFR_LSECSSF /*!< LSE Clock Security System Interrupt flag */
530 #if defined(RCC_HSI48_SUPPORT)
531 #define RCC_IT_HSI48RDY RCC_CIFR_HSI48RDYF /*!< HSI48 Ready Interrupt flag */
532 #endif /* RCC_HSI48_SUPPORT */
533 /**
534 * @}
535 */
536
537 /** @defgroup RCC_Flag Flags
538 * Elements values convention: XXXYYYYYb
539 * - YYYYY : Flag position in the register
540 * - XXX : Register index
541 * - 001: CR register
542 * - 010: BDCR register
543 * - 011: CSR register
544 * - 100: CRRCR register
545 * @{
546 */
547 /* Flags in the CR register */
548 #define RCC_FLAG_MSIRDY ((uint32_t)((CR_REG_INDEX << 5U) | POSITION_VAL(RCC_CR_MSIRDY))) /*!< MSI Ready flag */
549 #define RCC_FLAG_HSIRDY ((uint32_t)((CR_REG_INDEX << 5U) | POSITION_VAL(RCC_CR_HSIRDY))) /*!< HSI Ready flag */
550 #define RCC_FLAG_HSERDY ((uint32_t)((CR_REG_INDEX << 5U) | POSITION_VAL(RCC_CR_HSERDY))) /*!< HSE Ready flag */
551 #define RCC_FLAG_PLLRDY ((uint32_t)((CR_REG_INDEX << 5U) | POSITION_VAL(RCC_CR_PLLRDY))) /*!< PLL Ready flag */
552 #define RCC_FLAG_PLLSAI1RDY ((uint32_t)((CR_REG_INDEX << 5U) | POSITION_VAL(RCC_CR_PLLSAI1RDY))) /*!< PLLSAI1 Ready flag */
553 #if defined(RCC_PLLSAI2_SUPPORT)
554 #define RCC_FLAG_PLLSAI2RDY ((uint32_t)((CR_REG_INDEX << 5U) | POSITION_VAL(RCC_CR_PLLSAI2RDY))) /*!< PLLSAI2 Ready flag */
555 #endif /* RCC_PLLSAI2_SUPPORT */
556
557 /* Flags in the BDCR register */
558 #define RCC_FLAG_LSERDY ((uint32_t)((BDCR_REG_INDEX << 5U) | POSITION_VAL(RCC_BDCR_LSERDY))) /*!< LSE Ready flag */
559 #define RCC_FLAG_LSECSSD ((uint32_t)((BDCR_REG_INDEX << 5U) | POSITION_VAL(RCC_BDCR_LSECSSD))) /*!< LSE Clock Security System Interrupt flag */
560
561 /* Flags in the CSR register */
562 #define RCC_FLAG_LSIRDY ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_LSIRDY))) /*!< LSI Ready flag */
563 #define RCC_FLAG_RMVF ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_RMVF))) /*!< Remove reset flag */
564 #define RCC_FLAG_FWRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_FWRSTF))) /*!< Firewall reset flag */
565 #define RCC_FLAG_OBLRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_OBLRSTF))) /*!< Option Byte Loader reset flag */
566 #define RCC_FLAG_PINRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_PINRSTF))) /*!< PIN reset flag */
567 #define RCC_FLAG_BORRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_BORRSTF))) /*!< BOR reset flag */
568 #define RCC_FLAG_SFTRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_SFTRSTF))) /*!< Software Reset flag */
569 #define RCC_FLAG_IWDGRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_IWDGRSTF))) /*!< Independent Watchdog reset flag */
570 #define RCC_FLAG_WWDGRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_WWDGRSTF))) /*!< Window watchdog reset flag */
571 #define RCC_FLAG_LPWRRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_LPWRRSTF))) /*!< Low-Power reset flag */
572
573 #if defined(RCC_HSI48_SUPPORT)
574 /* Flags in the CRRCR register */
575 #define RCC_FLAG_HSI48RDY ((uint32_t)((CRRCR_REG_INDEX << 5U) | POSITION_VAL(RCC_CRRCR_HSI48RDY))) /*!< HSI48 Ready flag */
576 #endif /* RCC_HSI48_SUPPORT */
577 /**
578 * @}
579 */
580
581 /** @defgroup RCC_LSEDrive_Config LSE Drive Config
582 * @{
583 */
584 #define RCC_LSEDRIVE_LOW ((uint32_t)0x00000000U) /*!< LSE low drive capability */
585 #define RCC_LSEDRIVE_MEDIUMLOW RCC_BDCR_LSEDRV_0 /*!< LSE medium low drive capability */
586 #define RCC_LSEDRIVE_MEDIUMHIGH RCC_BDCR_LSEDRV_1 /*!< LSE medium high drive capability */
587 #define RCC_LSEDRIVE_HIGH RCC_BDCR_LSEDRV /*!< LSE high drive capability */
588 /**
589 * @}
590 */
591
592 /** @defgroup RCC_Stop_WakeUpClock Wake-Up from STOP Clock
593 * @{
594 */
595 #define RCC_STOP_WAKEUPCLOCK_MSI ((uint32_t)0x00000000U) /*!< MSI selection after wake-up from STOP */
596 #define RCC_STOP_WAKEUPCLOCK_HSI RCC_CFGR_STOPWUCK /*!< HSI selection after wake-up from STOP */
597 /**
598 * @}
599 */
600
601 /**
602 * @}
603 */
604
605 /* Exported macros -----------------------------------------------------------*/
606
607 /** @defgroup RCC_Exported_Macros RCC Exported Macros
608 * @{
609 */
610
611 /** @defgroup RCC_AHB1_Peripheral_Clock_Enable_Disable AHB1 Peripheral Clock Enable Disable
612 * @brief Enable or disable the AHB1 peripheral clock.
613 * @note After reset, the peripheral clock (used for registers read/write access)
614 * is disabled and the application software has to enable this clock before
615 * using it.
616 * @{
617 */
618
619 #define __HAL_RCC_DMA1_CLK_ENABLE() do { \
620 __IO uint32_t tmpreg; \
621 SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN); \
622 /* Delay after an RCC peripheral clock enabling */ \
623 tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN); \
624 UNUSED(tmpreg); \
625 } while(0)
626
627 #define __HAL_RCC_DMA2_CLK_ENABLE() do { \
628 __IO uint32_t tmpreg; \
629 SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN); \
630 /* Delay after an RCC peripheral clock enabling */ \
631 tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN); \
632 UNUSED(tmpreg); \
633 } while(0)
634
635 #define __HAL_RCC_FLASH_CLK_ENABLE() do { \
636 __IO uint32_t tmpreg; \
637 SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN); \
638 /* Delay after an RCC peripheral clock enabling */ \
639 tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN); \
640 UNUSED(tmpreg); \
641 } while(0)
642
643 #define __HAL_RCC_CRC_CLK_ENABLE() do { \
644 __IO uint32_t tmpreg; \
645 SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN); \
646 /* Delay after an RCC peripheral clock enabling */ \
647 tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN); \
648 UNUSED(tmpreg); \
649 } while(0)
650
651 #define __HAL_RCC_TSC_CLK_ENABLE() do { \
652 __IO uint32_t tmpreg; \
653 SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN); \
654 /* Delay after an RCC peripheral clock enabling */ \
655 tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN); \
656 UNUSED(tmpreg); \
657 } while(0)
658
659
660 #define __HAL_RCC_DMA1_CLK_DISABLE() CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN)
661
662 #define __HAL_RCC_DMA2_CLK_DISABLE() CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN)
663
664 #define __HAL_RCC_FLASH_CLK_DISABLE() CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN)
665
666 #define __HAL_RCC_CRC_CLK_DISABLE() CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN)
667
668 #define __HAL_RCC_TSC_CLK_DISABLE() CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN)
669
670 /**
671 * @}
672 */
673
674 /** @defgroup RCC_AHB2_Peripheral_Clock_Enable_Disable AHB2 Peripheral Clock Enable Disable
675 * @brief Enable or disable the AHB2 peripheral clock.
676 * @note After reset, the peripheral clock (used for registers read/write access)
677 * is disabled and the application software has to enable this clock before
678 * using it.
679 * @{
680 */
681
682 #define __HAL_RCC_GPIOA_CLK_ENABLE() do { \
683 __IO uint32_t tmpreg; \
684 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOAEN); \
685 /* Delay after an RCC peripheral clock enabling */ \
686 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOAEN); \
687 UNUSED(tmpreg); \
688 } while(0)
689
690 #define __HAL_RCC_GPIOB_CLK_ENABLE() do { \
691 __IO uint32_t tmpreg; \
692 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOBEN); \
693 /* Delay after an RCC peripheral clock enabling */ \
694 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOBEN); \
695 UNUSED(tmpreg); \
696 } while(0)
697
698 #define __HAL_RCC_GPIOC_CLK_ENABLE() do { \
699 __IO uint32_t tmpreg; \
700 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOCEN); \
701 /* Delay after an RCC peripheral clock enabling */ \
702 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOCEN); \
703 UNUSED(tmpreg); \
704 } while(0)
705
706 #if defined(GPIOD)
707 #define __HAL_RCC_GPIOD_CLK_ENABLE() do { \
708 __IO uint32_t tmpreg; \
709 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIODEN); \
710 /* Delay after an RCC peripheral clock enabling */ \
711 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIODEN); \
712 UNUSED(tmpreg); \
713 } while(0)
714 #endif /* GPIOD */
715
716 #if defined(GPIOE)
717 #define __HAL_RCC_GPIOE_CLK_ENABLE() do { \
718 __IO uint32_t tmpreg; \
719 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOEEN); \
720 /* Delay after an RCC peripheral clock enabling */ \
721 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOEEN); \
722 UNUSED(tmpreg); \
723 } while(0)
724 #endif /* GPIOE */
725
726 #if defined(GPIOF)
727 #define __HAL_RCC_GPIOF_CLK_ENABLE() do { \
728 __IO uint32_t tmpreg; \
729 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOFEN); \
730 /* Delay after an RCC peripheral clock enabling */ \
731 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOFEN); \
732 UNUSED(tmpreg); \
733 } while(0)
734 #endif /* GPIOF */
735
736 #if defined(GPIOG)
737 #define __HAL_RCC_GPIOG_CLK_ENABLE() do { \
738 __IO uint32_t tmpreg; \
739 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOGEN); \
740 /* Delay after an RCC peripheral clock enabling */ \
741 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOGEN); \
742 UNUSED(tmpreg); \
743 } while(0)
744 #endif /* GPIOG */
745
746 #define __HAL_RCC_GPIOH_CLK_ENABLE() do { \
747 __IO uint32_t tmpreg; \
748 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOHEN); \
749 /* Delay after an RCC peripheral clock enabling */ \
750 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOHEN); \
751 UNUSED(tmpreg); \
752 } while(0)
753
754 #if defined(USB_OTG_FS)
755 #define __HAL_RCC_USB_OTG_FS_CLK_ENABLE() do { \
756 __IO uint32_t tmpreg; \
757 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_OTGFSEN); \
758 /* Delay after an RCC peripheral clock enabling */ \
759 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_OTGFSEN); \
760 UNUSED(tmpreg); \
761 } while(0)
762 #endif /* USB_OTG_FS */
763
764 #define __HAL_RCC_ADC_CLK_ENABLE() do { \
765 __IO uint32_t tmpreg; \
766 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_ADCEN); \
767 /* Delay after an RCC peripheral clock enabling */ \
768 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_ADCEN); \
769 UNUSED(tmpreg); \
770 } while(0)
771
772 #if defined(AES)
773 #define __HAL_RCC_AES_CLK_ENABLE() do { \
774 __IO uint32_t tmpreg; \
775 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AESEN); \
776 /* Delay after an RCC peripheral clock enabling */ \
777 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AESEN); \
778 UNUSED(tmpreg); \
779 } while(0)
780 #endif /* AES */
781
782 #define __HAL_RCC_RNG_CLK_ENABLE() do { \
783 __IO uint32_t tmpreg; \
784 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN); \
785 /* Delay after an RCC peripheral clock enabling */ \
786 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN); \
787 UNUSED(tmpreg); \
788 } while(0)
789
790
791 #define __HAL_RCC_GPIOA_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOAEN)
792
793 #define __HAL_RCC_GPIOB_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOBEN)
794
795 #define __HAL_RCC_GPIOC_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOCEN)
796
797 #if defined(GPIOD)
798 #define __HAL_RCC_GPIOD_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIODEN)
799 #endif /* GPIOD */
800
801 #if defined(GPIOE)
802 #define __HAL_RCC_GPIOE_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOEEN)
803 #endif /* GPIOE */
804
805 #if defined(GPIOF)
806 #define __HAL_RCC_GPIOF_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOFEN)
807 #endif /* GPIOF */
808
809 #if defined(GPIOG)
810 #define __HAL_RCC_GPIOG_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOGEN)
811 #endif /* GPIOG */
812
813 #define __HAL_RCC_GPIOH_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOHEN)
814
815 #if defined(USB_OTG_FS)
816 #define __HAL_RCC_USB_OTG_FS_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_OTGFSEN);
817 #endif /* USB_OTG_FS */
818
819 #define __HAL_RCC_ADC_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_ADCEN)
820
821 #if defined(AES)
822 #define __HAL_RCC_AES_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AESEN);
823 #endif /* AES */
824
825 #define __HAL_RCC_RNG_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN)
826
827 /**
828 * @}
829 */
830
831 /** @defgroup RCC_AHB3_Clock_Enable_Disable AHB3 Peripheral Clock Enable Disable
832 * @brief Enable or disable the AHB3 peripheral clock.
833 * @note After reset, the peripheral clock (used for registers read/write access)
834 * is disabled and the application software has to enable this clock before
835 * using it.
836 * @{
837 */
838
839 #if defined(FMC_BANK1)
840 #define __HAL_RCC_FMC_CLK_ENABLE() do { \
841 __IO uint32_t tmpreg; \
842 SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN); \
843 /* Delay after an RCC peripheral clock enabling */ \
844 tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN); \
845 UNUSED(tmpreg); \
846 } while(0)
847 #endif /* FMC_BANK1 */
848
849 #if defined(QUADSPI)
850 #define __HAL_RCC_QSPI_CLK_ENABLE() do { \
851 __IO uint32_t tmpreg; \
852 SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN); \
853 /* Delay after an RCC peripheral clock enabling */ \
854 tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN); \
855 UNUSED(tmpreg); \
856 } while(0)
857 #endif /* QUADSPI */
858
859 #if defined(FMC_BANK1)
860 #define __HAL_RCC_FMC_CLK_DISABLE() CLEAR_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN)
861 #endif /* FMC_BANK1 */
862
863 #if defined(QUADSPI)
864 #define __HAL_RCC_QSPI_CLK_DISABLE() CLEAR_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN)
865 #endif /* QUADSPI */
866
867 /**
868 * @}
869 */
870
871 /** @defgroup RCC_APB1_Clock_Enable_Disable APB1 Peripheral Clock Enable Disable
872 * @brief Enable or disable the APB1 peripheral clock.
873 * @note After reset, the peripheral clock (used for registers read/write access)
874 * is disabled and the application software has to enable this clock before
875 * using it.
876 * @{
877 */
878
879 #define __HAL_RCC_TIM2_CLK_ENABLE() do { \
880 __IO uint32_t tmpreg; \
881 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN); \
882 /* Delay after an RCC peripheral clock enabling */ \
883 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN); \
884 UNUSED(tmpreg); \
885 } while(0)
886
887 #if defined(TIM3)
888 #define __HAL_RCC_TIM3_CLK_ENABLE() do { \
889 __IO uint32_t tmpreg; \
890 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN); \
891 /* Delay after an RCC peripheral clock enabling */ \
892 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN); \
893 UNUSED(tmpreg); \
894 } while(0)
895 #endif /* TIM3 */
896
897 #if defined(TIM4)
898 #define __HAL_RCC_TIM4_CLK_ENABLE() do { \
899 __IO uint32_t tmpreg; \
900 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN); \
901 /* Delay after an RCC peripheral clock enabling */ \
902 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN); \
903 UNUSED(tmpreg); \
904 } while(0)
905 #endif /* TIM4 */
906
907 #if defined(TIM5)
908 #define __HAL_RCC_TIM5_CLK_ENABLE() do { \
909 __IO uint32_t tmpreg; \
910 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN); \
911 /* Delay after an RCC peripheral clock enabling */ \
912 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN); \
913 UNUSED(tmpreg); \
914 } while(0)
915 #endif /* TIM5 */
916
917 #define __HAL_RCC_TIM6_CLK_ENABLE() do { \
918 __IO uint32_t tmpreg; \
919 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN); \
920 /* Delay after an RCC peripheral clock enabling */ \
921 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN); \
922 UNUSED(tmpreg); \
923 } while(0)
924
925 #define __HAL_RCC_TIM7_CLK_ENABLE() do { \
926 __IO uint32_t tmpreg; \
927 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN); \
928 /* Delay after an RCC peripheral clock enabling */ \
929 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN); \
930 UNUSED(tmpreg); \
931 } while(0)
932
933 #if defined(LCD)
934 #define __HAL_RCC_LCD_CLK_ENABLE() do { \
935 __IO uint32_t tmpreg; \
936 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LCDEN); \
937 /* Delay after an RCC peripheral clock enabling */ \
938 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LCDEN); \
939 UNUSED(tmpreg); \
940 } while(0)
941 #endif /* LCD */
942
943 #if defined(RCC_APB1ENR1_RTCAPBEN)
944 #define __HAL_RCC_RTCAPB_CLK_ENABLE() do { \
945 __IO uint32_t tmpreg; \
946 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_RTCAPBEN); \
947 /* Delay after an RCC peripheral clock enabling */ \
948 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_RTCAPBEN); \
949 UNUSED(tmpreg); \
950 } while(0)
951 #endif /* RCC_APB1ENR1_RTCAPBEN */
952
953 #define __HAL_RCC_WWDG_CLK_ENABLE() do { \
954 __IO uint32_t tmpreg; \
955 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_WWDGEN); \
956 /* Delay after an RCC peripheral clock enabling */ \
957 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_WWDGEN); \
958 UNUSED(tmpreg); \
959 } while(0)
960
961 #if defined(SPI2)
962 #define __HAL_RCC_SPI2_CLK_ENABLE() do { \
963 __IO uint32_t tmpreg; \
964 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN); \
965 /* Delay after an RCC peripheral clock enabling */ \
966 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN); \
967 UNUSED(tmpreg); \
968 } while(0)
969 #endif /* SPI2 */
970
971 #define __HAL_RCC_SPI3_CLK_ENABLE() do { \
972 __IO uint32_t tmpreg; \
973 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI3EN); \
974 /* Delay after an RCC peripheral clock enabling */ \
975 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI3EN); \
976 UNUSED(tmpreg); \
977 } while(0)
978
979 #define __HAL_RCC_USART2_CLK_ENABLE() do { \
980 __IO uint32_t tmpreg; \
981 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN); \
982 /* Delay after an RCC peripheral clock enabling */ \
983 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN); \
984 UNUSED(tmpreg); \
985 } while(0)
986
987 #if defined(USART3)
988 #define __HAL_RCC_USART3_CLK_ENABLE() do { \
989 __IO uint32_t tmpreg; \
990 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN); \
991 /* Delay after an RCC peripheral clock enabling */ \
992 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN); \
993 UNUSED(tmpreg); \
994 } while(0)
995 #endif /* USART3 */
996
997 #if defined(UART4)
998 #define __HAL_RCC_UART4_CLK_ENABLE() do { \
999 __IO uint32_t tmpreg; \
1000 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN); \
1001 /* Delay after an RCC peripheral clock enabling */ \
1002 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN); \
1003 UNUSED(tmpreg); \
1004 } while(0)
1005 #endif /* UART4 */
1006
1007 #if defined(UART5)
1008 #define __HAL_RCC_UART5_CLK_ENABLE() do { \
1009 __IO uint32_t tmpreg; \
1010 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN); \
1011 /* Delay after an RCC peripheral clock enabling */ \
1012 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN); \
1013 UNUSED(tmpreg); \
1014 } while(0)
1015 #endif /* UART5 */
1016
1017 #define __HAL_RCC_I2C1_CLK_ENABLE() do { \
1018 __IO uint32_t tmpreg; \
1019 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN); \
1020 /* Delay after an RCC peripheral clock enabling */ \
1021 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN); \
1022 UNUSED(tmpreg); \
1023 } while(0)
1024
1025 #if defined(I2C2)
1026 #define __HAL_RCC_I2C2_CLK_ENABLE() do { \
1027 __IO uint32_t tmpreg; \
1028 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN); \
1029 /* Delay after an RCC peripheral clock enabling */ \
1030 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN); \
1031 UNUSED(tmpreg); \
1032 } while(0)
1033 #endif /* I2C2 */
1034
1035 #define __HAL_RCC_I2C3_CLK_ENABLE() do { \
1036 __IO uint32_t tmpreg; \
1037 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C3EN); \
1038 /* Delay after an RCC peripheral clock enabling */ \
1039 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C3EN); \
1040 UNUSED(tmpreg); \
1041 } while(0)
1042
1043 #if defined(I2C4)
1044 #define __HAL_RCC_I2C4_CLK_ENABLE() do { \
1045 __IO uint32_t tmpreg; \
1046 SET_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN); \
1047 /* Delay after an RCC peripheral clock enabling */ \
1048 tmpreg = READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN); \
1049 UNUSED(tmpreg); \
1050 } while(0)
1051 #endif /* I2C4 */
1052
1053 #if defined(CRS)
1054 #define __HAL_RCC_CRS_CLK_ENABLE() do { \
1055 __IO uint32_t tmpreg; \
1056 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN); \
1057 /* Delay after an RCC peripheral clock enabling */ \
1058 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN); \
1059 UNUSED(tmpreg); \
1060 } while(0)
1061 #endif /* CRS */
1062
1063 #define __HAL_RCC_CAN1_CLK_ENABLE() do { \
1064 __IO uint32_t tmpreg; \
1065 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CAN1EN); \
1066 /* Delay after an RCC peripheral clock enabling */ \
1067 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CAN1EN); \
1068 UNUSED(tmpreg); \
1069 } while(0)
1070
1071 #if defined(USB)
1072 #define __HAL_RCC_USB_CLK_ENABLE() do { \
1073 __IO uint32_t tmpreg; \
1074 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USBFSEN); \
1075 /* Delay after an RCC peripheral clock enabling */ \
1076 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USBFSEN); \
1077 UNUSED(tmpreg); \
1078 } while(0)
1079 #endif /* USB */
1080
1081 #define __HAL_RCC_PWR_CLK_ENABLE() do { \
1082 __IO uint32_t tmpreg; \
1083 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_PWREN); \
1084 /* Delay after an RCC peripheral clock enabling */ \
1085 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_PWREN); \
1086 UNUSED(tmpreg); \
1087 } while(0)
1088
1089 #define __HAL_RCC_DAC1_CLK_ENABLE() do { \
1090 __IO uint32_t tmpreg; \
1091 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_DAC1EN); \
1092 /* Delay after an RCC peripheral clock enabling */ \
1093 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_DAC1EN); \
1094 UNUSED(tmpreg); \
1095 } while(0)
1096
1097 #define __HAL_RCC_OPAMP_CLK_ENABLE() do { \
1098 __IO uint32_t tmpreg; \
1099 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_OPAMPEN); \
1100 /* Delay after an RCC peripheral clock enabling */ \
1101 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_OPAMPEN); \
1102 UNUSED(tmpreg); \
1103 } while(0)
1104
1105 #define __HAL_RCC_LPTIM1_CLK_ENABLE() do { \
1106 __IO uint32_t tmpreg; \
1107 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LPTIM1EN); \
1108 /* Delay after an RCC peripheral clock enabling */ \
1109 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LPTIM1EN); \
1110 UNUSED(tmpreg); \
1111 } while(0)
1112
1113 #define __HAL_RCC_LPUART1_CLK_ENABLE() do { \
1114 __IO uint32_t tmpreg; \
1115 SET_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPUART1EN); \
1116 /* Delay after an RCC peripheral clock enabling */ \
1117 tmpreg = READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPUART1EN); \
1118 UNUSED(tmpreg); \
1119 } while(0)
1120
1121 #if defined(SWPMI1)
1122 #define __HAL_RCC_SWPMI1_CLK_ENABLE() do { \
1123 __IO uint32_t tmpreg; \
1124 SET_BIT(RCC->APB1ENR2, RCC_APB1ENR2_SWPMI1EN); \
1125 /* Delay after an RCC peripheral clock enabling */ \
1126 tmpreg = READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_SWPMI1EN); \
1127 UNUSED(tmpreg); \
1128 } while(0)
1129 #endif /* SWPMI1 */
1130
1131 #define __HAL_RCC_LPTIM2_CLK_ENABLE() do { \
1132 __IO uint32_t tmpreg; \
1133 SET_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN); \
1134 /* Delay after an RCC peripheral clock enabling */ \
1135 tmpreg = READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN); \
1136 UNUSED(tmpreg); \
1137 } while(0)
1138
1139
1140 #define __HAL_RCC_TIM2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN)
1141
1142 #if defined(TIM3)
1143 #define __HAL_RCC_TIM3_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN)
1144 #endif /* TIM3 */
1145
1146 #if defined(TIM4)
1147 #define __HAL_RCC_TIM4_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN)
1148 #endif /* TIM4 */
1149
1150 #if defined(TIM5)
1151 #define __HAL_RCC_TIM5_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN)
1152 #endif /* TIM5 */
1153
1154 #define __HAL_RCC_TIM6_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN)
1155
1156 #define __HAL_RCC_TIM7_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN)
1157
1158 #if defined(LCD)
1159 #define __HAL_RCC_LCD_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LCDEN);
1160 #endif /* LCD */
1161
1162 #if defined(RCC_APB1ENR1_RTCAPBEN)
1163 #define __HAL_RCC_RTCAPB_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_RTCAPBEN);
1164 #endif /* RCC_APB1ENR1_RTCAPBEN */
1165
1166 #if defined(SPI2)
1167 #define __HAL_RCC_SPI2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN)
1168 #endif /* SPI2 */
1169
1170 #define __HAL_RCC_SPI3_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI3EN)
1171
1172 #define __HAL_RCC_USART2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN)
1173
1174 #if defined(USART3)
1175 #define __HAL_RCC_USART3_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN)
1176 #endif /* USART3 */
1177
1178 #if defined(UART4)
1179 #define __HAL_RCC_UART4_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN)
1180 #endif /* UART4 */
1181
1182 #if defined(UART5)
1183 #define __HAL_RCC_UART5_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN)
1184 #endif /* UART5 */
1185
1186 #define __HAL_RCC_I2C1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN)
1187
1188 #if defined(I2C2)
1189 #define __HAL_RCC_I2C2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN)
1190 #endif /* I2C2 */
1191
1192 #define __HAL_RCC_I2C3_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C3EN)
1193
1194 #if defined(I2C4)
1195 #define __HAL_RCC_I2C4_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN)
1196 #endif /* I2C4 */
1197
1198 #if defined(CRS)
1199 #define __HAL_RCC_CRS_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN);
1200 #endif /* CRS */
1201
1202 #define __HAL_RCC_CAN1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CAN1EN)
1203
1204 #if defined(USB)
1205 #define __HAL_RCC_USB_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USBFSEN);
1206 #endif /* USB */
1207
1208 #define __HAL_RCC_PWR_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_PWREN)
1209
1210 #define __HAL_RCC_DAC1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_DAC1EN)
1211
1212 #define __HAL_RCC_OPAMP_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_OPAMPEN)
1213
1214 #define __HAL_RCC_LPTIM1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LPTIM1EN)
1215
1216 #define __HAL_RCC_LPUART1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPUART1EN)
1217
1218 #if defined(SWPMI1)
1219 #define __HAL_RCC_SWPMI1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR2, RCC_APB1ENR2_SWPMI1EN)
1220 #endif /* SWPMI1 */
1221
1222 #define __HAL_RCC_LPTIM2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN)
1223
1224 /**
1225 * @}
1226 */
1227
1228 /** @defgroup RCC_APB2_Clock_Enable_Disable APB2 Peripheral Clock Enable Disable
1229 * @brief Enable or disable the APB2 peripheral clock.
1230 * @note After reset, the peripheral clock (used for registers read/write access)
1231 * is disabled and the application software has to enable this clock before
1232 * using it.
1233 * @{
1234 */
1235
1236 #define __HAL_RCC_SYSCFG_CLK_ENABLE() do { \
1237 __IO uint32_t tmpreg; \
1238 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN); \
1239 /* Delay after an RCC peripheral clock enabling */ \
1240 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN); \
1241 UNUSED(tmpreg); \
1242 } while(0)
1243
1244 #define __HAL_RCC_FIREWALL_CLK_ENABLE() do { \
1245 __IO uint32_t tmpreg; \
1246 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_FWEN); \
1247 /* Delay after an RCC peripheral clock enabling */ \
1248 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_FWEN); \
1249 UNUSED(tmpreg); \
1250 } while(0)
1251
1252 #if defined(SDMMC1)
1253 #define __HAL_RCC_SDMMC1_CLK_ENABLE() do { \
1254 __IO uint32_t tmpreg; \
1255 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC1EN); \
1256 /* Delay after an RCC peripheral clock enabling */ \
1257 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC1EN); \
1258 UNUSED(tmpreg); \
1259 } while(0)
1260 #endif /* SDMMC1 */
1261
1262 #define __HAL_RCC_TIM1_CLK_ENABLE() do { \
1263 __IO uint32_t tmpreg; \
1264 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN); \
1265 /* Delay after an RCC peripheral clock enabling */ \
1266 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN); \
1267 UNUSED(tmpreg); \
1268 } while(0)
1269
1270 #define __HAL_RCC_SPI1_CLK_ENABLE() do { \
1271 __IO uint32_t tmpreg; \
1272 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN); \
1273 /* Delay after an RCC peripheral clock enabling */ \
1274 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN); \
1275 UNUSED(tmpreg); \
1276 } while(0)
1277
1278 #if defined(TIM8)
1279 #define __HAL_RCC_TIM8_CLK_ENABLE() do { \
1280 __IO uint32_t tmpreg; \
1281 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN); \
1282 /* Delay after an RCC peripheral clock enabling */ \
1283 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN); \
1284 UNUSED(tmpreg); \
1285 } while(0)
1286 #endif /* TIM8 */
1287
1288 #define __HAL_RCC_USART1_CLK_ENABLE() do { \
1289 __IO uint32_t tmpreg; \
1290 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN); \
1291 /* Delay after an RCC peripheral clock enabling */ \
1292 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN); \
1293 UNUSED(tmpreg); \
1294 } while(0)
1295
1296
1297 #define __HAL_RCC_TIM15_CLK_ENABLE() do { \
1298 __IO uint32_t tmpreg; \
1299 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN); \
1300 /* Delay after an RCC peripheral clock enabling */ \
1301 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN); \
1302 UNUSED(tmpreg); \
1303 } while(0)
1304
1305 #define __HAL_RCC_TIM16_CLK_ENABLE() do { \
1306 __IO uint32_t tmpreg; \
1307 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN); \
1308 /* Delay after an RCC peripheral clock enabling */ \
1309 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN); \
1310 UNUSED(tmpreg); \
1311 } while(0)
1312
1313 #if defined(TIM17)
1314 #define __HAL_RCC_TIM17_CLK_ENABLE() do { \
1315 __IO uint32_t tmpreg; \
1316 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN); \
1317 /* Delay after an RCC peripheral clock enabling */ \
1318 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN); \
1319 UNUSED(tmpreg); \
1320 } while(0)
1321 #endif /* TIM17 */
1322
1323 #define __HAL_RCC_SAI1_CLK_ENABLE() do { \
1324 __IO uint32_t tmpreg; \
1325 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN); \
1326 /* Delay after an RCC peripheral clock enabling */ \
1327 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN); \
1328 UNUSED(tmpreg); \
1329 } while(0)
1330
1331 #if defined(SAI2)
1332 #define __HAL_RCC_SAI2_CLK_ENABLE() do { \
1333 __IO uint32_t tmpreg; \
1334 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN); \
1335 /* Delay after an RCC peripheral clock enabling */ \
1336 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN); \
1337 UNUSED(tmpreg); \
1338 } while(0)
1339 #endif /* SAI2 */
1340
1341 #if defined(DFSDM1_Filter0)
1342 #define __HAL_RCC_DFSDM1_CLK_ENABLE() do { \
1343 __IO uint32_t tmpreg; \
1344 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN); \
1345 /* Delay after an RCC peripheral clock enabling */ \
1346 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN); \
1347 UNUSED(tmpreg); \
1348 } while(0)
1349 #endif /* DFSDM1_Filter0 */
1350
1351
1352 #define __HAL_RCC_SYSCFG_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN)
1353
1354 #if defined(SDMMC1)
1355 #define __HAL_RCC_SDMMC1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC1EN)
1356 #endif /* SDMMC1 */
1357
1358 #define __HAL_RCC_TIM1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN)
1359
1360 #define __HAL_RCC_SPI1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN)
1361
1362 #if defined(TIM8)
1363 #define __HAL_RCC_TIM8_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN)
1364 #endif /* TIM8 */
1365
1366 #define __HAL_RCC_USART1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN)
1367
1368 #define __HAL_RCC_TIM15_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN)
1369
1370 #define __HAL_RCC_TIM16_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN)
1371
1372 #if defined(TIM17)
1373 #define __HAL_RCC_TIM17_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN)
1374 #endif /* TIM17 */
1375
1376 #define __HAL_RCC_SAI1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN)
1377
1378 #if defined(SAI2)
1379 #define __HAL_RCC_SAI2_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN)
1380 #endif /* SAI2 */
1381
1382 #if defined(DFSDM1_Filter0)
1383 #define __HAL_RCC_DFSDM1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN)
1384 #endif /* DFSDM1_Filter0 */
1385
1386 /**
1387 * @}
1388 */
1389
1390 /** @defgroup RCC_AHB1_Peripheral_Clock_Enable_Disable_Status AHB1 Peripheral Clock Enabled or Disabled Status
1391 * @brief Check whether the AHB1 peripheral clock is enabled or not.
1392 * @note After reset, the peripheral clock (used for registers read/write access)
1393 * is disabled and the application software has to enable this clock before
1394 * using it.
1395 * @{
1396 */
1397
1398 #define __HAL_RCC_DMA1_IS_CLK_ENABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN) != RESET)
1399
1400 #define __HAL_RCC_DMA2_IS_CLK_ENABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN) != RESET)
1401
1402 #define __HAL_RCC_FLASH_IS_CLK_ENABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN) != RESET)
1403
1404 #define __HAL_RCC_CRC_IS_CLK_ENABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN) != RESET)
1405
1406 #define __HAL_RCC_TSC_IS_CLK_ENABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN) != RESET)
1407
1408
1409 #define __HAL_RCC_DMA1_IS_CLK_DISABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN) == RESET)
1410
1411 #define __HAL_RCC_DMA2_IS_CLK_DISABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN) == RESET)
1412
1413 #define __HAL_RCC_FLASH_IS_CLK_DISABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN) == RESET)
1414
1415 #define __HAL_RCC_CRC_IS_CLK_DISABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN) == RESET)
1416
1417 #define __HAL_RCC_TSC_IS_CLK_DISABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN) == RESET)
1418
1419 /**
1420 * @}
1421 */
1422
1423 /** @defgroup RCC_AHB2_Clock_Enable_Disable_Status AHB2 Peripheral Clock Enabled or Disabled Status
1424 * @brief Check whether the AHB2 peripheral clock is enabled or not.
1425 * @note After reset, the peripheral clock (used for registers read/write access)
1426 * is disabled and the application software has to enable this clock before
1427 * using it.
1428 * @{
1429 */
1430
1431 #define __HAL_RCC_GPIOA_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOAEN) != RESET)
1432
1433 #define __HAL_RCC_GPIOB_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOCEN) != RESET)
1434
1435 #define __HAL_RCC_GPIOC_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOCEN) != RESET)
1436
1437 #if defined(GPIOD)
1438 #define __HAL_RCC_GPIOD_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIODEN) != RESET)
1439 #endif /* GPIOD */
1440
1441 #if defined(GPIOE)
1442 #define __HAL_RCC_GPIOE_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOEEN) != RESET)
1443 #endif /* GPIOE */
1444
1445 #if defined(GPIOF)
1446 #define __HAL_RCC_GPIOF_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOFEN) != RESET)
1447 #endif /* GPIOF */
1448
1449 #if defined(GPIOG)
1450 #define __HAL_RCC_GPIOG_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOGEN) != RESET)
1451 #endif /* GPIOG */
1452
1453 #define __HAL_RCC_GPIOH_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOHEN) != RESET)
1454
1455 #if defined(USB_OTG_FS)
1456 #define __HAL_RCC_USB_OTG_FS_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_OTGFSEN) != RESET)
1457 #endif /* USB_OTG_FS */
1458
1459 #define __HAL_RCC_ADC_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_ADCEN) != RESET)
1460
1461 #if defined(AES)
1462 #define __HAL_RCC_AES_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AESEN) != RESET)
1463 #endif /* AES */
1464
1465 #define __HAL_RCC_RNG_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN) != RESET)
1466
1467
1468 #define __HAL_RCC_GPIOA_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOAEN) == RESET)
1469
1470 #define __HAL_RCC_GPIOB_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOBEN) == RESET)
1471
1472 #define __HAL_RCC_GPIOC_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOCEN) == RESET)
1473
1474 #if defined(GPIOD)
1475 #define __HAL_RCC_GPIOD_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIODEN) == RESET)
1476 #endif /* GPIOD */
1477
1478 #if defined(GPIOE)
1479 #define __HAL_RCC_GPIOE_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOEEN) == RESET)
1480 #endif /* GPIOE */
1481
1482 #if defined(GPIOF)
1483 #define __HAL_RCC_GPIOF_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOFEN) == RESET)
1484 #endif /* GPIOF */
1485
1486 #if defined(GPIOG)
1487 #define __HAL_RCC_GPIOG_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOGEN) == RESET)
1488 #endif /* GPIOG */
1489
1490 #define __HAL_RCC_GPIOH_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOHEN) == RESET)
1491
1492 #if defined(USB_OTG_FS)
1493 #define __HAL_RCC_USB_OTG_FS_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_OTGFSEN) == RESET)
1494 #endif /* USB_OTG_FS */
1495
1496 #define __HAL_RCC_ADC_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_ADCEN) == RESET)
1497
1498 #if defined(AES)
1499 #define __HAL_RCC_AES_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AESEN) == RESET)
1500 #endif /* AES */
1501
1502 #define __HAL_RCC_RNG_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN) == RESET)
1503
1504 /**
1505 * @}
1506 */
1507
1508 /** @defgroup RCC_AHB3_Clock_Enable_Disable_Status AHB3 Peripheral Clock Enabled or Disabled Status
1509 * @brief Check whether the AHB3 peripheral clock is enabled or not.
1510 * @note After reset, the peripheral clock (used for registers read/write access)
1511 * is disabled and the application software has to enable this clock before
1512 * using it.
1513 * @{
1514 */
1515
1516 #if defined(FMC_BANK1)
1517 #define __HAL_RCC_FMC_IS_CLK_ENABLED() (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN) != RESET)
1518 #endif /* FMC_BANK1 */
1519
1520 #if defined(QUADSPI)
1521 #define __HAL_RCC_QSPI_IS_CLK_ENABLED() (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN) != RESET)
1522 #endif /* QUADSPI */
1523
1524 #if defined(FMC_BANK1)
1525 #define __HAL_RCC_FMC_IS_CLK_DISABLED() (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN) == RESET)
1526 #endif /* FMC_BANK1 */
1527
1528 #if defined(QUADSPI)
1529 #define __HAL_RCC_QSPI_IS_CLK_DISABLED() (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN) == RESET)
1530 #endif /* QUADSPI */
1531
1532 /**
1533 * @}
1534 */
1535
1536 /** @defgroup RCC_APB1_Clock_Enable_Disable_Status APB1 Peripheral Clock Enabled or Disabled Status
1537 * @brief Check whether the APB1 peripheral clock is enabled or not.
1538 * @note After reset, the peripheral clock (used for registers read/write access)
1539 * is disabled and the application software has to enable this clock before
1540 * using it.
1541 * @{
1542 */
1543
1544 #define __HAL_RCC_TIM2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN) != RESET)
1545
1546 #if defined(TIM3)
1547 #define __HAL_RCC_TIM3_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN) != RESET)
1548 #endif /* TIM3 */
1549
1550 #if defined(TIM4)
1551 #define __HAL_RCC_TIM4_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN) != RESET)
1552 #endif /* TIM4 */
1553
1554 #if defined(TIM5)
1555 #define __HAL_RCC_TIM5_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN) != RESET)
1556 #endif /* TIM5 */
1557
1558 #define __HAL_RCC_TIM6_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN) != RESET)
1559
1560 #define __HAL_RCC_TIM7_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN) != RESET)
1561
1562 #if defined(LCD)
1563 #define __HAL_RCC_LCD_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LCDEN) != RESET)
1564 #endif /* LCD */
1565
1566 #if defined(RCC_APB1ENR1_RTCAPBEN)
1567 #define __HAL_RCC_RTCAPB_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_RTCAPBEN) != RESET)
1568 #endif /* RCC_APB1ENR1_RTCAPBEN */
1569
1570 #define __HAL_RCC_WWDG_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_WWDGEN) != RESET)
1571
1572 #if defined(SPI2)
1573 #define __HAL_RCC_SPI2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN) != RESET)
1574 #endif /* SPI2 */
1575
1576 #define __HAL_RCC_SPI3_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI3EN) != RESET)
1577
1578 #define __HAL_RCC_USART2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN) != RESET)
1579
1580 #if defined(USART3)
1581 #define __HAL_RCC_USART3_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN) != RESET)
1582 #endif /* USART3 */
1583
1584 #if defined(UART4)
1585 #define __HAL_RCC_UART4_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN) != RESET)
1586 #endif /* UART4 */
1587
1588 #if defined(UART5)
1589 #define __HAL_RCC_UART5_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN) != RESET)
1590 #endif /* UART5 */
1591
1592 #define __HAL_RCC_I2C1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN) != RESET)
1593
1594 #if defined(I2C2)
1595 #define __HAL_RCC_I2C2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN) != RESET)
1596 #endif /* I2C2 */
1597
1598 #define __HAL_RCC_I2C3_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C3EN) != RESET)
1599
1600 #if defined(I2C4)
1601 #define __HAL_RCC_I2C4_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN) != RESET)
1602 #endif /* I2C4 */
1603
1604 #if defined(CRS)
1605 #define __HAL_RCC_CRS_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN) != RESET)
1606 #endif /* CRS */
1607
1608 #define __HAL_RCC_CAN1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CAN1EN) != RESET)
1609
1610 #if defined(USB)
1611 #define __HAL_RCC_USB_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USBFSEN) != RESET)
1612 #endif /* USB */
1613
1614 #define __HAL_RCC_PWR_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_PWREN) != RESET)
1615
1616 #define __HAL_RCC_DAC1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_DAC1EN) != RESET)
1617
1618 #define __HAL_RCC_OPAMP_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_OPAMPEN) != RESET)
1619
1620 #define __HAL_RCC_LPTIM1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LPTIM1EN) != RESET)
1621
1622 #define __HAL_RCC_LPUART1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPUART1EN) != RESET)
1623
1624 #if defined(SWPMI1)
1625 #define __HAL_RCC_SWPMI1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_SWPMI1EN) != RESET)
1626 #endif /* SWPMI1 */
1627
1628 #define __HAL_RCC_LPTIM2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN) != RESET)
1629
1630
1631 #define __HAL_RCC_TIM2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN) == RESET)
1632
1633 #if defined(TIM3)
1634 #define __HAL_RCC_TIM3_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN) == RESET)
1635 #endif /* TIM3 */
1636
1637 #if defined(TIM4)
1638 #define __HAL_RCC_TIM4_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN) == RESET)
1639 #endif /* TIM4 */
1640
1641 #if defined(TIM5)
1642 #define __HAL_RCC_TIM5_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN) == RESET)
1643 #endif /* TIM5 */
1644
1645 #define __HAL_RCC_TIM6_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN) == RESET)
1646
1647 #define __HAL_RCC_TIM7_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN) == RESET)
1648
1649 #if defined(LCD)
1650 #define __HAL_RCC_LCD_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LCDEN) == RESET)
1651 #endif /* LCD */
1652
1653 #if defined(RCC_APB1ENR1_RTCAPBEN)
1654 #define __HAL_RCC_RTCAPB_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_RTCAPBEN) == RESET)
1655 #endif /* RCC_APB1ENR1_RTCAPBEN */
1656
1657 #define __HAL_RCC_WWDG_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_WWDGEN) == RESET)
1658
1659 #if defined(SPI2)
1660 #define __HAL_RCC_SPI2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN) == RESET)
1661 #endif /* SPI2 */
1662
1663 #define __HAL_RCC_SPI3_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI3EN) == RESET)
1664
1665 #define __HAL_RCC_USART2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN) == RESET)
1666
1667 #if defined(USART3)
1668 #define __HAL_RCC_USART3_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN) == RESET)
1669 #endif /* USART3 */
1670
1671 #if defined(UART4)
1672 #define __HAL_RCC_UART4_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN) == RESET)
1673 #endif /* UART4 */
1674
1675 #if defined(UART5)
1676 #define __HAL_RCC_UART5_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN) == RESET)
1677 #endif /* UART5 */
1678
1679 #define __HAL_RCC_I2C1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN) == RESET)
1680
1681 #if defined(I2C2)
1682 #define __HAL_RCC_I2C2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN) == RESET)
1683 #endif /* I2C2 */
1684
1685 #define __HAL_RCC_I2C3_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C3EN) == RESET)
1686
1687 #if defined(I2C4)
1688 #define __HAL_RCC_I2C4_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN) == RESET)
1689 #endif /* I2C4 */
1690
1691 #if defined(CRS)
1692 #define __HAL_RCC_CRS_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN) == RESET)
1693 #endif /* CRS */
1694
1695 #define __HAL_RCC_CAN1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CAN1EN) == RESET)
1696
1697 #if defined(USB)
1698 #define __HAL_RCC_USB_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USBFSEN) == RESET)
1699 #endif /* USB */
1700
1701 #define __HAL_RCC_PWR_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_PWREN) == RESET)
1702
1703 #define __HAL_RCC_DAC1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_DAC1EN) == RESET)
1704
1705 #define __HAL_RCC_OPAMP_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_OPAMPEN) == RESET)
1706
1707 #define __HAL_RCC_LPTIM1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LPTIM1EN) == RESET)
1708
1709 #define __HAL_RCC_LPUART1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPUART1EN) == RESET)
1710
1711 #if defined(SWPMI1)
1712 #define __HAL_RCC_SWPMI1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_SWPMI1EN) == RESET)
1713 #endif /* SWPMI1 */
1714
1715 #define __HAL_RCC_LPTIM2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN) == RESET)
1716
1717 /**
1718 * @}
1719 */
1720
1721 /** @defgroup RCC_APB2_Clock_Enable_Disable_Status APB2 Peripheral Clock Enabled or Disabled Status
1722 * @brief Check whether the APB2 peripheral clock is enabled or not.
1723 * @note After reset, the peripheral clock (used for registers read/write access)
1724 * is disabled and the application software has to enable this clock before
1725 * using it.
1726 * @{
1727 */
1728
1729 #define __HAL_RCC_SYSCFG_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN) != RESET)
1730
1731 #define __HAL_RCC_FIREWALL_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_FWEN) != RESET)
1732
1733 #if defined(SDMMC1)
1734 #define __HAL_RCC_SDMMC1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC1EN) != RESET)
1735 #endif /* SDMMC1 */
1736
1737 #define __HAL_RCC_TIM1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN) != RESET)
1738
1739 #define __HAL_RCC_SPI1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN) != RESET)
1740
1741 #if defined(TIM8)
1742 #define __HAL_RCC_TIM8_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN) != RESET)
1743 #endif /* TIM8 */
1744
1745 #define __HAL_RCC_USART1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN) != RESET)
1746
1747 #define __HAL_RCC_TIM15_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN) != RESET)
1748
1749 #define __HAL_RCC_TIM16_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN) != RESET)
1750
1751 #if defined(TIM17)
1752 #define __HAL_RCC_TIM17_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN) != RESET)
1753 #endif /* TIM17 */
1754
1755 #define __HAL_RCC_SAI1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN) != RESET)
1756
1757 #if defined(SAI2)
1758 #define __HAL_RCC_SAI2_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN) != RESET)
1759 #endif /* SAI2 */
1760
1761 #if defined(DFSDM1_Filter0)
1762 #define __HAL_RCC_DFSDM1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN) != RESET)
1763 #endif /* DFSDM1_Filter0 */
1764
1765
1766 #define __HAL_RCC_SYSCFG_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN) == RESET)
1767
1768 #if defined(SDMMC1)
1769 #define __HAL_RCC_SDMMC1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC1EN) == RESET)
1770 #endif /* SDMMC1 */
1771
1772 #define __HAL_RCC_TIM1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN) == RESET)
1773
1774 #define __HAL_RCC_SPI1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN) == RESET)
1775
1776 #if defined(TIM8)
1777 #define __HAL_RCC_TIM8_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN) == RESET)
1778 #endif /* TIM8 */
1779
1780 #define __HAL_RCC_USART1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN) == RESET)
1781
1782 #define __HAL_RCC_TIM15_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN) == RESET)
1783
1784 #define __HAL_RCC_TIM16_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN) == RESET)
1785
1786 #if defined(TIM17)
1787 #define __HAL_RCC_TIM17_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN) == RESET)
1788 #endif /* TIM17 */
1789
1790 #define __HAL_RCC_SAI1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN) == RESET)
1791
1792 #if defined(SAI2)
1793 #define __HAL_RCC_SAI2_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN) == RESET)
1794 #endif /* SAI2 */
1795
1796 #if defined(DFSDM1_Filter0)
1797 #define __HAL_RCC_DFSDM1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN) == RESET)
1798 #endif /* DFSDM1_Filter0 */
1799
1800 /**
1801 * @}
1802 */
1803
1804 /** @defgroup RCC_AHB1_Force_Release_Reset AHB1 Peripheral Force Release Reset
1805 * @brief Force or release AHB1 peripheral reset.
1806 * @{
1807 */
1808 #define __HAL_RCC_AHB1_FORCE_RESET() WRITE_REG(RCC->AHB1RSTR, 0xFFFFFFFFU)
1809
1810 #define __HAL_RCC_DMA1_FORCE_RESET() SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_DMA1RST)
1811
1812 #define __HAL_RCC_DMA2_FORCE_RESET() SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_DMA2RST)
1813
1814 #define __HAL_RCC_FLASH_FORCE_RESET() SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_FLASHRST)
1815
1816 #define __HAL_RCC_CRC_FORCE_RESET() SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_CRCRST)
1817
1818 #define __HAL_RCC_TSC_FORCE_RESET() SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_TSCRST)
1819
1820
1821 #define __HAL_RCC_AHB1_RELEASE_RESET() WRITE_REG(RCC->AHB1RSTR, 0x00000000U)
1822
1823 #define __HAL_RCC_DMA1_RELEASE_RESET() CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_DMA1RST)
1824
1825 #define __HAL_RCC_DMA2_RELEASE_RESET() CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_DMA2RST)
1826
1827 #define __HAL_RCC_FLASH_RELEASE_RESET() CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_FLASHRST)
1828
1829 #define __HAL_RCC_CRC_RELEASE_RESET() CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_CRCRST)
1830
1831 #define __HAL_RCC_TSC_RELEASE_RESET() CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_TSCRST)
1832
1833 /**
1834 * @}
1835 */
1836
1837 /** @defgroup RCC_AHB2_Force_Release_Reset AHB2 Peripheral Force Release Reset
1838 * @brief Force or release AHB2 peripheral reset.
1839 * @{
1840 */
1841 #define __HAL_RCC_AHB2_FORCE_RESET() WRITE_REG(RCC->AHB2RSTR, 0xFFFFFFFFU)
1842
1843 #define __HAL_RCC_GPIOA_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOARST)
1844
1845 #define __HAL_RCC_GPIOB_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOBRST)
1846
1847 #define __HAL_RCC_GPIOC_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOCRST)
1848
1849 #if defined(GPIOD)
1850 #define __HAL_RCC_GPIOD_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIODRST)
1851 #endif /* GPIOD */
1852
1853 #if defined(GPIOE)
1854 #define __HAL_RCC_GPIOE_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOERST)
1855 #endif /* GPIOE */
1856
1857 #if defined(GPIOF)
1858 #define __HAL_RCC_GPIOF_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOFRST)
1859 #endif /* GPIOF */
1860
1861 #if defined(GPIOG)
1862 #define __HAL_RCC_GPIOG_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOGRST)
1863 #endif /* GPIOG */
1864
1865 #define __HAL_RCC_GPIOH_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOHRST)
1866
1867 #if defined(USB_OTG_FS)
1868 #define __HAL_RCC_USB_OTG_FS_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_OTGFSRST)
1869 #endif /* USB_OTG_FS */
1870
1871 #define __HAL_RCC_ADC_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_ADCRST)
1872
1873 #if defined(AES)
1874 #define __HAL_RCC_AES_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_AESRST)
1875 #endif /* AES */
1876
1877 #define __HAL_RCC_RNG_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_RNGRST)
1878
1879
1880 #define __HAL_RCC_AHB2_RELEASE_RESET() WRITE_REG(RCC->AHB2RSTR, 0x00000000U)
1881
1882 #define __HAL_RCC_GPIOA_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOARST)
1883
1884 #define __HAL_RCC_GPIOB_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOBRST)
1885
1886 #define __HAL_RCC_GPIOC_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOCRST)
1887
1888 #if defined(GPIOD)
1889 #define __HAL_RCC_GPIOD_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIODRST)
1890 #endif /* GPIOD */
1891
1892 #if defined(GPIOE)
1893 #define __HAL_RCC_GPIOE_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOERST)
1894 #endif /* GPIOE */
1895
1896 #if defined(GPIOF)
1897 #define __HAL_RCC_GPIOF_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOFRST)
1898 #endif /* GPIOF */
1899
1900 #if defined(GPIOG)
1901 #define __HAL_RCC_GPIOG_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOGRST)
1902 #endif /* GPIOG */
1903
1904 #define __HAL_RCC_GPIOH_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOHRST)
1905
1906 #if defined(USB_OTG_FS)
1907 #define __HAL_RCC_USB_OTG_FS_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_OTGFSRST)
1908 #endif /* USB_OTG_FS */
1909
1910 #define __HAL_RCC_ADC_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_ADCRST)
1911
1912 #if defined(AES)
1913 #define __HAL_RCC_AES_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_AESRST)
1914 #endif /* AES */
1915
1916 #define __HAL_RCC_RNG_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_RNGRST)
1917
1918 /**
1919 * @}
1920 */
1921
1922 /** @defgroup RCC_AHB3_Force_Release_Reset AHB3 Peripheral Force Release Reset
1923 * @brief Force or release AHB3 peripheral reset.
1924 * @{
1925 */
1926 #define __HAL_RCC_AHB3_FORCE_RESET() WRITE_REG(RCC->AHB3RSTR, 0xFFFFFFFFU)
1927
1928 #if defined(FMC_BANK1)
1929 #define __HAL_RCC_FMC_FORCE_RESET() SET_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_FMCRST)
1930 #endif /* FMC_BANK1 */
1931
1932 #if defined(QUADSPI)
1933 #define __HAL_RCC_QSPI_FORCE_RESET() SET_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_QSPIRST)
1934 #endif /* QUADSPI */
1935
1936 #define __HAL_RCC_AHB3_RELEASE_RESET() WRITE_REG(RCC->AHB3RSTR, 0x00000000U)
1937
1938 #if defined(FMC_BANK1)
1939 #define __HAL_RCC_FMC_RELEASE_RESET() CLEAR_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_FMCRST)
1940 #endif /* FMC_BANK1 */
1941
1942 #if defined(QUADSPI)
1943 #define __HAL_RCC_QSPI_RELEASE_RESET() CLEAR_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_QSPIRST)
1944 #endif /* QUADSPI */
1945
1946 /**
1947 * @}
1948 */
1949
1950 /** @defgroup RCC_APB1_Force_Release_Reset APB1 Peripheral Force Release Reset
1951 * @brief Force or release APB1 peripheral reset.
1952 * @{
1953 */
1954 #define __HAL_RCC_APB1_FORCE_RESET() WRITE_REG(RCC->APB1RSTR1, 0xFFFFFFFFU)
1955
1956 #define __HAL_RCC_TIM2_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM2RST)
1957
1958 #if defined(TIM3)
1959 #define __HAL_RCC_TIM3_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM3RST)
1960 #endif /* TIM3 */
1961
1962 #if defined(TIM4)
1963 #define __HAL_RCC_TIM4_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM4RST)
1964 #endif /* TIM4 */
1965
1966 #if defined(TIM5)
1967 #define __HAL_RCC_TIM5_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM5RST)
1968 #endif /* TIM5 */
1969
1970 #define __HAL_RCC_TIM6_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM6RST)
1971
1972 #define __HAL_RCC_TIM7_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM7RST)
1973
1974 #if defined(LCD)
1975 #define __HAL_RCC_LCD_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_LCDRST)
1976 #endif /* LCD */
1977
1978 #if defined(SPI2)
1979 #define __HAL_RCC_SPI2_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_SPI2RST)
1980 #endif /* SPI2 */
1981
1982 #define __HAL_RCC_SPI3_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_SPI3RST)
1983
1984 #define __HAL_RCC_USART2_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USART2RST)
1985
1986 #if defined(USART3)
1987 #define __HAL_RCC_USART3_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USART3RST)
1988 #endif /* USART3 */
1989
1990 #if defined(UART4)
1991 #define __HAL_RCC_UART4_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_UART4RST)
1992 #endif /* UART4 */
1993
1994 #if defined(UART5)
1995 #define __HAL_RCC_UART5_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_UART5RST)
1996 #endif /* UART5 */
1997
1998 #define __HAL_RCC_I2C1_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C1RST)
1999
2000 #if defined(I2C2)
2001 #define __HAL_RCC_I2C2_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C2RST)
2002 #endif /* I2C2 */
2003
2004 #define __HAL_RCC_I2C3_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C3RST)
2005
2006 #if defined(I2C4)
2007 #define __HAL_RCC_I2C4_FORCE_RESET() SET_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_I2C4RST)
2008 #endif /* I2C4 */
2009
2010 #if defined(CRS)
2011 #define __HAL_RCC_CRS_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_CRSRST)
2012 #endif /* CRS */
2013
2014 #define __HAL_RCC_CAN1_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_CAN1RST)
2015
2016 #if defined(USB)
2017 #define __HAL_RCC_USB_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USBFSRST)
2018 #endif /* USB */
2019
2020 #define __HAL_RCC_PWR_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_PWRRST)
2021
2022 #define __HAL_RCC_DAC1_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_DAC1RST)
2023
2024 #define __HAL_RCC_OPAMP_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_OPAMPRST)
2025
2026 #define __HAL_RCC_LPTIM1_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_LPTIM1RST)
2027
2028 #define __HAL_RCC_LPUART1_FORCE_RESET() SET_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_LPUART1RST)
2029
2030 #if defined(SWPMI1)
2031 #define __HAL_RCC_SWPMI1_FORCE_RESET() SET_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_SWPMI1RST)
2032 #endif /* SWPMI1 */
2033
2034 #define __HAL_RCC_LPTIM2_FORCE_RESET() SET_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_LPTIM2RST)
2035
2036
2037 #define __HAL_RCC_APB1_RELEASE_RESET() WRITE_REG(RCC->APB1RSTR1, 0x00000000U)
2038
2039 #define __HAL_RCC_TIM2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM2RST)
2040
2041 #if defined(TIM3)
2042 #define __HAL_RCC_TIM3_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM3RST)
2043 #endif /* TIM3 */
2044
2045 #if defined(TIM4)
2046 #define __HAL_RCC_TIM4_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM4RST)
2047 #endif /* TIM4 */
2048
2049 #if defined(TIM5)
2050 #define __HAL_RCC_TIM5_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM5RST)
2051 #endif /* TIM5 */
2052
2053 #define __HAL_RCC_TIM6_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM6RST)
2054
2055 #define __HAL_RCC_TIM7_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM7RST)
2056
2057 #if defined(LCD)
2058 #define __HAL_RCC_LCD_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_LCDRST)
2059 #endif /* LCD */
2060
2061 #if defined(SPI2)
2062 #define __HAL_RCC_SPI2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_SPI2RST)
2063 #endif /* SPI2 */
2064
2065 #define __HAL_RCC_SPI3_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_SPI3RST)
2066
2067 #define __HAL_RCC_USART2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USART2RST)
2068
2069 #if defined(USART3)
2070 #define __HAL_RCC_USART3_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USART3RST)
2071 #endif /* USART3 */
2072
2073 #if defined(UART4)
2074 #define __HAL_RCC_UART4_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_UART4RST)
2075 #endif /* UART4 */
2076
2077 #if defined(UART5)
2078 #define __HAL_RCC_UART5_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_UART5RST)
2079 #endif /* UART5 */
2080
2081 #define __HAL_RCC_I2C1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C1RST)
2082
2083 #if defined(I2C2)
2084 #define __HAL_RCC_I2C2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C2RST)
2085 #endif /* I2C2 */
2086
2087 #define __HAL_RCC_I2C3_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C3RST)
2088
2089 #if defined(I2C4)
2090 #define __HAL_RCC_I2C4_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_I2C4RST)
2091 #endif /* I2C4 */
2092
2093 #if defined(CRS)
2094 #define __HAL_RCC_CRS_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_CRSRST)
2095 #endif /* CRS */
2096
2097 #define __HAL_RCC_CAN1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_CAN1RST)
2098
2099 #if defined(USB)
2100 #define __HAL_RCC_USB_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USBFSRST)
2101 #endif /* USB */
2102
2103 #define __HAL_RCC_PWR_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_PWRRST)
2104
2105 #define __HAL_RCC_DAC1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_DAC1RST)
2106
2107 #define __HAL_RCC_OPAMP_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_OPAMPRST)
2108
2109 #define __HAL_RCC_LPTIM1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_LPTIM1RST)
2110
2111 #define __HAL_RCC_LPUART1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_LPUART1RST)
2112
2113 #if defined(SWPMI1)
2114 #define __HAL_RCC_SWPMI1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_SWPMI1RST)
2115 #endif /* SWPMI1 */
2116
2117 #define __HAL_RCC_LPTIM2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_LPTIM2RST)
2118
2119 /**
2120 * @}
2121 */
2122
2123 /** @defgroup RCC_APB2_Force_Release_Reset APB2 Peripheral Force Release Reset
2124 * @brief Force or release APB2 peripheral reset.
2125 * @{
2126 */
2127 #define __HAL_RCC_APB2_FORCE_RESET() WRITE_REG(RCC->APB2RSTR, 0xFFFFFFFFU)
2128
2129 #define __HAL_RCC_SYSCFG_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SYSCFGRST)
2130
2131 #if defined(SDMMC1)
2132 #define __HAL_RCC_SDMMC1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SDMMC1RST)
2133 #endif /* SDMMC1 */
2134
2135 #define __HAL_RCC_TIM1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM1RST)
2136
2137 #define __HAL_RCC_SPI1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SPI1RST)
2138
2139 #if defined(TIM8)
2140 #define __HAL_RCC_TIM8_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM8RST)
2141 #endif /* TIM8 */
2142
2143 #define __HAL_RCC_USART1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_USART1RST)
2144
2145 #define __HAL_RCC_TIM15_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM15RST)
2146
2147 #define __HAL_RCC_TIM16_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM16RST)
2148
2149 #if defined(TIM17)
2150 #define __HAL_RCC_TIM17_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM17RST)
2151 #endif /* TIM17 */
2152
2153 #define __HAL_RCC_SAI1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SAI1RST)
2154
2155 #if defined(SAI2)
2156 #define __HAL_RCC_SAI2_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SAI2RST)
2157 #endif /* SAI2 */
2158
2159 #if defined(DFSDM1_Filter0)
2160 #define __HAL_RCC_DFSDM1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_DFSDM1RST)
2161 #endif /* DFSDM1_Filter0 */
2162
2163
2164 #define __HAL_RCC_APB2_RELEASE_RESET() WRITE_REG(RCC->APB2RSTR, 0x00000000U)
2165
2166 #define __HAL_RCC_SYSCFG_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SYSCFGRST)
2167
2168 #if defined(SDMMC1)
2169 #define __HAL_RCC_SDMMC1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SDMMC1RST)
2170 #endif /* SDMMC1 */
2171
2172 #define __HAL_RCC_TIM1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM1RST)
2173
2174 #define __HAL_RCC_SPI1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SPI1RST)
2175
2176 #if defined(TIM8)
2177 #define __HAL_RCC_TIM8_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM8RST)
2178 #endif /* TIM8 */
2179
2180 #define __HAL_RCC_USART1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_USART1RST)
2181
2182 #define __HAL_RCC_TIM15_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM15RST)
2183
2184 #define __HAL_RCC_TIM16_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM16RST)
2185
2186 #if defined(TIM17)
2187 #define __HAL_RCC_TIM17_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM17RST)
2188 #endif /* TIM17 */
2189
2190 #define __HAL_RCC_SAI1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SAI1RST)
2191
2192 #if defined(SAI2)
2193 #define __HAL_RCC_SAI2_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SAI2RST)
2194 #endif /* SAI2 */
2195
2196 #if defined(DFSDM1_Filter0)
2197 #define __HAL_RCC_DFSDM1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_DFSDM1RST)
2198 #endif /* DFSDM1_Filter0 */
2199
2200 /**
2201 * @}
2202 */
2203
2204 /** @defgroup RCC_AHB1_Clock_Sleep_Enable_Disable AHB1 Peripheral Clock Sleep Enable Disable
2205 * @brief Enable or disable the AHB1 peripheral clock during Low Power (Sleep) mode.
2206 * @note Peripheral clock gating in SLEEP mode can be used to further reduce
2207 * power consumption.
2208 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
2209 * @note By default, all peripheral clocks are enabled during SLEEP mode.
2210 * @{
2211 */
2212
2213 #define __HAL_RCC_DMA1_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA1SMEN)
2214
2215 #define __HAL_RCC_DMA2_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA2SMEN)
2216
2217 #define __HAL_RCC_FLASH_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_FLASHSMEN)
2218
2219 #define __HAL_RCC_SRAM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_SRAM1SMEN)
2220
2221 #define __HAL_RCC_CRC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_CRCSMEN)
2222
2223 #define __HAL_RCC_TSC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_TSCSMEN)
2224
2225
2226 #define __HAL_RCC_DMA1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA1SMEN)
2227
2228 #define __HAL_RCC_DMA2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA2SMEN)
2229
2230 #define __HAL_RCC_FLASH_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_FLASHSMEN)
2231
2232 #define __HAL_RCC_SRAM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_SRAM1SMEN)
2233
2234 #define __HAL_RCC_CRC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_CRCSMEN)
2235
2236 #define __HAL_RCC_TSC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_TSCSMEN)
2237
2238 /**
2239 * @}
2240 */
2241
2242 /** @defgroup RCC_AHB2_Clock_Sleep_Enable_Disable AHB2 Peripheral Clock Sleep Enable Disable
2243 * @brief Enable or disable the AHB2 peripheral clock during Low Power (Sleep) mode.
2244 * @note Peripheral clock gating in SLEEP mode can be used to further reduce
2245 * power consumption.
2246 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
2247 * @note By default, all peripheral clocks are enabled during SLEEP mode.
2248 * @{
2249 */
2250
2251 #define __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOASMEN)
2252
2253 #define __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOBSMEN)
2254
2255 #define __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOCSMEN)
2256
2257 #if defined(GPIOD)
2258 #define __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIODSMEN)
2259 #endif /* GPIOD */
2260
2261 #if defined(GPIOE)
2262 #define __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOESMEN)
2263 #endif /* GPIOE */
2264
2265 #if defined(GPIOF)
2266 #define __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOFSMEN)
2267 #endif /* GPIOF */
2268
2269 #if defined(GPIOG)
2270 #define __HAL_RCC_GPIOG_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOGSMEN)
2271 #endif /* GPIOG */
2272
2273 #define __HAL_RCC_GPIOH_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOHSMEN)
2274
2275 #define __HAL_RCC_SRAM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_SRAM2SMEN)
2276
2277 #if defined(USB_OTG_FS)
2278 #define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_OTGFSSMEN)
2279 #endif /* USB_OTG_FS */
2280
2281 #define __HAL_RCC_ADC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_ADCSMEN)
2282
2283 #if defined(AES)
2284 #define __HAL_RCC_AES_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_AESSMEN)
2285 #endif /* AES */
2286
2287 #define __HAL_RCC_RNG_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_RNGSMEN)
2288
2289
2290 #define __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOASMEN)
2291
2292 #define __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOBSMEN)
2293
2294 #define __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOCSMEN)
2295
2296 #if defined(GPIOD)
2297 #define __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIODSMEN)
2298 #endif /* GPIOD */
2299
2300 #if defined(GPIOE)
2301 #define __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOESMEN)
2302 #endif /* GPIOE */
2303
2304 #if defined(GPIOF)
2305 #define __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOFSMEN)
2306 #endif /* GPIOF */
2307
2308 #if defined(GPIOG)
2309 #define __HAL_RCC_GPIOG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOGSMEN)
2310 #endif /* GPIOG */
2311
2312 #define __HAL_RCC_GPIOH_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOHSMEN)
2313
2314 #define __HAL_RCC_SRAM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_SRAM2SMEN)
2315
2316 #if defined(USB_OTG_FS)
2317 #define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_OTGFSSMEN)
2318 #endif /* USB_OTG_FS */
2319
2320 #define __HAL_RCC_ADC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_ADCSMEN)
2321
2322 #if defined(AES)
2323 #define __HAL_RCC_AES_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_AESSMEN)
2324 #endif /* AES */
2325
2326 #define __HAL_RCC_RNG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_RNGSMEN)
2327
2328 /**
2329 * @}
2330 */
2331
2332 /** @defgroup RCC_AHB3_Clock_Sleep_Enable_Disable AHB3 Peripheral Clock Sleep Enable Disable
2333 * @brief Enable or disable the AHB3 peripheral clock during Low Power (Sleep) mode.
2334 * @note Peripheral clock gating in SLEEP mode can be used to further reduce
2335 * power consumption.
2336 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
2337 * @note By default, all peripheral clocks are enabled during SLEEP mode.
2338 * @{
2339 */
2340
2341 #if defined(QUADSPI)
2342 #define __HAL_RCC_QSPI_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_QSPISMEN)
2343 #endif /* QUADSPI */
2344
2345 #if defined(FMC_BANK1)
2346 #define __HAL_RCC_FMC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_FMCSMEN)
2347 #endif /* FMC_BANK1 */
2348
2349 #if defined(QUADSPI)
2350 #define __HAL_RCC_QSPI_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_QSPISMEN)
2351 #endif /* QUADSPI */
2352
2353 #if defined(FMC_BANK1)
2354 #define __HAL_RCC_FMC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_FMCSMEN)
2355 #endif /* FMC_BANK1 */
2356
2357 /**
2358 * @}
2359 */
2360
2361 /** @defgroup RCC_APB1_Clock_Sleep_Enable_Disable APB1 Peripheral Clock Sleep Enable Disable
2362 * @brief Enable or disable the APB1 peripheral clock during Low Power (Sleep) mode.
2363 * @note Peripheral clock gating in SLEEP mode can be used to further reduce
2364 * power consumption.
2365 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
2366 * @note By default, all peripheral clocks are enabled during SLEEP mode.
2367 * @{
2368 */
2369
2370 #define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM2SMEN)
2371
2372 #if defined(TIM3)
2373 #define __HAL_RCC_TIM3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM3SMEN)
2374 #endif /* TIM3 */
2375
2376 #if defined(TIM4)
2377 #define __HAL_RCC_TIM4_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM4SMEN)
2378 #endif /* TIM4 */
2379
2380 #if defined(TIM5)
2381 #define __HAL_RCC_TIM5_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM5SMEN)
2382 #endif /* TIM5 */
2383
2384 #define __HAL_RCC_TIM6_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM6SMEN)
2385
2386 #define __HAL_RCC_TIM7_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM7SMEN)
2387
2388 #if defined(LCD)
2389 #define __HAL_RCC_LCD_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LCDSMEN)
2390 #endif /* LCD */
2391
2392 #if defined(RCC_APB1SMENR1_RTCAPBSMEN)
2393 #define __HAL_RCC_RTCAPB_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_RTCAPBSMEN)
2394 #endif /* RCC_APB1SMENR1_RTCAPBSMEN */
2395
2396 #define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_WWDGSMEN)
2397
2398 #if defined(SPI2)
2399 #define __HAL_RCC_SPI2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI2SMEN)
2400 #endif /* SPI2 */
2401
2402 #define __HAL_RCC_SPI3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI3SMEN)
2403
2404 #define __HAL_RCC_USART2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART2SMEN)
2405
2406 #if defined(USART3)
2407 #define __HAL_RCC_USART3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART3SMEN)
2408 #endif /* USART3 */
2409
2410 #if defined(UART4)
2411 #define __HAL_RCC_UART4_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART4SMEN)
2412 #endif /* UART4 */
2413
2414 #if defined(UART5)
2415 #define __HAL_RCC_UART5_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART5SMEN)
2416 #endif /* UART5 */
2417
2418 #define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C1SMEN)
2419
2420 #if defined(I2C2)
2421 #define __HAL_RCC_I2C2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C2SMEN)
2422 #endif /* I2C2 */
2423
2424 #define __HAL_RCC_I2C3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C3SMEN)
2425
2426 #if defined(I2C4)
2427 #define __HAL_RCC_I2C4_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_I2C4SMEN)
2428 #endif /* I2C4 */
2429
2430 #if defined(CRS)
2431 #define __HAL_RCC_CRS_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CRSSMEN)
2432 #endif /* CRS */
2433
2434 #define __HAL_RCC_CAN1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CAN1SMEN)
2435
2436 #if defined(USB)
2437 #define __HAL_RCC_USB_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USBFSSMEN)
2438 #endif /* USB */
2439
2440 #define __HAL_RCC_PWR_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_PWRSMEN)
2441
2442 #define __HAL_RCC_DAC1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_DAC1SMEN)
2443
2444 #define __HAL_RCC_OPAMP_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_OPAMPSMEN)
2445
2446 #define __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LPTIM1SMEN)
2447
2448 #define __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPUART1SMEN)
2449
2450 #if defined(SWPMI1)
2451 #define __HAL_RCC_SWPMI1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_SWPMI1SMEN)
2452 #endif /* SWPMI1 */
2453
2454 #define __HAL_RCC_LPTIM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPTIM2SMEN)
2455
2456
2457 #define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM2SMEN)
2458
2459 #if defined(TIM3)
2460 #define __HAL_RCC_TIM3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM3SMEN)
2461 #endif /* TIM3 */
2462
2463 #if defined(TIM4)
2464 #define __HAL_RCC_TIM4_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM4SMEN)
2465 #endif /* TIM4 */
2466
2467 #if defined(TIM5)
2468 #define __HAL_RCC_TIM5_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM5SMEN)
2469 #endif /* TIM5 */
2470
2471 #define __HAL_RCC_TIM6_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM6SMEN)
2472
2473 #define __HAL_RCC_TIM7_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM7SMEN)
2474
2475 #if defined(LCD)
2476 #define __HAL_RCC_LCD_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LCDSMEN)
2477 #endif /* LCD */
2478
2479 #if defined(RCC_APB1SMENR1_RTCAPBSMEN)
2480 #define __HAL_RCC_RTCAPB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_RTCAPBSMEN)
2481 #endif /* RCC_APB1SMENR1_RTCAPBSMEN */
2482
2483 #define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_WWDGSMEN)
2484
2485 #if defined(SPI2)
2486 #define __HAL_RCC_SPI2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI2SMEN)
2487 #endif /* SPI2 */
2488
2489 #define __HAL_RCC_SPI3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI3SMEN)
2490
2491 #define __HAL_RCC_USART2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART2SMEN)
2492
2493 #if defined(USART3)
2494 #define __HAL_RCC_USART3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART3SMEN)
2495 #endif /* USART3 */
2496
2497 #if defined(UART4)
2498 #define __HAL_RCC_UART4_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART4SMEN)
2499 #endif /* UART4 */
2500
2501 #if defined(UART5)
2502 #define __HAL_RCC_UART5_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART5SMEN)
2503 #endif /* UART5 */
2504
2505 #define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C1SMEN)
2506
2507 #if defined(I2C2)
2508 #define __HAL_RCC_I2C2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C2SMEN)
2509 #endif /* I2C2 */
2510
2511 #define __HAL_RCC_I2C3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C3SMEN)
2512
2513 #if defined(I2C4)
2514 #define __HAL_RCC_I2C4_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_I2C4SMEN)
2515 #endif /* I2C4 */
2516
2517 #if defined(CRS)
2518 #define __HAL_RCC_CRS_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CRSSMEN)
2519 #endif /* CRS */
2520
2521 #define __HAL_RCC_CAN1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CAN1SMEN)
2522
2523 #if defined(USB)
2524 #define __HAL_RCC_USB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USBFSSMEN)
2525 #endif /* USB */
2526
2527 #define __HAL_RCC_PWR_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_PWRSMEN)
2528
2529 #define __HAL_RCC_DAC1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_DAC1SMEN)
2530
2531 #define __HAL_RCC_OPAMP_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_OPAMPSMEN)
2532
2533 #define __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LPTIM1SMEN)
2534
2535 #define __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPUART1SMEN)
2536
2537 #if defined(SWPMI1)
2538 #define __HAL_RCC_SWPMI1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_SWPMI1SMEN)
2539 #endif /* SWPMI1 */
2540
2541 #define __HAL_RCC_LPTIM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPTIM2SMEN)
2542
2543 /**
2544 * @}
2545 */
2546
2547 /** @defgroup RCC_APB2_Clock_Sleep_Enable_Disable APB2 Peripheral Clock Sleep Enable Disable
2548 * @brief Enable or disable the APB2 peripheral clock during Low Power (Sleep) mode.
2549 * @note Peripheral clock gating in SLEEP mode can be used to further reduce
2550 * power consumption.
2551 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
2552 * @note By default, all peripheral clocks are enabled during SLEEP mode.
2553 * @{
2554 */
2555
2556 #define __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SYSCFGSMEN)
2557
2558 #if defined(SDMMC1)
2559 #define __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SDMMC1SMEN)
2560 #endif /* SDMMC1 */
2561
2562 #define __HAL_RCC_TIM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM1SMEN)
2563
2564 #define __HAL_RCC_SPI1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SPI1SMEN)
2565
2566 #if defined(TIM8)
2567 #define __HAL_RCC_TIM8_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM8SMEN)
2568 #endif /* TIM8 */
2569
2570 #define __HAL_RCC_USART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_USART1SMEN)
2571
2572 #define __HAL_RCC_TIM15_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM15SMEN)
2573
2574 #define __HAL_RCC_TIM16_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM16SMEN)
2575
2576 #if defined(TIM17)
2577 #define __HAL_RCC_TIM17_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM17SMEN)
2578 #endif /* TIM17 */
2579
2580 #define __HAL_RCC_SAI1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI1SMEN)
2581
2582 #if defined(SAI2)
2583 #define __HAL_RCC_SAI2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI2SMEN)
2584 #endif /* SAI2 */
2585
2586 #if defined(DFSDM1_Filter0)
2587 #define __HAL_RCC_DFSDM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_DFSDM1SMEN)
2588 #endif /* DFSDM1_Filter0 */
2589
2590
2591 #define __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SYSCFGSMEN)
2592
2593 #if defined(SDMMC1)
2594 #define __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SDMMC1SMEN)
2595 #endif /* SDMMC1 */
2596
2597 #define __HAL_RCC_TIM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM1SMEN)
2598
2599 #define __HAL_RCC_SPI1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SPI1SMEN)
2600
2601 #if defined(TIM8)
2602 #define __HAL_RCC_TIM8_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM8SMEN)
2603 #endif /* TIM8 */
2604
2605 #define __HAL_RCC_USART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_USART1SMEN)
2606
2607 #define __HAL_RCC_TIM15_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM15SMEN)
2608
2609 #define __HAL_RCC_TIM16_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM16SMEN)
2610
2611 #if defined(TIM17)
2612 #define __HAL_RCC_TIM17_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM17SMEN)
2613 #endif /* TIM17 */
2614
2615 #define __HAL_RCC_SAI1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI1SMEN)
2616
2617 #if defined(SAI2)
2618 #define __HAL_RCC_SAI2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI2SMEN)
2619 #endif /* SAI2 */
2620
2621 #if defined(DFSDM1_Filter0)
2622 #define __HAL_RCC_DFSDM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_DFSDM1SMEN)
2623 #endif /* DFSDM1_Filter0 */
2624
2625 /**
2626 * @}
2627 */
2628
2629 /** @defgroup RCC_AHB1_Clock_Sleep_Enable_Disable_Status AHB1 Peripheral Clock Sleep Enabled or Disabled Status
2630 * @brief Check whether the AHB1 peripheral clock during Low Power (Sleep) mode is enabled or not.
2631 * @note Peripheral clock gating in SLEEP mode can be used to further reduce
2632 * power consumption.
2633 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
2634 * @note By default, all peripheral clocks are enabled during SLEEP mode.
2635 * @{
2636 */
2637
2638 #define __HAL_RCC_DMA1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA1SMEN) != RESET)
2639
2640 #define __HAL_RCC_DMA2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA2SMEN) != RESET)
2641
2642 #define __HAL_RCC_FLASH_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_FLASHSMEN) != RESET)
2643
2644 #define __HAL_RCC_SRAM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_SRAM1SMEN) != RESET)
2645
2646 #define __HAL_RCC_CRC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_CRCSMEN) != RESET)
2647
2648 #define __HAL_RCC_TSC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_TSCSMEN) != RESET)
2649
2650
2651 #define __HAL_RCC_DMA1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA1SMEN) == RESET)
2652
2653 #define __HAL_RCC_DMA2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA2SMEN) == RESET)
2654
2655 #define __HAL_RCC_FLASH_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_FLASHSMEN) == RESET)
2656
2657 #define __HAL_RCC_SRAM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_SRAM1SMEN) == RESET)
2658
2659 #define __HAL_RCC_CRC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_CRCSMEN) == RESET)
2660
2661 #define __HAL_RCC_TSC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_TSCSMEN) == RESET)
2662
2663 /**
2664 * @}
2665 */
2666
2667 /** @defgroup RCC_AHB2_Clock_Sleep_Enable_Disable_Status AHB2 Peripheral Clock Sleep Enabled or Disabled Status
2668 * @brief Check whether the AHB2 peripheral clock during Low Power (Sleep) mode is enabled or not.
2669 * @note Peripheral clock gating in SLEEP mode can be used to further reduce
2670 * power consumption.
2671 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
2672 * @note By default, all peripheral clocks are enabled during SLEEP mode.
2673 * @{
2674 */
2675
2676 #define __HAL_RCC_GPIOA_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOASMEN) != RESET)
2677
2678 #define __HAL_RCC_GPIOB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOBSMEN) != RESET)
2679
2680 #define __HAL_RCC_GPIOC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOCSMEN) != RESET)
2681
2682 #if defined(GPIOD)
2683 #define __HAL_RCC_GPIOD_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIODSMEN) != RESET)
2684 #endif /* GPIOD */
2685
2686 #if defined(GPIOE)
2687 #define __HAL_RCC_GPIOE_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOESMEN) != RESET)
2688 #endif /* GPIOE */
2689
2690 #if defined(GPIOF)
2691 #define __HAL_RCC_GPIOF_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOFSMEN) != RESET)
2692 #endif /* GPIOF */
2693
2694 #if defined(GPIOG)
2695 #define __HAL_RCC_GPIOG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOGSMEN) != RESET)
2696 #endif /* GPIOG */
2697
2698 #define __HAL_RCC_GPIOH_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOHSMEN) != RESET)
2699
2700 #define __HAL_RCC_SRAM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_SRAM2SMEN) != RESET)
2701
2702 #if defined(USB_OTG_FS)
2703 #define __HAL_RCC_USB_OTG_FS_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_OTGFSSMEN) != RESET)
2704 #endif /* USB_OTG_FS */
2705
2706 #define __HAL_RCC_ADC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_ADCSMEN) != RESET)
2707
2708 #if defined(AES)
2709 #define __HAL_RCC_AES_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_AESSMEN) != RESET)
2710 #endif /* AES */
2711
2712 #define __HAL_RCC_RNG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_RNGSMEN) != RESET)
2713
2714
2715 #define __HAL_RCC_GPIOA_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOASMEN) == RESET)
2716
2717 #define __HAL_RCC_GPIOB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOBSMEN) == RESET)
2718
2719 #define __HAL_RCC_GPIOC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOCSMEN) == RESET)
2720
2721 #if defined(GPIOD)
2722 #define __HAL_RCC_GPIOD_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIODSMEN) == RESET)
2723 #endif /* GPIOD */
2724
2725 #if defined(GPIOE)
2726 #define __HAL_RCC_GPIOE_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOESMEN) == RESET)
2727 #endif /* GPIOE */
2728
2729 #if defined(GPIOF)
2730 #define __HAL_RCC_GPIOF_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOFSMEN) == RESET)
2731 #endif /* GPIOF */
2732
2733 #if defined(GPIOG)
2734 #define __HAL_RCC_GPIOG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOGSMEN) == RESET)
2735 #endif /* GPIOG */
2736
2737 #define __HAL_RCC_GPIOH_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOHSMEN) == RESET)
2738
2739 #define __HAL_RCC_SRAM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_SRAM2SMEN) == RESET)
2740
2741 #if defined(USB_OTG_FS)
2742 #define __HAL_RCC_USB_OTG_FS_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_OTGFSSMEN) == RESET)
2743 #endif /* USB_OTG_FS */
2744
2745 #define __HAL_RCC_ADC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_ADCSMEN) == RESET)
2746
2747 #if defined(AES)
2748 #define __HAL_RCC_AES_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_AESSMEN) == RESET)
2749 #endif /* AES */
2750
2751 #define __HAL_RCC_RNG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_RNGSMEN) == RESET)
2752
2753 /**
2754 * @}
2755 */
2756
2757 /** @defgroup RCC_AHB3_Clock_Sleep_Enable_Disable_Status AHB3 Peripheral Clock Sleep Enabled or Disabled Status
2758 * @brief Check whether the AHB3 peripheral clock during Low Power (Sleep) mode is enabled or not.
2759 * @note Peripheral clock gating in SLEEP mode can be used to further reduce
2760 * power consumption.
2761 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
2762 * @note By default, all peripheral clocks are enabled during SLEEP mode.
2763 * @{
2764 */
2765
2766 #if defined(QUADSPI)
2767 #define __HAL_RCC_QSPI_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_QSPISMEN) != RESET)
2768 #endif /* QUADSPI */
2769
2770 #if defined(FMC_BANK1)
2771 #define __HAL_RCC_FMC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_FMCSMEN) != RESET)
2772 #endif /* FMC_BANK1 */
2773
2774 #if defined(QUADSPI)
2775 #define __HAL_RCC_QSPI_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_QSPISMEN) == RESET)
2776 #endif /* QUADSPI */
2777
2778 #if defined(FMC_BANK1)
2779 #define __HAL_RCC_FMC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_FMCSMEN) == RESET)
2780 #endif /* FMC_BANK1 */
2781
2782 /**
2783 * @}
2784 */
2785
2786 /** @defgroup RCC_APB1_Clock_Sleep_Enable_Disable_Status APB1 Peripheral Clock Sleep Enabled or Disabled Status
2787 * @brief Check whether the APB1 peripheral clock during Low Power (Sleep) mode is enabled or not.
2788 * @note Peripheral clock gating in SLEEP mode can be used to further reduce
2789 * power consumption.
2790 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
2791 * @note By default, all peripheral clocks are enabled during SLEEP mode.
2792 * @{
2793 */
2794
2795 #define __HAL_RCC_TIM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM2SMEN) != RESET)
2796
2797 #if defined(TIM3)
2798 #define __HAL_RCC_TIM3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM3SMEN) != RESET)
2799 #endif /* TIM3 */
2800
2801 #if defined(TIM4)
2802 #define __HAL_RCC_TIM4_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM4SMEN) != RESET)
2803 #endif /* TIM4 */
2804
2805 #if defined(TIM5)
2806 #define __HAL_RCC_TIM5_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM5SMEN) != RESET)
2807 #endif /* TIM5 */
2808
2809 #define __HAL_RCC_TIM6_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM6SMEN) != RESET)
2810
2811 #define __HAL_RCC_TIM7_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM7SMEN) != RESET)
2812
2813 #if defined(LCD)
2814 #define __HAL_RCC_LCD_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LCDSMEN) != RESET)
2815 #endif /* LCD */
2816
2817 #if defined(RCC_APB1SMENR1_RTCAPBSMEN)
2818 #define __HAL_RCC_RTCAPB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_RTCAPBSMEN) != RESET)
2819 #endif /* RCC_APB1SMENR1_RTCAPBSMEN */
2820
2821 #define __HAL_RCC_WWDG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_WWDGSMEN) != RESET)
2822
2823 #if defined(SPI2)
2824 #define __HAL_RCC_SPI2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI2SMEN) != RESET)
2825 #endif /* SPI2 */
2826
2827 #define __HAL_RCC_SPI3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI3SMEN) != RESET)
2828
2829 #define __HAL_RCC_USART2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART2SMEN) != RESET)
2830
2831 #if defined(USART3)
2832 #define __HAL_RCC_USART3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART3SMEN) != RESET)
2833 #endif /* USART3 */
2834
2835 #if defined(UART4)
2836 #define __HAL_RCC_UART4_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART4SMEN) != RESET)
2837 #endif /* UART4 */
2838
2839 #if defined(UART5)
2840 #define __HAL_RCC_UART5_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART5SMEN) != RESET)
2841 #endif /* UART5 */
2842
2843 #define __HAL_RCC_I2C1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C1SMEN) != RESET)
2844
2845 #if defined(I2C2)
2846 #define __HAL_RCC_I2C2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C2SMEN) != RESET)
2847 #endif /* I2C2 */
2848
2849 #define __HAL_RCC_I2C3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C3SMEN) != RESET)
2850
2851 #if defined(I2C4)
2852 #define __HAL_RCC_I2C4_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_I2C4SMEN) != RESET)
2853 #endif /* I2C4 */
2854
2855 #if defined(CRS)
2856 #define __HAL_RCC_CRS_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CRSSMEN) != RESET)
2857 #endif /* CRS */
2858
2859 #define __HAL_RCC_CAN1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CAN1SMEN) != RESET)
2860
2861 #if defined(USB)
2862 #define __HAL_RCC_USB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USBFSSMEN) != RESET)
2863 #endif /* USB */
2864
2865 #define __HAL_RCC_PWR_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_PWRSMEN) != RESET)
2866
2867 #define __HAL_RCC_DAC1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_DAC1SMEN) != RESET)
2868
2869 #define __HAL_RCC_OPAMP_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_OPAMPSMEN) != RESET)
2870
2871 #define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LPTIM1SMEN) != RESET)
2872
2873 #define __HAL_RCC_LPUART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPUART1SMEN) != RESET)
2874
2875 #if defined(SWPMI1)
2876 #define __HAL_RCC_SWPMI1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_SWPMI1SMEN) != RESET)
2877 #endif /* SWPMI1 */
2878
2879 #define __HAL_RCC_LPTIM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPTIM2SMEN) != RESET)
2880
2881
2882 #define __HAL_RCC_TIM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM2SMEN) == RESET)
2883
2884 #if defined(TIM3)
2885 #define __HAL_RCC_TIM3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM3SMEN) == RESET)
2886 #endif /* TIM3 */
2887
2888 #if defined(TIM4)
2889 #define __HAL_RCC_TIM4_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM4SMEN) == RESET)
2890 #endif /* TIM4 */
2891
2892 #if defined(TIM5)
2893 #define __HAL_RCC_TIM5_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM5SMEN) == RESET)
2894 #endif /* TIM5 */
2895
2896 #define __HAL_RCC_TIM6_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM6SMEN) == RESET)
2897
2898 #define __HAL_RCC_TIM7_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM7SMEN) == RESET)
2899
2900 #if defined(LCD)
2901 #define __HAL_RCC_LCD_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LCDSMEN) == RESET)
2902 #endif /* LCD */
2903
2904 #if defined(RCC_APB1SMENR1_RTCAPBSMEN)
2905 #define __HAL_RCC_RTCAPB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_RTCAPBSMEN) == RESET)
2906 #endif /* RCC_APB1SMENR1_RTCAPBSMEN */
2907
2908 #define __HAL_RCC_WWDG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_WWDGSMEN) == RESET)
2909
2910 #if defined(SPI2)
2911 #define __HAL_RCC_SPI2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI2SMEN) == RESET)
2912 #endif /* SPI2 */
2913
2914 #define __HAL_RCC_SPI3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI3SMEN) == RESET)
2915
2916 #define __HAL_RCC_USART2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART2SMEN) == RESET)
2917
2918 #if defined(USART3)
2919 #define __HAL_RCC_USART3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART3SMEN) == RESET)
2920 #endif /* USART3 */
2921
2922 #if defined(UART4)
2923 #define __HAL_RCC_UART4_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART4SMEN) == RESET)
2924 #endif /* UART4 */
2925
2926 #if defined(UART5)
2927 #define __HAL_RCC_UART5_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART5SMEN) == RESET)
2928 #endif /* UART5 */
2929
2930 #define __HAL_RCC_I2C1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C1SMEN) == RESET)
2931
2932 #if defined(I2C2)
2933 #define __HAL_RCC_I2C2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C2SMEN) == RESET)
2934 #endif /* I2C2 */
2935
2936 #define __HAL_RCC_I2C3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C3SMEN) == RESET)
2937
2938 #if defined(I2C4)
2939 #define __HAL_RCC_I2C4_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_I2C4SMEN) == RESET)
2940 #endif /* I2C4 */
2941
2942 #if defined(CRS)
2943 #define __HAL_RCC_CRS_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CRSSMEN) == RESET)
2944 #endif /* CRS */
2945
2946 #define __HAL_RCC_CAN1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CAN1SMEN) == RESET)
2947
2948 #if defined(USB)
2949 #define __HAL_RCC_USB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USBFSSMEN) == RESET)
2950 #endif /* USB */
2951
2952 #define __HAL_RCC_PWR_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_PWRSMEN) == RESET)
2953
2954 #define __HAL_RCC_DAC1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_DAC1SMEN) == RESET)
2955
2956 #define __HAL_RCC_OPAMP_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_OPAMPSMEN) == RESET)
2957
2958 #define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LPTIM1SMEN) == RESET)
2959
2960 #define __HAL_RCC_LPUART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPUART1SMEN) == RESET)
2961
2962 #if defined(SWPMI1)
2963 #define __HAL_RCC_SWPMI1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_SWPMI1SMEN) == RESET)
2964 #endif /* SWPMI1 */
2965
2966 #define __HAL_RCC_LPTIM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPTIM2SMEN) == RESET)
2967
2968 /**
2969 * @}
2970 */
2971
2972 /** @defgroup RCC_APB2_Clock_Sleep_Enable_Disable_Status APB2 Peripheral Clock Sleep Enabled or Disabled Status
2973 * @brief Check whether the APB2 peripheral clock during Low Power (Sleep) mode is enabled or not.
2974 * @note Peripheral clock gating in SLEEP mode can be used to further reduce
2975 * power consumption.
2976 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
2977 * @note By default, all peripheral clocks are enabled during SLEEP mode.
2978 * @{
2979 */
2980
2981 #define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SYSCFGSMEN) != RESET)
2982
2983 #if defined(SDMMC1)
2984 #define __HAL_RCC_SDMMC1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SDMMC1SMEN) != RESET)
2985 #endif /* SDMMC1 */
2986
2987 #define __HAL_RCC_TIM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM1SMEN) != RESET)
2988
2989 #define __HAL_RCC_SPI1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SPI1SMEN) != RESET)
2990
2991 #if defined(TIM8)
2992 #define __HAL_RCC_TIM8_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM8SMEN) != RESET)
2993 #endif /* TIM8 */
2994
2995 #define __HAL_RCC_USART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_USART1SMEN) != RESET)
2996
2997 #define __HAL_RCC_TIM15_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM15SMEN) != RESET)
2998
2999 #define __HAL_RCC_TIM16_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM16SMEN) != RESET)
3000
3001 #if defined(TIM17)
3002 #define __HAL_RCC_TIM17_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM17SMEN) != RESET)
3003 #endif /* TIM17 */
3004
3005 #define __HAL_RCC_SAI1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI1SMEN) != RESET)
3006
3007 #if defined(SAI2)
3008 #define __HAL_RCC_SAI2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI2SMEN) != RESET)
3009 #endif /* SAI2 */
3010
3011 #if defined(DFSDM1_Filter0)
3012 #define __HAL_RCC_DFSDM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_DFSDM1SMEN) != RESET)
3013 #endif /* DFSDM1_Filter0 */
3014
3015
3016 #define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SYSCFGSMEN) == RESET)
3017
3018 #if defined(SDMMC1)
3019 #define __HAL_RCC_SDMMC1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SDMMC1SMEN) == RESET)
3020 #endif /* SDMMC1 */
3021
3022 #define __HAL_RCC_TIM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM1SMEN) == RESET)
3023
3024 #define __HAL_RCC_SPI1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SPI1SMEN) == RESET)
3025
3026 #if defined(TIM8)
3027 #define __HAL_RCC_TIM8_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM8SMEN) == RESET)
3028 #endif /* TIM8 */
3029
3030 #define __HAL_RCC_USART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_USART1SMEN) == RESET)
3031
3032 #define __HAL_RCC_TIM15_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM15SMEN) == RESET)
3033
3034 #define __HAL_RCC_TIM16_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM16SMEN) == RESET)
3035
3036 #if defined(TIM17)
3037 #define __HAL_RCC_TIM17_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM17SMEN) == RESET)
3038 #endif /* TIM17 */
3039
3040 #define __HAL_RCC_SAI1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI1SMEN) == RESET)
3041
3042 #if defined(SAI2)
3043 #define __HAL_RCC_SAI2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI2SMEN) == RESET)
3044 #endif /* SAI2 */
3045
3046 #if defined(DFSDM1_Filter0)
3047 #define __HAL_RCC_DFSDM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_DFSDM1SMEN) == RESET)
3048 #endif /* DFSDM1_Filter0 */
3049
3050 /**
3051 * @}
3052 */
3053
3054 /** @defgroup RCC_Backup_Domain_Reset RCC Backup Domain Reset
3055 * @{
3056 */
3057
3058 /** @brief Macros to force or release the Backup domain reset.
3059 * @note This function resets the RTC peripheral (including the backup registers)
3060 * and the RTC clock source selection in RCC_CSR register.
3061 * @note The BKPSRAM is not affected by this reset.
3062 * @retval None
3063 */
3064 #define __HAL_RCC_BACKUPRESET_FORCE() SET_BIT(RCC->BDCR, RCC_BDCR_BDRST)
3065
3066 #define __HAL_RCC_BACKUPRESET_RELEASE() CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST)
3067
3068 /**
3069 * @}
3070 */
3071
3072 /** @defgroup RCC_RTC_Clock_Configuration RCC RTC Clock Configuration
3073 * @{
3074 */
3075
3076 /** @brief Macros to enable or disable the RTC clock.
3077 * @note As the RTC is in the Backup domain and write access is denied to
3078 * this domain after reset, you have to enable write access using
3079 * HAL_PWR_EnableBkUpAccess() function before to configure the RTC
3080 * (to be done once after reset).
3081 * @note These macros must be used after the RTC clock source was selected.
3082 * @retval None
3083 */
3084 #define __HAL_RCC_RTC_ENABLE() SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN)
3085
3086 #define __HAL_RCC_RTC_DISABLE() CLEAR_BIT(RCC->BDCR, RCC_BDCR_RTCEN)
3087
3088 /**
3089 * @}
3090 */
3091
3092 /** @brief Macros to enable or disable the Internal High Speed 16MHz oscillator (HSI).
3093 * @note The HSI is stopped by hardware when entering STOP and STANDBY modes.
3094 * It is used (enabled by hardware) as system clock source after startup
3095 * from Reset, wakeup from STOP and STANDBY mode, or in case of failure
3096 * of the HSE used directly or indirectly as system clock (if the Clock
3097 * Security System CSS is enabled).
3098 * @note HSI can not be stopped if it is used as system clock source. In this case,
3099 * you have to select another source of the system clock then stop the HSI.
3100 * @note After enabling the HSI, the application software should wait on HSIRDY
3101 * flag to be set indicating that HSI clock is stable and can be used as
3102 * system clock source.
3103 * This parameter can be: ENABLE or DISABLE.
3104 * @note When the HSI is stopped, HSIRDY flag goes low after 6 HSI oscillator
3105 * clock cycles.
3106 * @retval None
3107 */
3108 #define __HAL_RCC_HSI_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSION)
3109
3110 #define __HAL_RCC_HSI_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSION)
3111
3112 /** @brief Macro to adjust the Internal High Speed 16MHz oscillator (HSI) calibration value.
3113 * @note The calibration is used to compensate for the variations in voltage
3114 * and temperature that influence the frequency of the internal HSI RC.
3115 * @param __HSICALIBRATIONVALUE__: specifies the calibration trimming value
3116 * (default is RCC_HSICALIBRATION_DEFAULT).
3117 * This parameter must be a number between 0 and 0x1F (STM32L43x/STM32L44x/STM32L47x/STM32L48x) or 0x7F (for other devices).
3118 * @retval None
3119 */
3120 #define __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(__HSICALIBRATIONVALUE__) \
3121 MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSITRIM, (uint32_t)(__HSICALIBRATIONVALUE__) << POSITION_VAL(RCC_ICSCR_HSITRIM))
3122
3123 /**
3124 * @brief Macros to enable or disable the wakeup the Internal High Speed oscillator (HSI)
3125 * in parallel to the Internal Multi Speed oscillator (MSI) used at system wakeup.
3126 * @note The enable of this function has not effect on the HSION bit.
3127 * This parameter can be: ENABLE or DISABLE.
3128 * @retval None
3129 */
3130 #define __HAL_RCC_HSIAUTOMATIC_START_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSIASFS)
3131
3132 #define __HAL_RCC_HSIAUTOMATIC_START_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSIASFS)
3133
3134 /**
3135 * @brief Macros to enable or disable the force of the Internal High Speed oscillator (HSI)
3136 * in STOP mode to be quickly available as kernel clock for USARTs and I2Cs.
3137 * @note Keeping the HSI ON in STOP mode allows to avoid slowing down the communication
3138 * speed because of the HSI startup time.
3139 * @note The enable of this function has not effect on the HSION bit.
3140 * This parameter can be: ENABLE or DISABLE.
3141 * @retval None
3142 */
3143 #define __HAL_RCC_HSISTOP_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSIKERON)
3144
3145 #define __HAL_RCC_HSISTOP_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSIKERON)
3146
3147 /**
3148 * @brief Macros to enable or disable the Internal Multi Speed oscillator (MSI).
3149 * @note The MSI is stopped by hardware when entering STOP and STANDBY modes.
3150 * It is used (enabled by hardware) as system clock source after
3151 * startup from Reset, wakeup from STOP and STANDBY mode, or in case
3152 * of failure of the HSE used directly or indirectly as system clock
3153 * (if the Clock Security System CSS is enabled).
3154 * @note MSI can not be stopped if it is used as system clock source.
3155 * In this case, you have to select another source of the system
3156 * clock then stop the MSI.
3157 * @note After enabling the MSI, the application software should wait on
3158 * MSIRDY flag to be set indicating that MSI clock is stable and can
3159 * be used as system clock source.
3160 * @note When the MSI is stopped, MSIRDY flag goes low after 6 MSI oscillator
3161 * clock cycles.
3162 * @retval None
3163 */
3164 #define __HAL_RCC_MSI_ENABLE() SET_BIT(RCC->CR, RCC_CR_MSION)
3165
3166 #define __HAL_RCC_MSI_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_MSION)
3167
3168 /** @brief Macro Adjusts the Internal Multi Speed oscillator (MSI) calibration value.
3169 * @note The calibration is used to compensate for the variations in voltage
3170 * and temperature that influence the frequency of the internal MSI RC.
3171 * Refer to the Application Note AN3300 for more details on how to
3172 * calibrate the MSI.
3173 * @param __MSICALIBRATIONVALUE__: specifies the calibration trimming value
3174 * (default is RCC_MSICALIBRATION_DEFAULT).
3175 * This parameter must be a number between 0 and 255.
3176 * @retval None
3177 */
3178 #define __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(__MSICALIBRATIONVALUE__) \
3179 MODIFY_REG(RCC->ICSCR, RCC_ICSCR_MSITRIM, (uint32_t)(__MSICALIBRATIONVALUE__) << 8)
3180
3181 /**
3182 * @brief Macro configures the Internal Multi Speed oscillator (MSI) clock range in run mode
3183 * @note After restart from Reset , the MSI clock is around 4 MHz.
3184 * After stop the startup clock can be MSI (at any of its possible
3185 * frequencies, the one that was used before entering stop mode) or HSI.
3186 * After Standby its frequency can be selected between 4 possible values
3187 * (1, 2, 4 or 8 MHz).
3188 * @note MSIRANGE can be modified when MSI is OFF (MSION=0) or when MSI is ready
3189 * (MSIRDY=1).
3190 * @note The MSI clock range after reset can be modified on the fly.
3191 * @param __MSIRANGEVALUE__: specifies the MSI clock range.
3192 * This parameter must be one of the following values:
3193 * @arg @ref RCC_MSIRANGE_0 MSI clock is around 100 KHz
3194 * @arg @ref RCC_MSIRANGE_1 MSI clock is around 200 KHz
3195 * @arg @ref RCC_MSIRANGE_2 MSI clock is around 400 KHz
3196 * @arg @ref RCC_MSIRANGE_3 MSI clock is around 800 KHz
3197 * @arg @ref RCC_MSIRANGE_4 MSI clock is around 1 MHz
3198 * @arg @ref RCC_MSIRANGE_5 MSI clock is around 2 MHz
3199 * @arg @ref RCC_MSIRANGE_6 MSI clock is around 4 MHz (default after Reset)
3200 * @arg @ref RCC_MSIRANGE_7 MSI clock is around 8 MHz
3201 * @arg @ref RCC_MSIRANGE_8 MSI clock is around 16 MHz
3202 * @arg @ref RCC_MSIRANGE_9 MSI clock is around 24 MHz
3203 * @arg @ref RCC_MSIRANGE_10 MSI clock is around 32 MHz
3204 * @arg @ref RCC_MSIRANGE_11 MSI clock is around 48 MHz
3205 * @retval None
3206 */
3207 #define __HAL_RCC_MSI_RANGE_CONFIG(__MSIRANGEVALUE__) \
3208 do { \
3209 SET_BIT(RCC->CR, RCC_CR_MSIRGSEL); \
3210 MODIFY_REG(RCC->CR, RCC_CR_MSIRANGE, (__MSIRANGEVALUE__)); \
3211 } while(0)
3212
3213 /**
3214 * @brief Macro configures the Internal Multi Speed oscillator (MSI) clock range after Standby mode
3215 * After Standby its frequency can be selected between 4 possible values (1, 2, 4 or 8 MHz).
3216 * @param __MSIRANGEVALUE__: specifies the MSI clock range.
3217 * This parameter must be one of the following values:
3218 * @arg @ref RCC_MSIRANGE_4 MSI clock is around 1 MHz
3219 * @arg @ref RCC_MSIRANGE_5 MSI clock is around 2 MHz
3220 * @arg @ref RCC_MSIRANGE_6 MSI clock is around 4 MHz (default after Reset)
3221 * @arg @ref RCC_MSIRANGE_7 MSI clock is around 8 MHz
3222 * @retval None
3223 */
3224 #define __HAL_RCC_MSI_STANDBY_RANGE_CONFIG(__MSIRANGEVALUE__) \
3225 MODIFY_REG(RCC->CSR, RCC_CSR_MSISRANGE, (__MSIRANGEVALUE__) << 4U)
3226
3227 /** @brief Macro to get the Internal Multi Speed oscillator (MSI) clock range in run mode
3228 * @retval MSI clock range.
3229 * This parameter must be one of the following values:
3230 * @arg @ref RCC_MSIRANGE_0 MSI clock is around 100 KHz
3231 * @arg @ref RCC_MSIRANGE_1 MSI clock is around 200 KHz
3232 * @arg @ref RCC_MSIRANGE_2 MSI clock is around 400 KHz
3233 * @arg @ref RCC_MSIRANGE_3 MSI clock is around 800 KHz
3234 * @arg @ref RCC_MSIRANGE_4 MSI clock is around 1 MHz
3235 * @arg @ref RCC_MSIRANGE_5 MSI clock is around 2 MHz
3236 * @arg @ref RCC_MSIRANGE_6 MSI clock is around 4 MHz (default after Reset)
3237 * @arg @ref RCC_MSIRANGE_7 MSI clock is around 8 MHz
3238 * @arg @ref RCC_MSIRANGE_8 MSI clock is around 16 MHz
3239 * @arg @ref RCC_MSIRANGE_9 MSI clock is around 24 MHz
3240 * @arg @ref RCC_MSIRANGE_10 MSI clock is around 32 MHz
3241 * @arg @ref RCC_MSIRANGE_11 MSI clock is around 48 MHz
3242 */
3243 #define __HAL_RCC_GET_MSI_RANGE() \
3244 ((READ_BIT(RCC->CR, RCC_CR_MSIRGSEL) != RESET) ? \
3245 (uint32_t)(READ_BIT(RCC->CR, RCC_CR_MSIRANGE)) : \
3246 (uint32_t)(READ_BIT(RCC->CSR, RCC_CSR_MSISRANGE) >> 4))
3247
3248 /** @brief Macros to enable or disable the Internal Low Speed oscillator (LSI).
3249 * @note After enabling the LSI, the application software should wait on
3250 * LSIRDY flag to be set indicating that LSI clock is stable and can
3251 * be used to clock the IWDG and/or the RTC.
3252 * @note LSI can not be disabled if the IWDG is running.
3253 * @note When the LSI is stopped, LSIRDY flag goes low after 6 LSI oscillator
3254 * clock cycles.
3255 * @retval None
3256 */
3257 #define __HAL_RCC_LSI_ENABLE() SET_BIT(RCC->CSR, RCC_CSR_LSION)
3258
3259 #define __HAL_RCC_LSI_DISABLE() CLEAR_BIT(RCC->CSR, RCC_CSR_LSION)
3260
3261 /**
3262 * @brief Macro to configure the External High Speed oscillator (HSE).
3263 * @note Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not
3264 * supported by this macro. User should request a transition to HSE Off
3265 * first and then HSE On or HSE Bypass.
3266 * @note After enabling the HSE (RCC_HSE_ON or RCC_HSE_Bypass), the application
3267 * software should wait on HSERDY flag to be set indicating that HSE clock
3268 * is stable and can be used to clock the PLL and/or system clock.
3269 * @note HSE state can not be changed if it is used directly or through the
3270 * PLL as system clock. In this case, you have to select another source
3271 * of the system clock then change the HSE state (ex. disable it).
3272 * @note The HSE is stopped by hardware when entering STOP and STANDBY modes.
3273 * @note This function reset the CSSON bit, so if the clock security system(CSS)
3274 * was previously enabled you have to enable it again after calling this
3275 * function.
3276 * @param __STATE__: specifies the new state of the HSE.
3277 * This parameter can be one of the following values:
3278 * @arg @ref RCC_HSE_OFF Turn OFF the HSE oscillator, HSERDY flag goes low after
3279 * 6 HSE oscillator clock cycles.
3280 * @arg @ref RCC_HSE_ON Turn ON the HSE oscillator.
3281 * @arg @ref RCC_HSE_BYPASS HSE oscillator bypassed with external clock.
3282 * @retval None
3283 */
3284 #define __HAL_RCC_HSE_CONFIG(__STATE__) \
3285 do { \
3286 if((__STATE__) == RCC_HSE_ON) \
3287 { \
3288 SET_BIT(RCC->CR, RCC_CR_HSEON); \
3289 } \
3290 else if((__STATE__) == RCC_HSE_BYPASS) \
3291 { \
3292 SET_BIT(RCC->CR, RCC_CR_HSEBYP); \
3293 SET_BIT(RCC->CR, RCC_CR_HSEON); \
3294 } \
3295 else \
3296 { \
3297 CLEAR_BIT(RCC->CR, RCC_CR_HSEON); \
3298 CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); \
3299 } \
3300 } while(0)
3301
3302 /**
3303 * @brief Macro to configure the External Low Speed oscillator (LSE).
3304 * @note Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not
3305 * supported by this macro. User should request a transition to LSE Off
3306 * first and then LSE On or LSE Bypass.
3307 * @note As the LSE is in the Backup domain and write access is denied to
3308 * this domain after reset, you have to enable write access using
3309 * HAL_PWR_EnableBkUpAccess() function before to configure the LSE
3310 * (to be done once after reset).
3311 * @note After enabling the LSE (RCC_LSE_ON or RCC_LSE_BYPASS), the application
3312 * software should wait on LSERDY flag to be set indicating that LSE clock
3313 * is stable and can be used to clock the RTC.
3314 * @param __STATE__: specifies the new state of the LSE.
3315 * This parameter can be one of the following values:
3316 * @arg @ref RCC_LSE_OFF Turn OFF the LSE oscillator, LSERDY flag goes low after
3317 * 6 LSE oscillator clock cycles.
3318 * @arg @ref RCC_LSE_ON Turn ON the LSE oscillator.
3319 * @arg @ref RCC_LSE_BYPASS LSE oscillator bypassed with external clock.
3320 * @retval None
3321 */
3322 #define __HAL_RCC_LSE_CONFIG(__STATE__) \
3323 do { \
3324 if((__STATE__) == RCC_LSE_ON) \
3325 { \
3326 SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); \
3327 } \
3328 else if((__STATE__) == RCC_LSE_BYPASS) \
3329 { \
3330 SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \
3331 SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); \
3332 } \
3333 else \
3334 { \
3335 CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); \
3336 CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \
3337 } \
3338 } while(0)
3339
3340 #if defined(RCC_HSI48_SUPPORT)
3341
3342 /** @brief Macros to enable or disable the Internal High Speed 48MHz oscillator (HSI48).
3343 * @note The HSI48 is stopped by hardware when entering STOP and STANDBY modes.
3344 * @note After enabling the HSI48, the application software should wait on HSI48RDY
3345 * flag to be set indicating that HSI48 clock is stable.
3346 * This parameter can be: ENABLE or DISABLE.
3347 * @retval None
3348 */
3349 #define __HAL_RCC_HSI48_ENABLE() SET_BIT(RCC->CRRCR, RCC_CRRCR_HSI48ON)
3350
3351 #define __HAL_RCC_HSI48_DISABLE() CLEAR_BIT(RCC->CRRCR, RCC_CRRCR_HSI48ON)
3352
3353 #endif /* RCC_HSI48_SUPPORT */
3354
3355 /** @brief Macros to configure the RTC clock (RTCCLK).
3356 * @note As the RTC clock configuration bits are in the Backup domain and write
3357 * access is denied to this domain after reset, you have to enable write
3358 * access using the Power Backup Access macro before to configure
3359 * the RTC clock source (to be done once after reset).
3360 * @note Once the RTC clock is configured it cannot be changed unless the
3361 * Backup domain is reset using __HAL_RCC_BACKUPRESET_FORCE() macro, or by
3362 * a Power On Reset (POR).
3363 *
3364 * @param __RTC_CLKSOURCE__: specifies the RTC clock source.
3365 * This parameter can be one of the following values:
3366 * @arg @ref RCC_RTCCLKSOURCE_NO_CLK No clock selected as RTC clock.
3367 * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as RTC clock.
3368 * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as RTC clock.
3369 * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV32 HSE clock divided by 32 selected
3370 *
3371 * @note If the LSE or LSI is used as RTC clock source, the RTC continues to
3372 * work in STOP and STANDBY modes, and can be used as wakeup source.
3373 * However, when the HSE clock is used as RTC clock source, the RTC
3374 * cannot be used in STOP and STANDBY modes.
3375 * @note The maximum input clock frequency for RTC is 1MHz (when using HSE as
3376 * RTC clock source).
3377 * @retval None
3378 */
3379 #define __HAL_RCC_RTC_CONFIG(__RTC_CLKSOURCE__) \
3380 MODIFY_REG( RCC->BDCR, RCC_BDCR_RTCSEL, (__RTC_CLKSOURCE__))
3381
3382
3383 /** @brief Macro to get the RTC clock source.
3384 * @retval The returned value can be one of the following:
3385 * @arg @ref RCC_RTCCLKSOURCE_NO_CLK No clock selected as RTC clock.
3386 * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as RTC clock.
3387 * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as RTC clock.
3388 * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV32 HSE clock divided by 32 selected
3389 */
3390 #define __HAL_RCC_GET_RTC_SOURCE() ((uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL)))
3391
3392 /** @brief Macros to enable or disable the main PLL.
3393 * @note After enabling the main PLL, the application software should wait on
3394 * PLLRDY flag to be set indicating that PLL clock is stable and can
3395 * be used as system clock source.
3396 * @note The main PLL can not be disabled if it is used as system clock source
3397 * @note The main PLL is disabled by hardware when entering STOP and STANDBY modes.
3398 * @retval None
3399 */
3400 #define __HAL_RCC_PLL_ENABLE() SET_BIT(RCC->CR, RCC_CR_PLLON)
3401
3402 #define __HAL_RCC_PLL_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_PLLON)
3403
3404 /** @brief Macro to configure the PLL clock source.
3405 * @note This function must be used only when the main PLL is disabled.
3406 * @param __PLLSOURCE__: specifies the PLL entry clock source.
3407 * This parameter can be one of the following values:
3408 * @arg @ref RCC_PLLSOURCE_NONE No clock selected as PLL clock entry
3409 * @arg @ref RCC_PLLSOURCE_MSI MSI oscillator clock selected as PLL clock entry
3410 * @arg @ref RCC_PLLSOURCE_HSI HSI oscillator clock selected as PLL clock entry
3411 * @arg @ref RCC_PLLSOURCE_HSE HSE oscillator clock selected as PLL clock entry
3412 * @note This clock source is common for the main PLL and audio PLL (PLLSAI1 and PLLSAI2).
3413 * @retval None
3414 *
3415 */
3416 #define __HAL_RCC_PLL_PLLSOURCE_CONFIG(__PLLSOURCE__) \
3417 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, (__PLLSOURCE__))
3418
3419 /** @brief Macro to configure the PLL source division factor M.
3420 * @note This function must be used only when the main PLL is disabled.
3421 * @param __PLLM__: specifies the division factor for PLL VCO input clock
3422 * This parameter must be a number between Min_Data = 1 and Max_Data = 8.
3423 * @note You have to set the PLLM parameter correctly to ensure that the VCO input
3424 * frequency ranges from 4 to 16 MHz. It is recommended to select a frequency
3425 * of 16 MHz to limit PLL jitter.
3426 * @retval None
3427 *
3428 */
3429 #define __HAL_RCC_PLL_PLLM_CONFIG(__PLLM__) \
3430 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLM, ((__PLLM__) - 1) << 4U)
3431
3432 /**
3433 * @brief Macro to configure the main PLL clock source, multiplication and division factors.
3434 * @note This function must be used only when the main PLL is disabled.
3435 *
3436 * @param __PLLSOURCE__: specifies the PLL entry clock source.
3437 * This parameter can be one of the following values:
3438 * @arg @ref RCC_PLLSOURCE_NONE No clock selected as PLL clock entry
3439 * @arg @ref RCC_PLLSOURCE_MSI MSI oscillator clock selected as PLL clock entry
3440 * @arg @ref RCC_PLLSOURCE_HSI HSI oscillator clock selected as PLL clock entry
3441 * @arg @ref RCC_PLLSOURCE_HSE HSE oscillator clock selected as PLL clock entry
3442 * @note This clock source is common for the main PLL and audio PLL (PLLSAI1 and PLLSAI2).
3443 *
3444 * @param __PLLM__: specifies the division factor for PLL VCO input clock.
3445 * This parameter must be a number between 1 and 8.
3446 * @note You have to set the PLLM parameter correctly to ensure that the VCO input
3447 * frequency ranges from 4 to 16 MHz. It is recommended to select a frequency
3448 * of 16 MHz to limit PLL jitter.
3449 *
3450 * @param __PLLN__: specifies the multiplication factor for PLL VCO output clock.
3451 * This parameter must be a number between 8 and 86.
3452 * @note You have to set the PLLN parameter correctly to ensure that the VCO
3453 * output frequency is between 64 and 344 MHz.
3454 *
3455 * @param __PLLP__: specifies the division factor for SAI clock.
3456 * This parameter must be a number in the range (7 or 17) for STM32L47x/STM32L48x
3457 * else (2 to 31).
3458 *
3459 * @param __PLLQ__: specifies the division factor for OTG FS, SDMMC1 and RNG clocks.
3460 * This parameter must be in the range (2, 4, 6 or 8).
3461 * @note If the USB OTG FS is used in your application, you have to set the
3462 * PLLQ parameter correctly to have 48 MHz clock for the USB. However,
3463 * the SDMMC1 and RNG need a frequency lower than or equal to 48 MHz to work
3464 * correctly.
3465 * @param __PLLR__: specifies the division factor for the main system clock.
3466 * @note You have to set the PLLR parameter correctly to not exceed 80MHZ.
3467 * This parameter must be in the range (2, 4, 6 or 8).
3468 * @retval None
3469 */
3470 #if defined(RCC_PLLP_DIV_2_31_SUPPORT)
3471
3472 #define __HAL_RCC_PLL_CONFIG(__PLLSOURCE__, __PLLM__, __PLLN__, __PLLP__, __PLLQ__,__PLLR__ ) \
3473 (RCC->PLLCFGR = (uint32_t)(((__PLLM__) - 1U) << 4U) | (uint32_t)((__PLLN__) << 8U) | \
3474 (uint32_t)(__PLLSOURCE__) | (uint32_t)((((__PLLQ__) >> 1U) - 1U) << 21U) | (uint32_t)((((__PLLR__) >> 1U) - 1U) << 25U) | \
3475 (uint32_t)((__PLLP__) << 27U))
3476
3477 #else
3478
3479 #define __HAL_RCC_PLL_CONFIG(__PLLSOURCE__, __PLLM__, __PLLN__, __PLLP__, __PLLQ__,__PLLR__ ) \
3480 (RCC->PLLCFGR = (uint32_t)(((__PLLM__) - 1U) << 4U) | (uint32_t)((__PLLN__) << 8U) | (uint32_t)(((__PLLP__) >> 4U ) << 17U) | \
3481 (uint32_t)(__PLLSOURCE__) | (uint32_t)((((__PLLQ__) >> 1U) - 1U) << 21U) | (uint32_t)((((__PLLR__) >> 1U) - 1U) << 25U))
3482
3483 #endif /* RCC_PLLP_DIV_2_31_SUPPORT */
3484
3485 /** @brief Macro to get the oscillator used as PLL clock source.
3486 * @retval The oscillator used as PLL clock source. The returned value can be one
3487 * of the following:
3488 * - RCC_PLLSOURCE_NONE: No oscillator is used as PLL clock source.
3489 * - RCC_PLLSOURCE_MSI: MSI oscillator is used as PLL clock source.
3490 * - RCC_PLLSOURCE_HSI: HSI oscillator is used as PLL clock source.
3491 * - RCC_PLLSOURCE_HSE: HSE oscillator is used as PLL clock source.
3492 */
3493 #define __HAL_RCC_GET_PLL_OSCSOURCE() ((uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC))
3494
3495 /**
3496 * @brief Enable or disable each clock output (RCC_PLL_SYSCLK, RCC_PLL_48M1CLK, RCC_PLL_SAI3CLK)
3497 * @note Enabling/disabling clock outputs RCC_PLL_SAI3CLK and RCC_PLL_48M1CLK can be done at anytime
3498 * without the need to stop the PLL in order to save power. But RCC_PLL_SYSCLK cannot
3499 * be stopped if used as System Clock.
3500 * @param __PLLCLOCKOUT__: specifies the PLL clock to be output.
3501 * This parameter can be one or a combination of the following values:
3502 * @arg @ref RCC_PLL_SAI3CLK This clock is used to generate an accurate clock to achieve
3503 * high-quality audio performance on SAI interface in case.
3504 * @arg @ref RCC_PLL_48M1CLK This Clock is used to generate the clock for the USB OTG FS (48 MHz),
3505 * the random analog generator (<=48 MHz) and the SDMMC1 (<= 48 MHz).
3506 * @arg @ref RCC_PLL_SYSCLK This Clock is used to generate the high speed system clock (up to 80MHz)
3507 * @retval None
3508 */
3509 #define __HAL_RCC_PLLCLKOUT_ENABLE(__PLLCLOCKOUT__) SET_BIT(RCC->PLLCFGR, (__PLLCLOCKOUT__))
3510
3511 #define __HAL_RCC_PLLCLKOUT_DISABLE(__PLLCLOCKOUT__) CLEAR_BIT(RCC->PLLCFGR, (__PLLCLOCKOUT__))
3512
3513 /**
3514 * @brief Get clock output enable status (RCC_PLL_SYSCLK, RCC_PLL_48M1CLK, RCC_PLL_SAI3CLK)
3515 * @param __PLLCLOCKOUT__: specifies the output PLL clock to be checked.
3516 * This parameter can be one of the following values:
3517 * @arg @ref RCC_PLL_SAI3CLK This clock is used to generate an accurate clock to achieve
3518 * high-quality audio performance on SAI interface in case.
3519 * @arg @ref RCC_PLL_48M1CLK This Clock is used to generate the clock for the USB OTG FS (48 MHz),
3520 * the random analog generator (<=48 MHz) and the SDMMC1 (<= 48 MHz).
3521 * @arg @ref RCC_PLL_SYSCLK This Clock is used to generate the high speed system clock (up to 80MHz)
3522 * @retval SET / RESET
3523 */
3524 #define __HAL_RCC_GET_PLLCLKOUT_CONFIG(__PLLCLOCKOUT__) READ_BIT(RCC->PLLCFGR, (__PLLCLOCKOUT__))
3525
3526 /**
3527 * @brief Macro to configure the system clock source.
3528 * @param __SYSCLKSOURCE__: specifies the system clock source.
3529 * This parameter can be one of the following values:
3530 * - RCC_SYSCLKSOURCE_MSI: MSI oscillator is used as system clock source.
3531 * - RCC_SYSCLKSOURCE_HSI: HSI oscillator is used as system clock source.
3532 * - RCC_SYSCLKSOURCE_HSE: HSE oscillator is used as system clock source.
3533 * - RCC_SYSCLKSOURCE_PLLCLK: PLL output is used as system clock source.
3534 * @retval None
3535 */
3536 #define __HAL_RCC_SYSCLK_CONFIG(__SYSCLKSOURCE__) \
3537 MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, (__SYSCLKSOURCE__))
3538
3539 /** @brief Macro to get the clock source used as system clock.
3540 * @retval The clock source used as system clock. The returned value can be one
3541 * of the following:
3542 * - RCC_SYSCLKSOURCE_STATUS_MSI: MSI used as system clock.
3543 * - RCC_SYSCLKSOURCE_STATUS_HSI: HSI used as system clock.
3544 * - RCC_SYSCLKSOURCE_STATUS_HSE: HSE used as system clock.
3545 * - RCC_SYSCLKSOURCE_STATUS_PLLCLK: PLL used as system clock.
3546 */
3547 #define __HAL_RCC_GET_SYSCLK_SOURCE() ((uint32_t)(RCC->CFGR & RCC_CFGR_SWS))
3548
3549 /**
3550 * @brief Macro to configure the External Low Speed oscillator (LSE) drive capability.
3551 * @note As the LSE is in the Backup domain and write access is denied to
3552 * this domain after reset, you have to enable write access using
3553 * HAL_PWR_EnableBkUpAccess() function before to configure the LSE
3554 * (to be done once after reset).
3555 * @param __LSEDRIVE__: specifies the new state of the LSE drive capability.
3556 * This parameter can be one of the following values:
3557 * @arg @ref RCC_LSEDRIVE_LOW LSE oscillator low drive capability.
3558 * @arg @ref RCC_LSEDRIVE_MEDIUMLOW LSE oscillator medium low drive capability.
3559 * @arg @ref RCC_LSEDRIVE_MEDIUMHIGH LSE oscillator medium high drive capability.
3560 * @arg @ref RCC_LSEDRIVE_HIGH LSE oscillator high drive capability.
3561 * @retval None
3562 */
3563 #define __HAL_RCC_LSEDRIVE_CONFIG(__LSEDRIVE__) \
3564 MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, (uint32_t)(__LSEDRIVE__))
3565
3566 /**
3567 * @brief Macro to configure the wake up from stop clock.
3568 * @param __STOPWUCLK__: specifies the clock source used after wake up from stop.
3569 * This parameter can be one of the following values:
3570 * @arg @ref RCC_STOP_WAKEUPCLOCK_MSI MSI selected as system clock source
3571 * @arg @ref RCC_STOP_WAKEUPCLOCK_HSI HSI selected as system clock source
3572 * @retval None
3573 */
3574 #define __HAL_RCC_WAKEUPSTOP_CLK_CONFIG(__STOPWUCLK__) \
3575 MODIFY_REG(RCC->CFGR, RCC_CFGR_STOPWUCK, (__STOPWUCLK__))
3576
3577
3578 /** @brief Macro to configure the MCO clock.
3579 * @param __MCOCLKSOURCE__ specifies the MCO clock source.
3580 * This parameter can be one of the following values:
3581 * @arg @ref RCC_MCO1SOURCE_NOCLOCK MCO output disabled
3582 * @arg @ref RCC_MCO1SOURCE_SYSCLK System clock selected as MCO source
3583 * @arg @ref RCC_MCO1SOURCE_MSI MSI clock selected as MCO source
3584 * @arg @ref RCC_MCO1SOURCE_HSI HSI clock selected as MCO source
3585 * @arg @ref RCC_MCO1SOURCE_HSE HSE clock selected as MCO sourcee
3586 * @arg @ref RCC_MCO1SOURCE_PLLCLK Main PLL clock selected as MCO source
3587 * @arg @ref RCC_MCO1SOURCE_LSI LSI clock selected as MCO source
3588 * @arg @ref RCC_MCO1SOURCE_LSE LSE clock selected as MCO source
3589 @if STM32L443xx
3590 * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO source for devices with HSI48
3591 @endif
3592 @if STM32L462xx
3593 * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO source for devices with HSI48
3594 @endif
3595 * @param __MCODIV__ specifies the MCO clock prescaler.
3596 * This parameter can be one of the following values:
3597 * @arg @ref RCC_MCODIV_1 MCO clock source is divided by 1
3598 * @arg @ref RCC_MCODIV_2 MCO clock source is divided by 2
3599 * @arg @ref RCC_MCODIV_4 MCO clock source is divided by 4
3600 * @arg @ref RCC_MCODIV_8 MCO clock source is divided by 8
3601 * @arg @ref RCC_MCODIV_16 MCO clock source is divided by 16
3602 */
3603 #define __HAL_RCC_MCO1_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \
3604 MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCOSEL | RCC_CFGR_MCOPRE), ((__MCOCLKSOURCE__) | (__MCODIV__)))
3605
3606 /** @defgroup RCC_Flags_Interrupts_Management Flags Interrupts Management
3607 * @brief macros to manage the specified RCC Flags and interrupts.
3608 * @{
3609 */
3610
3611 /** @brief Enable RCC interrupt (Perform Byte access to RCC_CIR[14:8] bits to enable
3612 * the selected interrupts).
3613 * @param __INTERRUPT__: specifies the RCC interrupt sources to be enabled.
3614 * This parameter can be any combination of the following values:
3615 * @arg @ref RCC_IT_LSIRDY LSI ready interrupt
3616 * @arg @ref RCC_IT_LSERDY LSE ready interrupt
3617 * @arg @ref RCC_IT_MSIRDY HSI ready interrupt
3618 * @arg @ref RCC_IT_HSIRDY HSI ready interrupt
3619 * @arg @ref RCC_IT_HSERDY HSE ready interrupt
3620 * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt
3621 * @arg @ref RCC_IT_PLLSAI1RDY PLLSAI1 ready interrupt
3622 * @arg @ref RCC_IT_PLLSAI2RDY PLLSAI2 ready interrupt for devices with PLLSAI2
3623 * @arg @ref RCC_IT_LSECSS LSE Clock security system interrupt
3624 @if STM32L443xx
3625 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48
3626 @endif
3627 @if STM32L462xx
3628 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48
3629 @endif
3630 * @retval None
3631 */
3632 #define __HAL_RCC_ENABLE_IT(__INTERRUPT__) SET_BIT(RCC->CIER, (__INTERRUPT__))
3633
3634 /** @brief Disable RCC interrupt (Perform Byte access to RCC_CIR[14:8] bits to disable
3635 * the selected interrupts).
3636 * @param __INTERRUPT__: specifies the RCC interrupt sources to be disabled.
3637 * This parameter can be any combination of the following values:
3638 * @arg @ref RCC_IT_LSIRDY LSI ready interrupt
3639 * @arg @ref RCC_IT_LSERDY LSE ready interrupt
3640 * @arg @ref RCC_IT_MSIRDY HSI ready interrupt
3641 * @arg @ref RCC_IT_HSIRDY HSI ready interrupt
3642 * @arg @ref RCC_IT_HSERDY HSE ready interrupt
3643 * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt
3644 * @arg @ref RCC_IT_PLLSAI1RDY PLLSAI1 ready interrupt
3645 * @arg @ref RCC_IT_PLLSAI2RDY PLLSAI2 ready interrupt for devices with PLLSAI2
3646 * @arg @ref RCC_IT_LSECSS LSE Clock security system interrupt
3647 @if STM32L443xx
3648 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48
3649 @endif
3650 @if STM32L462xx
3651 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48
3652 @endif
3653 * @retval None
3654 */
3655 #define __HAL_RCC_DISABLE_IT(__INTERRUPT__) CLEAR_BIT(RCC->CIER, (__INTERRUPT__))
3656
3657 /** @brief Clear the RCC's interrupt pending bits (Perform Byte access to RCC_CIR[23:16]
3658 * bits to clear the selected interrupt pending bits.
3659 * @param __INTERRUPT__: specifies the interrupt pending bit to clear.
3660 * This parameter can be any combination of the following values:
3661 * @arg @ref RCC_IT_LSIRDY LSI ready interrupt
3662 * @arg @ref RCC_IT_LSERDY LSE ready interrupt
3663 * @arg @ref RCC_IT_MSIRDY MSI ready interrupt
3664 * @arg @ref RCC_IT_HSIRDY HSI ready interrupt
3665 * @arg @ref RCC_IT_HSERDY HSE ready interrupt
3666 * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt
3667 * @arg @ref RCC_IT_PLLSAI1RDY PLLSAI1 ready interrupt
3668 * @arg @ref RCC_IT_PLLSAI2RDY PLLSAI2 ready interrupt for devices with PLLSAI2
3669 * @arg @ref RCC_IT_CSS HSE Clock security system interrupt
3670 * @arg @ref RCC_IT_LSECSS LSE Clock security system interrupt
3671 @if STM32L443xx
3672 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48
3673 @endif
3674 @if STM32L462xx
3675 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48
3676 @endif
3677 * @retval None
3678 */
3679 #define __HAL_RCC_CLEAR_IT(__INTERRUPT__) (RCC->CICR = (__INTERRUPT__))
3680
3681 /** @brief Check whether the RCC interrupt has occurred or not.
3682 * @param __INTERRUPT__: specifies the RCC interrupt source to check.
3683 * This parameter can be one of the following values:
3684 * @arg @ref RCC_IT_LSIRDY LSI ready interrupt
3685 * @arg @ref RCC_IT_LSERDY LSE ready interrupt
3686 * @arg @ref RCC_IT_MSIRDY MSI ready interrupt
3687 * @arg @ref RCC_IT_HSIRDY HSI ready interrupt
3688 * @arg @ref RCC_IT_HSERDY HSE ready interrupt
3689 * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt
3690 * @arg @ref RCC_IT_PLLSAI1RDY PLLSAI1 ready interrupt
3691 * @arg @ref RCC_IT_PLLSAI2RDY PLLSAI2 ready interrupt for devices with PLLSAI2
3692 * @arg @ref RCC_IT_CSS HSE Clock security system interrupt
3693 * @arg @ref RCC_IT_LSECSS LSE Clock security system interrupt
3694 @if STM32L443xx
3695 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48
3696 @endif
3697 @if STM32L462xx
3698 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48
3699 @endif
3700 * @retval The new state of __INTERRUPT__ (TRUE or FALSE).
3701 */
3702 #define __HAL_RCC_GET_IT(__INTERRUPT__) ((RCC->CIFR & (__INTERRUPT__)) == (__INTERRUPT__))
3703
3704 /** @brief Set RMVF bit to clear the reset flags.
3705 * The reset flags are: RCC_FLAG_FWRRST, RCC_FLAG_OBLRST, RCC_FLAG_PINRST, RCC_FLAG_BORRST,
3706 * RCC_FLAG_SFTRST, RCC_FLAG_IWDGRST, RCC_FLAG_WWDGRST and RCC_FLAG_LPWRRST.
3707 * @retval None
3708 */
3709 #define __HAL_RCC_CLEAR_RESET_FLAGS() (RCC->CSR |= RCC_CSR_RMVF)
3710
3711 /** @brief Check whether the selected RCC flag is set or not.
3712 * @param __FLAG__: specifies the flag to check.
3713 * This parameter can be one of the following values:
3714 * @arg @ref RCC_FLAG_MSIRDY MSI oscillator clock ready
3715 * @arg @ref RCC_FLAG_HSIRDY HSI oscillator clock ready
3716 * @arg @ref RCC_FLAG_HSERDY HSE oscillator clock ready
3717 * @arg @ref RCC_FLAG_PLLRDY Main PLL clock ready
3718 * @arg @ref RCC_FLAG_PLLSAI1RDY PLLSAI1 clock ready
3719 * @arg @ref RCC_FLAG_PLLSAI2RDY PLLSAI2 clock ready for devices with PLLSAI2
3720 @if STM32L443xx
3721 * @arg @ref RCC_FLAG_HSI48RDY HSI48 clock ready for devices with HSI48
3722 @endif
3723 @if STM32L462xx
3724 * @arg @ref RCC_FLAG_HSI48RDY HSI48 clock ready for devices with HSI48
3725 @endif
3726 * @arg @ref RCC_FLAG_LSERDY LSE oscillator clock ready
3727 * @arg @ref RCC_FLAG_LSECSSD Clock security system failure on LSE oscillator detection
3728 * @arg @ref RCC_FLAG_LSIRDY LSI oscillator clock ready
3729 * @arg @ref RCC_FLAG_BORRST BOR reset
3730 * @arg @ref RCC_FLAG_OBLRST OBLRST reset
3731 * @arg @ref RCC_FLAG_PINRST Pin reset
3732 * @arg @ref RCC_FLAG_FWRST FIREWALL reset
3733 * @arg @ref RCC_FLAG_RMVF Remove reset Flag
3734 * @arg @ref RCC_FLAG_SFTRST Software reset
3735 * @arg @ref RCC_FLAG_IWDGRST Independent Watchdog reset
3736 * @arg @ref RCC_FLAG_WWDGRST Window Watchdog reset
3737 * @arg @ref RCC_FLAG_LPWRRST Low Power reset
3738 * @retval The new state of __FLAG__ (TRUE or FALSE).
3739 */
3740 #if defined(RCC_HSI48_SUPPORT)
3741 #define __HAL_RCC_GET_FLAG(__FLAG__) (((((((__FLAG__) >> 5U) == 1U) ? RCC->CR : \
3742 ((((__FLAG__) >> 5U) == 4U) ? RCC->CRRCR : \
3743 ((((__FLAG__) >> 5U) == 2U) ? RCC->BDCR : \
3744 ((((__FLAG__) >> 5U) == 3U) ? RCC->CSR : RCC->CIFR)))) & \
3745 ((uint32_t)1U << ((__FLAG__) & RCC_FLAG_MASK))) != RESET) \
3746 ? 1U : 0U)
3747 #else
3748 #define __HAL_RCC_GET_FLAG(__FLAG__) (((((((__FLAG__) >> 5U) == 1U) ? RCC->CR : \
3749 ((((__FLAG__) >> 5U) == 2U) ? RCC->BDCR : \
3750 ((((__FLAG__) >> 5U) == 3U) ? RCC->CSR : RCC->CIFR))) & \
3751 ((uint32_t)1 << ((__FLAG__) & RCC_FLAG_MASK))) != RESET) \
3752 ? 1U : 0U)
3753 #endif /* RCC_HSI48_SUPPORT */
3754
3755 /**
3756 * @}
3757 */
3758
3759 /**
3760 * @}
3761 */
3762
3763 /* Private constants ---------------------------------------------------------*/
3764 /** @defgroup RCC_Private_Constants RCC Private Constants
3765 * @{
3766 */
3767 /* Defines used for Flags */
3768 #define CR_REG_INDEX ((uint32_t)1U)
3769 #define BDCR_REG_INDEX ((uint32_t)2U)
3770 #define CSR_REG_INDEX ((uint32_t)3U)
3771 #if defined(RCC_HSI48_SUPPORT)
3772 #define CRRCR_REG_INDEX ((uint32_t)4U)
3773 #endif /* RCC_HSI48_SUPPORT */
3774
3775 #define RCC_FLAG_MASK ((uint32_t)0x1FU)
3776 /**
3777 * @}
3778 */
3779
3780 /* Private macros ------------------------------------------------------------*/
3781 /** @addtogroup RCC_Private_Macros
3782 * @{
3783 */
3784
3785 #if defined(RCC_HSI48_SUPPORT)
3786 #define IS_RCC_OSCILLATORTYPE(__OSCILLATOR__) (((__OSCILLATOR__) == RCC_OSCILLATORTYPE_NONE) || \
3787 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) || \
3788 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) || \
3789 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSI48) == RCC_OSCILLATORTYPE_HSI48) || \
3790 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) || \
3791 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) || \
3792 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE))
3793 #else
3794 #define IS_RCC_OSCILLATORTYPE(__OSCILLATOR__) (((__OSCILLATOR__) == RCC_OSCILLATORTYPE_NONE) || \
3795 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) || \
3796 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) || \
3797 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) || \
3798 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) || \
3799 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE))
3800 #endif /* RCC_HSI48_SUPPORT */
3801
3802 #define IS_RCC_HSE(__HSE__) (((__HSE__) == RCC_HSE_OFF) || ((__HSE__) == RCC_HSE_ON) || \
3803 ((__HSE__) == RCC_HSE_BYPASS))
3804
3805 #define IS_RCC_LSE(__LSE__) (((__LSE__) == RCC_LSE_OFF) || ((__LSE__) == RCC_LSE_ON) || \
3806 ((__LSE__) == RCC_LSE_BYPASS))
3807
3808 #define IS_RCC_HSI(__HSI__) (((__HSI__) == RCC_HSI_OFF) || ((__HSI__) == RCC_HSI_ON))
3809
3810 #define IS_RCC_HSI_CALIBRATION_VALUE(__VALUE__) ((__VALUE__) <= (RCC_ICSCR_HSITRIM >> POSITION_VAL(RCC_ICSCR_HSITRIM)))
3811
3812 #define IS_RCC_LSI(__LSI__) (((__LSI__) == RCC_LSI_OFF) || ((__LSI__) == RCC_LSI_ON))
3813
3814 #define IS_RCC_MSI(__MSI__) (((__MSI__) == RCC_MSI_OFF) || ((__MSI__) == RCC_MSI_ON))
3815
3816 #define IS_RCC_MSICALIBRATION_VALUE(__VALUE__) ((__VALUE__) <= (uint32_t)255U)
3817
3818 #if defined(RCC_HSI48_SUPPORT)
3819 #define IS_RCC_HSI48(__HSI48__) (((__HSI48__) == RCC_HSI48_OFF) || ((__HSI48__) == RCC_HSI48_ON))
3820 #endif /* RCC_HSI48_SUPPORT */
3821
3822 #define IS_RCC_PLL(__PLL__) (((__PLL__) == RCC_PLL_NONE) ||((__PLL__) == RCC_PLL_OFF) || \
3823 ((__PLL__) == RCC_PLL_ON))
3824
3825 #define IS_RCC_PLLSOURCE(__SOURCE__) (((__SOURCE__) == RCC_PLLSOURCE_NONE) || \
3826 ((__SOURCE__) == RCC_PLLSOURCE_MSI) || \
3827 ((__SOURCE__) == RCC_PLLSOURCE_HSI) || \
3828 ((__SOURCE__) == RCC_PLLSOURCE_HSE))
3829
3830 #define IS_RCC_PLLM_VALUE(__VALUE__) ((1U <= (__VALUE__)) && ((__VALUE__) <= 8U))
3831
3832 #define IS_RCC_PLLN_VALUE(__VALUE__) ((8U <= (__VALUE__)) && ((__VALUE__) <= 86U))
3833
3834 #if defined(RCC_PLLP_DIV_2_31_SUPPORT)
3835 #define IS_RCC_PLLP_VALUE(__VALUE__) (((__VALUE__) >= 2U) && ((__VALUE__) <= 31U))
3836 #else
3837 #define IS_RCC_PLLP_VALUE(__VALUE__) (((__VALUE__) == 7U) || ((__VALUE__) == 17U))
3838 #endif /*RCC_PLLP_DIV_2_31_SUPPORT */
3839
3840 #define IS_RCC_PLLQ_VALUE(__VALUE__) (((__VALUE__) == 2U) || ((__VALUE__) == 4U) || \
3841 ((__VALUE__) == 6U) || ((__VALUE__) == 8U))
3842
3843 #define IS_RCC_PLLR_VALUE(__VALUE__) (((__VALUE__) == 2U) || ((__VALUE__) == 4U) || \
3844 ((__VALUE__) == 6U) || ((__VALUE__) == 8U))
3845
3846 #define IS_RCC_PLLSAI1CLOCKOUT_VALUE(__VALUE__) (((((__VALUE__) & RCC_PLLSAI1_SAI1CLK) == RCC_PLLSAI1_SAI1CLK) || \
3847 (((__VALUE__) & RCC_PLLSAI1_48M2CLK) == RCC_PLLSAI1_48M2CLK) || \
3848 (((__VALUE__) & RCC_PLLSAI1_ADC1CLK) == RCC_PLLSAI1_ADC1CLK)) && \
3849 (((__VALUE__) & ~(RCC_PLLSAI1_SAI1CLK|RCC_PLLSAI1_48M2CLK|RCC_PLLSAI1_ADC1CLK)) == 0U))
3850
3851 #if defined(RCC_PLLSAI2_SUPPORT)
3852 #define IS_RCC_PLLSAI2CLOCKOUT_VALUE(__VALUE__) (((((__VALUE__) & RCC_PLLSAI2_SAI2CLK) == RCC_PLLSAI2_SAI2CLK) || \
3853 (((__VALUE__) & RCC_PLLSAI2_ADC2CLK) == RCC_PLLSAI2_ADC2CLK)) && \
3854 (((__VALUE__) & ~(RCC_PLLSAI2_SAI2CLK|RCC_PLLSAI2_ADC2CLK)) == 0U))
3855 #endif /* RCC_PLLSAI2_SUPPORT */
3856
3857 #define IS_RCC_MSI_CLOCK_RANGE(__RANGE__) (((__RANGE__) == RCC_MSIRANGE_0) || \
3858 ((__RANGE__) == RCC_MSIRANGE_1) || \
3859 ((__RANGE__) == RCC_MSIRANGE_2) || \
3860 ((__RANGE__) == RCC_MSIRANGE_3) || \
3861 ((__RANGE__) == RCC_MSIRANGE_4) || \
3862 ((__RANGE__) == RCC_MSIRANGE_5) || \
3863 ((__RANGE__) == RCC_MSIRANGE_6) || \
3864 ((__RANGE__) == RCC_MSIRANGE_7) || \
3865 ((__RANGE__) == RCC_MSIRANGE_8) || \
3866 ((__RANGE__) == RCC_MSIRANGE_9) || \
3867 ((__RANGE__) == RCC_MSIRANGE_10) || \
3868 ((__RANGE__) == RCC_MSIRANGE_11))
3869
3870 #define IS_RCC_MSI_STANDBY_CLOCK_RANGE(__RANGE__) (((__RANGE__) == RCC_MSIRANGE_4) || \
3871 ((__RANGE__) == RCC_MSIRANGE_5) || \
3872 ((__RANGE__) == RCC_MSIRANGE_6) || \
3873 ((__RANGE__) == RCC_MSIRANGE_7))
3874
3875 #define IS_RCC_CLOCKTYPE(__CLK__) ((1U <= (__CLK__)) && ((__CLK__) <= 15U))
3876
3877 #define IS_RCC_SYSCLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_SYSCLKSOURCE_MSI) || \
3878 ((__SOURCE__) == RCC_SYSCLKSOURCE_HSI) || \
3879 ((__SOURCE__) == RCC_SYSCLKSOURCE_HSE) || \
3880 ((__SOURCE__) == RCC_SYSCLKSOURCE_PLLCLK))
3881
3882 #define IS_RCC_HCLK(__HCLK__) (((__HCLK__) == RCC_SYSCLK_DIV1) || ((__HCLK__) == RCC_SYSCLK_DIV2) || \
3883 ((__HCLK__) == RCC_SYSCLK_DIV4) || ((__HCLK__) == RCC_SYSCLK_DIV8) || \
3884 ((__HCLK__) == RCC_SYSCLK_DIV16) || ((__HCLK__) == RCC_SYSCLK_DIV64) || \
3885 ((__HCLK__) == RCC_SYSCLK_DIV128) || ((__HCLK__) == RCC_SYSCLK_DIV256) || \
3886 ((__HCLK__) == RCC_SYSCLK_DIV512))
3887
3888 #define IS_RCC_PCLK(__PCLK__) (((__PCLK__) == RCC_HCLK_DIV1) || ((__PCLK__) == RCC_HCLK_DIV2) || \
3889 ((__PCLK__) == RCC_HCLK_DIV4) || ((__PCLK__) == RCC_HCLK_DIV8) || \
3890 ((__PCLK__) == RCC_HCLK_DIV16))
3891
3892 #define IS_RCC_RTCCLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_RTCCLKSOURCE_NO_CLK) || \
3893 ((__SOURCE__) == RCC_RTCCLKSOURCE_LSE) || \
3894 ((__SOURCE__) == RCC_RTCCLKSOURCE_LSI) || \
3895 ((__SOURCE__) == RCC_RTCCLKSOURCE_HSE_DIV32))
3896
3897 #define IS_RCC_MCO(__MCOX__) ((__MCOX__) == RCC_MCO1)
3898
3899 #if defined(RCC_HSI48_SUPPORT)
3900 #define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK) || \
3901 ((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK) || \
3902 ((__SOURCE__) == RCC_MCO1SOURCE_MSI) || \
3903 ((__SOURCE__) == RCC_MCO1SOURCE_HSI) || \
3904 ((__SOURCE__) == RCC_MCO1SOURCE_HSE) || \
3905 ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) || \
3906 ((__SOURCE__) == RCC_MCO1SOURCE_LSI) || \
3907 ((__SOURCE__) == RCC_MCO1SOURCE_LSE) || \
3908 ((__SOURCE__) == RCC_MCO1SOURCE_HSI48))
3909 #else
3910 #define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK) || \
3911 ((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK) || \
3912 ((__SOURCE__) == RCC_MCO1SOURCE_MSI) || \
3913 ((__SOURCE__) == RCC_MCO1SOURCE_HSI) || \
3914 ((__SOURCE__) == RCC_MCO1SOURCE_HSE) || \
3915 ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) || \
3916 ((__SOURCE__) == RCC_MCO1SOURCE_LSI) || \
3917 ((__SOURCE__) == RCC_MCO1SOURCE_LSE))
3918 #endif /* RCC_HSI48_SUPPORT */
3919
3920 #define IS_RCC_MCODIV(__DIV__) (((__DIV__) == RCC_MCODIV_1) || ((__DIV__) == RCC_MCODIV_2) || \
3921 ((__DIV__) == RCC_MCODIV_4) || ((__DIV__) == RCC_MCODIV_8) || \
3922 ((__DIV__) == RCC_MCODIV_16))
3923
3924 #define IS_RCC_LSE_DRIVE(__DRIVE__) (((__DRIVE__) == RCC_LSEDRIVE_LOW) || \
3925 ((__DRIVE__) == RCC_LSEDRIVE_MEDIUMLOW) || \
3926 ((__DRIVE__) == RCC_LSEDRIVE_MEDIUMHIGH) || \
3927 ((__DRIVE__) == RCC_LSEDRIVE_HIGH))
3928
3929 #define IS_RCC_STOP_WAKEUPCLOCK(__SOURCE__) (((__SOURCE__) == RCC_STOP_WAKEUPCLOCK_MSI) || \
3930 ((__SOURCE__) == RCC_STOP_WAKEUPCLOCK_HSI))
3931 /**
3932 * @}
3933 */
3934
3935 /* Include RCC HAL Extended module */
3936 #include "stm32l4xx_hal_rcc_ex.h"
3937
3938 /* Exported functions --------------------------------------------------------*/
3939 /** @addtogroup RCC_Exported_Functions
3940 * @{
3941 */
3942
3943
3944 /** @addtogroup RCC_Exported_Functions_Group1
3945 * @{
3946 */
3947
3948 /* Initialization and de-initialization functions ******************************/
3949 void HAL_RCC_DeInit(void);
3950 HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct);
3951 HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency);
3952
3953 /**
3954 * @}
3955 */
3956
3957 /** @addtogroup RCC_Exported_Functions_Group2
3958 * @{
3959 */
3960
3961 /* Peripheral Control functions ************************************************/
3962 void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv);
3963 void HAL_RCC_EnableCSS(void);
3964 uint32_t HAL_RCC_GetSysClockFreq(void);
3965 uint32_t HAL_RCC_GetHCLKFreq(void);
3966 uint32_t HAL_RCC_GetPCLK1Freq(void);
3967 uint32_t HAL_RCC_GetPCLK2Freq(void);
3968 void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct);
3969 void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency);
3970 /* CSS NMI IRQ handler */
3971 void HAL_RCC_NMI_IRQHandler(void);
3972 /* User Callbacks in non blocking mode (IT mode) */
3973 void HAL_RCC_CSSCallback(void);
3974
3975 /**
3976 * @}
3977 */
3978
3979 /**
3980 * @}
3981 */
3982
3983 /**
3984 * @}
3985 */
3986
3987 /**
3988 * @}
3989 */
3990
3991 #ifdef __cplusplus
3992 }
3993 #endif
3994
3995 #endif /* __STM32L4xx_HAL_RCC_H */
3996
3997 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/