1 /**
2   ******************************************************************************
3   * @file    stm32u5xx_hal_rcc.h
4   * @author  MCD Application Team
5   * @brief   Header file of RCC HAL  module.
6   ******************************************************************************
7   * @attention
8   *
9   * Copyright (c) 2021 STMicroelectronics.
10   * All rights reserved.
11   *
12   * This software component is licensed by ST under BSD 3-Clause license,
13   * the "License"; You may not use this file except in compliance with the
14   * License. You may obtain a copy of the License at:
15   *                        opensource.org/licenses/BSD-3-Clause
16   *
17   ******************************************************************************
18   */
19 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32U5xx_HAL_RCC_H
22 #define STM32U5xx_HAL_RCC_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32u5xx_hal_def.h"
30 
31 /** @addtogroup STM32U5xx_HAL_Driver
32   * @{
33   */
34 
35 /** @addtogroup RCC
36   * @{
37   */
38 
39 /* Exported types ------------------------------------------------------------*/
40 /** @defgroup RCC_Exported_Types RCC Exported Types
41   * @{
42   */
43 
44 /**
45   * @brief  RCC PLL configuration structure definition
46   */
47 typedef struct
48 {
49   uint32_t PLLState;   /*!< The new state of the PLL.
50                             This parameter can be a value of @ref RCC_PLL_Config                      */
51 
52   uint32_t PLLSource;  /*!< RCC_PLLSource: PLL entry clock source.
53                             This parameter must be a value of @ref RCC_PLL_Clock_Source               */
54 
55   uint32_t PLLM;       /*!< PLLM: Division factor for PLL VCO input clock.
56                             This parameter must be a number between Min_Data = 1 and Max_Data = 16    */
57 
58   uint32_t PLLMBOOST;  /*!< PLLMBOOST: Prescaler for EPOD booster input clock.
59                             This parameter must be a value of @ref RCC_PLLMBOOST_EPOD_Clock_Divider   */
60 
61   uint32_t PLLN;       /*!< PLLN: Multiplication factor for PLL VCO output clock.
62                             This parameter must be a number between Min_Data = 4 and Max_Data = 512   */
63 
64   uint32_t PLLP;       /*!< PLLP: Division factor for system clock.
65                             This parameter must be a number between Min_Data = 1 and Max_Data = 128
66                           odd division factors are not allowed                                        */
67 
68   uint32_t PLLQ;       /*!< PLLQ: Division factor for peripheral clocks.
69                             This parameter must be a number between Min_Data = 1 and Max_Data = 128   */
70 
71   uint32_t PLLR;       /*!< PLLR: Division factor for peripheral clocks.
72                             This parameter must be a number between Min_Data = 2 and Max_Data = 128   */
73 
74   uint32_t PLLRGE;     /*!< PLLRGE: PLL1 clock Input range
75                             This parameter must be a value of @ref RCC_PLL_VCI_Range                 */
76 
77   uint32_t PLLFRACN;   /*!< PLLFRACN: Specifies Fractional Part Of The Multiplication Factor for
78                             PLL1 VCO It should be a value between 0 and 32767                         */
79 
80 } RCC_PLLInitTypeDef;
81 
82 /**
83   * @brief  RCC Internal/External Oscillator (HSE, HSI, MSI, LSE and LSI) configuration structure definition
84   */
85 typedef struct
86 {
87   uint32_t OscillatorType;       /*!< The oscillators to be configured.
88                                       This parameter can be a value of @ref RCC_Oscillator_Type                   */
89 
90   uint32_t HSEState;             /*!< The new state of the HSE.
91                                       This parameter can be a value of @ref RCC_HSE_Config                        */
92 
93   uint32_t LSEState;             /*!< The new state of the LSE.
94                                       This parameter can be a value of @ref RCC_LSE_Config                        */
95 
96   uint32_t HSIState;             /*!< The new state of the HSI.
97                                       This parameter can be a value of @ref RCC_HSI_Config                        */
98 
99   uint32_t HSICalibrationValue;  /*!< The calibration trimming value (default is RCC_HSICALIBRATION_DEFAULT).
100                                       This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7F
101                                       on the other devices */
102 
103   uint32_t LSIState;             /*!< The new state of the LSI.
104                                       This parameter can be a value of @ref RCC_LSI_Config                        */
105 
106   uint32_t LSIDiv;               /*!< The division factor of the LSI.
107                                       This parameter can be a value of @ref RCC_LSI_Div                           */
108 
109   uint32_t MSIState;             /*!< The new state of the MSI.
110                                       This parameter can be a value of @ref RCC_MSI_Config */
111 
112   uint32_t MSICalibrationValue;  /*!< The calibration trimming value (default is RCC_MSICALIBRATION_DEFAULT).
113                                       This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF */
114 
115   uint32_t MSIClockRange;        /*!< The MSI frequency range.
116                                       This parameter can be a value of @ref RCC_MSI_Clock_Range                   */
117 
118   uint32_t MSIKClockRange;        /*!< The MSIK frequency range.
119                                       This parameter can be a value of @ref RCC_MSIk_Clock_Range                  */
120 
121   uint32_t HSI48State;             /*!< The new state of the HSI48.
122                                         This parameter can be a value of @ref RCC_HSI48_Config                    */
123 
124   uint32_t SHSIState;             /*!< The new state of the SHSI.
125                                         This parameter can be a value of @ref RCC_SHSI_Config                    */
126 
127   uint32_t MSIKState;             /*!< The new state of the MSIK.
128                                         This parameter can be a value of @ref RCC_MSIK_Config                     */
129 
130   RCC_PLLInitTypeDef PLL;        /*!< Main PLL structure parameters                                               */
131 
132 } RCC_OscInitTypeDef;
133 
134 /**
135   * @brief  RCC System, AHB and APB busses clock configuration structure definition
136   */
137 typedef struct
138 {
139   uint32_t ClockType;             /*!< The clock to be configured.
140                                        This parameter can be a value of @ref RCC_System_Clock_Type      */
141 
142   uint32_t SYSCLKSource;          /*!< The clock source used as system clock (SYSCLK).
143                                        This parameter can be a value of @ref RCC_System_Clock_Source    */
144 
145   uint32_t AHBCLKDivider;         /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock
146                                        (SYSCLK).
147                                        This parameter can be a value of @ref RCC_AHB_Clock_Source       */
148 
149   uint32_t APB1CLKDivider;        /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK).
150                                        This parameter can be a value of @ref RCC_APB1_APB2_APB3_Clock_Source */
151 
152   uint32_t APB2CLKDivider;        /*!< The APB2 clock (PCLK2) divider. This clock is derived from the AHB clock (HCLK).
153                                        This parameter can be a value of @ref RCC_APB1_APB2_APB3_Clock_Source */
154 
155   uint32_t APB3CLKDivider;        /*!< The APB3 clock (PCLK3) divider. This clock is derived from the AHB clock (HCLK).
156                                        This parameter can be a value of @ref RCC_APB1_APB2_APB3_Clock_Source */
157 } RCC_ClkInitTypeDef;
158 
159 /**
160   * @}
161   */
162 
163 /* Exported constants --------------------------------------------------------*/
164 /** @defgroup RCC_Exported_Constants RCC Exported Constants
165   * @{
166   */
167 #define HSE_TIMEOUT_VALUE          HSE_STARTUP_TIMEOUT
168 #define HSI_TIMEOUT_VALUE          (2U)    /* 2 ms (minimum Tick + 1) */
169 #define MSI_TIMEOUT_VALUE          (2U)    /* 2 ms (minimum Tick + 1) */
170 
171 /* Defines used for Flags */
172 #define CR_REG_INDEX              (1U)
173 #define BDCR_REG_INDEX            (2U)
174 #define CSR_REG_INDEX             (3U)
175 #define CRRCR_REG_INDEX           (4U)
176 
177 #define RCC_FLAG_MASK             (0x1FU)
178 /**
179   * @}
180   */
181 
182 /** @defgroup RCC_Reset_Flag Reset Flag
183   * @{
184   */
185 #define RCC_RESET_FLAG_OBL             RCC_CSR_OBLRSTF    /*!< Option Byte Loader reset flag */
186 #define RCC_RESET_FLAG_PIN             RCC_CSR_PINRSTF    /*!< PIN reset flag */
187 #define RCC_RESET_FLAG_PWR             RCC_CSR_BORRSTF    /*!< BOR or POR/PDR reset flag */
188 #define RCC_RESET_FLAG_SW              RCC_CSR_SFTRSTF    /*!< Software Reset flag */
189 #define RCC_RESET_FLAG_IWDG            RCC_CSR_IWDGRSTF   /*!< Independent Watchdog reset flag */
190 #define RCC_RESET_FLAG_WWDG            RCC_CSR_WWDGRSTF   /*!< Window watchdog reset flag */
191 #define RCC_RESET_FLAG_LPWR            RCC_CSR_LPWRRSTF   /*!< Low power reset flag */
192 #define RCC_RESET_FLAG_ALL             (RCC_RESET_FLAG_OBL | RCC_RESET_FLAG_PIN | RCC_RESET_FLAG_PWR | \
193                                         RCC_RESET_FLAG_SW | RCC_RESET_FLAG_IWDG | RCC_RESET_FLAG_WWDG | \
194                                         RCC_RESET_FLAG_LPWR)
195 /**
196   * @}
197   */
198 
199 /** @defgroup RCC_Timeout_Value Timeout Values
200   * @{
201   */
202 #define RCC_DBP_TIMEOUT_VALUE          (2U)    /* 2 ms (minimum Tick + 1) */
203 #define RCC_LSE_TIMEOUT_VALUE          LSE_STARTUP_TIMEOUT
204 /**
205   * @}
206   */
207 
208 /** @defgroup RCC_Oscillator_Type Oscillator Type
209   * @{
210   */
211 #define RCC_OSCILLATORTYPE_NONE        0x0UL    /*!< Oscillator configuration unchanged */
212 #define RCC_OSCILLATORTYPE_HSE         0x1UL    /*!< HSE to configure */
213 #define RCC_OSCILLATORTYPE_HSI         0x2UL    /*!< HSI to configure */
214 #define RCC_OSCILLATORTYPE_LSE         0x4UL    /*!< LSE to configure */
215 #define RCC_OSCILLATORTYPE_LSI         0x8UL    /*!< LSI to configure */
216 #define RCC_OSCILLATORTYPE_MSI         0x10UL   /*!< MSI to configure */
217 #define RCC_OSCILLATORTYPE_HSI48       0x20UL   /*!< HSI48 to configure */
218 #define RCC_OSCILLATORTYPE_MSIK        0x040U   /*!< MSIK  to configure */
219 #define RCC_OSCILLATORTYPE_SHSI        0x80UL   /*!< SHSI  to configure */
220 /* Defines Oscillator Masks */
221 #define RCC_OSCILLATORTYPE_ALL          (RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSI | \
222                                          RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_MSI | RCC_OSCILLATORTYPE_MSIK | \
223                                          RCC_OSCILLATORTYPE_HSI48 | RCC_OSCILLATORTYPE_SHSI)  /*!< All Oscillator to configure */
224 /**
225   * @}
226   */
227 
228 /** @defgroup RCC_HSE_Config HSE Config
229   * @{
230   */
231 #define RCC_HSE_OFF                    0x00000000U                                                 /*!< HSE clock deactivation */
232 #define RCC_HSE_ON                     RCC_CR_HSEON                                                /*!< HSE clock activation */
233 #define RCC_HSE_BYPASS                 (RCC_CR_HSEBYP | RCC_CR_HSEON)                  /*!< External clock source for HSE clock */
234 #define RCC_HSE_BYPASS_DIGITAL         (RCC_CR_HSEEXT | RCC_CR_HSEBYP | RCC_CR_HSEON)
235 /**
236   * @}
237   */
238 
239 /** @defgroup RCC_LSE_Config LSE Config
240   * @{
241   */
242 #define RCC_LSE_OFF                    0U                                                     /*!< LSE clock deactivation */
243 #define RCC_LSE_ON_RTC_ONLY            RCC_BDCR_LSEON                                         /*!< LSE clock activation for RTC only */
244 #define RCC_LSE_ON                     (RCC_BDCR_LSESYSEN | RCC_BDCR_LSEON)                   /*!< LSE clock activation for RCC and peripherals */
245 #define RCC_LSE_BYPASS_RTC_ONLY        (RCC_BDCR_LSEBYP | RCC_BDCR_LSEON)                     /*!< External clock source for LSE clock */
246 #define RCC_LSE_BYPASS                 (RCC_BDCR_LSEBYP | RCC_BDCR_LSESYSEN | RCC_BDCR_LSEON) /*!< External clock source for LSE clock */
247 /**
248   * @}
249   */
250 
251 /** @defgroup RCC_HSI_Config HSI Config
252   * @{
253   */
254 #define RCC_HSI_OFF                    0x00000000U            /*!< HSI clock deactivation */
255 #define RCC_HSI_ON                     RCC_CR_HSION           /*!< HSI clock activation */
256 #define RCC_HSICALIBRATION_DEFAULT     0x10U                  /* Default HSI calibration trimming value */
257 /**
258   * @}
259   */
260 
261 /** @defgroup RCC_LSI_Config LSI Config
262   * @{
263   */
264 #define RCC_LSI_OFF                    0x00000000U        /*!< LSI clock deactivation */
265 #define RCC_LSI_ON                     RCC_BDCR_LSION     /*!< LSI clock activation */
266 /**
267   * @}
268   */
269 
270 /** @defgroup RCC_LSI_Div LSI Div
271   * @{
272   */
273 #define RCC_LSI_DIV1                   0U                  /*!< LSI clock is not divided */
274 #define RCC_LSI_DIV128                 RCC_BDCR_LSIPREDIV  /*!< LSI clock is divided by 128 */
275 /**
276   * @}
277   */
278 
279 /** @defgroup RCC_MSI_Config MSI Config
280   * @{
281   */
282 #define RCC_MSI_OFF                    0x00000000U             /*!< MSI clock deactivation */
283 #define RCC_MSI_ON                     RCC_CR_MSISON           /*!< MSI clock activation */
284 
285 #define RCC_MSICALIBRATION_DEFAULT     0x10U                   /*!< Default MSI calibration trimming value */
286 /**
287   * @}
288   */
289 
290 /** @defgroup RCC_HSI48_Config HSI48 Config
291   * @{
292   */
293 #define RCC_HSI48_OFF                  0x00000000U         /*!< HSI48 clock deactivation */
294 #define RCC_HSI48_ON                   RCC_CR_HSI48ON      /*!< HSI48 clock activation */
295 /**
296   * @}
297   */
298 
299 /** @defgroup RCC_MSIK_Config MSIK Config
300   * @{
301   */
302 #define RCC_MSIK_OFF                  0x00000000U        /*!< MSIK clock deactivation */
303 #define RCC_MSIK_ON                   RCC_CR_MSIKON      /*!< MSIK clock activation */
304 /**
305   * @}
306   */
307 
308 /** @defgroup RCC_SHSI_Config SHSI Config
309   * @{
310   */
311 #define RCC_SHSI_OFF                  0x00000000U      /*!< SHSI clock deactivation */
312 #define RCC_SHSI_ON                   RCC_CR_SHSION      /*!< SHSI clock activation */
313 /**
314   * @}
315   */
316 
317 /** @defgroup RCC_PLL_Config  RCC PLL Config
318   * @{
319   */
320 #define RCC_PLL_NONE                 0x00000000U
321 #define RCC_PLL_OFF                  0x00000001U
322 #define RCC_PLL_ON                   0x00000002U
323 /**
324   * @}
325   */
326 
327 /** @defgroup RCC_PLL_Clock_Output  RCC PLL Clock Output
328   * @{
329   */
330 #define RCC_PLL1_DIVP                RCC_PLL1CFGR_PLL1PEN
331 #define RCC_PLL1_DIVQ                RCC_PLL1CFGR_PLL1QEN
332 #define RCC_PLL1_DIVR                RCC_PLL1CFGR_PLL1REN
333 /**
334   * @}
335   */
336 
337 /** @defgroup RCC_PLLMBOOST_EPOD_Clock_Divider PLLMBOOST EPOD Clock Divider
338   * @{
339   */
340 #define RCC_PLLMBOOST_DIV1           0x00000000U
341 #define RCC_PLLMBOOST_DIV2           RCC_PLL1CFGR_PLL1MBOOST_0
342 #define RCC_PLLMBOOST_DIV4           RCC_PLL1CFGR_PLL1MBOOST_1
343 #define RCC_PLLMBOOST_DIV6           (RCC_PLL1CFGR_PLL1MBOOST_1 | RCC_PLL1CFGR_PLL1MBOOST_0)
344 #define RCC_PLLMBOOST_DIV8           RCC_PLL1CFGR_PLL1MBOOST_2
345 #define RCC_PLLMBOOST_DIV10          (RCC_PLL1CFGR_PLL1MBOOST_2 | RCC_PLL1CFGR_PLL1MBOOST_0)
346 #define RCC_PLLMBOOST_DIV12          (RCC_PLL1CFGR_PLL1MBOOST_2 | RCC_PLL1CFGR_PLL1MBOOST_1)
347 #define RCC_PLLMBOOST_DIV14          (RCC_PLL1CFGR_PLL1MBOOST_2 | RCC_PLL1CFGR_PLL1MBOOST_1| RCC_PLL1CFGR_PLL1MBOOST_0)
348 #define RCC_PLLMBOOST_DIV16          RCC_PLL1CFGR_PLL1MBOOST_3
349 /**
350   * @}
351   */
352 
353 /** @defgroup RCC_PLL_VCI_Range  RCC PLL1 VCI Range
354   * @{
355   */
356 #define RCC_PLLVCIRANGE_0              0x00000000U
357 #define RCC_PLLVCIRANGE_1              (RCC_PLL1CFGR_PLL1RGE_1 | RCC_PLL1CFGR_PLL1RGE_0)
358 /**
359   * @}
360   */
361 
362 /** @defgroup RCC_PLL_Clock_Source  RCC PLL Clock Source
363   * @{
364   */
365 #define RCC_PLLSOURCE_NONE             0x00000000U
366 #define RCC_PLLSOURCE_MSI              RCC_PLL1CFGR_PLL1SRC_0
367 #define RCC_PLLSOURCE_HSI              RCC_PLL1CFGR_PLL1SRC_1
368 #define RCC_PLLSOURCE_HSE              (RCC_PLL1CFGR_PLL1SRC_0 | RCC_PLL1CFGR_PLL1SRC_1)
369 /**
370   * @}
371   */
372 
373 
374 /** @defgroup RCC_MSI_Clock_Range MSI Clock Range
375   * @{
376   */
377 #define RCC_MSIRANGE_0                 0x00000000U                                                                      /*!< MSI = 48 MHz    */
378 #define RCC_MSIRANGE_1                 RCC_ICSCR1_MSISRANGE_0                                                           /*!< MSI = 24 MHz    */
379 #define RCC_MSIRANGE_2                 RCC_ICSCR1_MSISRANGE_1                                                           /*!< MSI = 16 MHz    */
380 #define RCC_MSIRANGE_3                 (RCC_ICSCR1_MSISRANGE_0 | RCC_ICSCR1_MSISRANGE_1)                                /*!< MSI = 12 MHz    */
381 #define RCC_MSIRANGE_4                 RCC_ICSCR1_MSISRANGE_2                                                           /*!< MSI = 4 MHz     */
382 #define RCC_MSIRANGE_5                 (RCC_ICSCR1_MSISRANGE_0 | RCC_ICSCR1_MSISRANGE_2)                                /*!< MSI = 2 MHz     */
383 #define RCC_MSIRANGE_6                 (RCC_ICSCR1_MSISRANGE_1 | RCC_ICSCR1_MSISRANGE_2)                                /*!< MSI = 1.33 MHz  */
384 #define RCC_MSIRANGE_7                 (RCC_ICSCR1_MSISRANGE_0 | RCC_ICSCR1_MSISRANGE_1 | RCC_ICSCR1_MSISRANGE_2)       /*!< MSI = 1 MHz     */
385 #define RCC_MSIRANGE_8                 RCC_ICSCR1_MSISRANGE_3                                                           /*!< MSI = 3.072 MHz */
386 #define RCC_MSIRANGE_9                 (RCC_ICSCR1_MSISRANGE_0 | RCC_ICSCR1_MSISRANGE_3)                                /*!< MSI = 1.536 MHz */
387 #define RCC_MSIRANGE_10                (RCC_ICSCR1_MSISRANGE_1 | RCC_ICSCR1_MSISRANGE_3)                                /*!< MSI = 1.024 MHz */
388 #define RCC_MSIRANGE_11                (RCC_ICSCR1_MSISRANGE_0 | RCC_ICSCR1_MSISRANGE_1 | RCC_ICSCR1_MSISRANGE_3)       /*!< MSI = 768 KHz   */
389 #define RCC_MSIRANGE_12                (RCC_ICSCR1_MSISRANGE_2 | RCC_ICSCR1_MSISRANGE_3)                                /*!< MSI = 400 KHz   */
390 #define RCC_MSIRANGE_13                (RCC_ICSCR1_MSISRANGE_0 | RCC_ICSCR1_MSISRANGE_2 | RCC_ICSCR1_MSISRANGE_3)       /*!< MSI = 200 KHz   */
391 #define RCC_MSIRANGE_14                (RCC_ICSCR1_MSISRANGE_1 | RCC_ICSCR1_MSISRANGE_2 | RCC_ICSCR1_MSISRANGE_3)       /*!< MSI = 133 KHz   */
392 #define RCC_MSIRANGE_15                (RCC_ICSCR1_MSISRANGE_0 | RCC_ICSCR1_MSISRANGE_1| RCC_ICSCR1_MSISRANGE_2 |\
393                                         RCC_ICSCR1_MSISRANGE_3)                                                         /*!< MSI = 100 KHz   */
394 /**
395   * @}
396   */
397 
398 /** @defgroup RCC_MSIk_Clock_Range MSIK Clock Range
399   * @{
400   */
401 #define RCC_MSIKRANGE_0                 0x00000000U                                                                      /*!< MSIk = 48 MHz    */
402 #define RCC_MSIKRANGE_1                 RCC_ICSCR1_MSIKRANGE_0                                                           /*!< MSIk = 24 MHz    */
403 #define RCC_MSIKRANGE_2                 RCC_ICSCR1_MSIKRANGE_1                                                           /*!< MSIk = 16 MHz    */
404 #define RCC_MSIKRANGE_3                 (RCC_ICSCR1_MSIKRANGE_0 | RCC_ICSCR1_MSIKRANGE_1)                                /*!< MSIk = 12 MHz    */
405 #define RCC_MSIKRANGE_4                 RCC_ICSCR1_MSIKRANGE_2                                                           /*!< MSIk = 4 MHz     */
406 #define RCC_MSIKRANGE_5                 (RCC_ICSCR1_MSIKRANGE_0 | RCC_ICSCR1_MSIKRANGE_2)                                /*!< MSIk = 2 MHz     */
407 #define RCC_MSIKRANGE_6                 (RCC_ICSCR1_MSIKRANGE_1 | RCC_ICSCR1_MSIKRANGE_2)                                /*!< MSIk = 1.33 MHz  */
408 #define RCC_MSIKRANGE_7                 (RCC_ICSCR1_MSIKRANGE_0 | RCC_ICSCR1_MSIKRANGE_1 | RCC_ICSCR1_MSIKRANGE_2)       /*!< MSIk = 1 MHz     */
409 #define RCC_MSIKRANGE_8                 RCC_ICSCR1_MSIKRANGE_3                                                           /*!< MSIk = 3.072 MHz */
410 #define RCC_MSIKRANGE_9                 (RCC_ICSCR1_MSIKRANGE_0 | RCC_ICSCR1_MSIKRANGE_3)                                /*!< MSIk = 1.536 MHz */
411 #define RCC_MSIKRANGE_10                (RCC_ICSCR1_MSIKRANGE_1 | RCC_ICSCR1_MSIKRANGE_3)                                /*!< MSIk = 1.024 MHz */
412 #define RCC_MSIKRANGE_11                (RCC_ICSCR1_MSIKRANGE_0 | RCC_ICSCR1_MSIKRANGE_1 | RCC_ICSCR1_MSIKRANGE_3)       /*!< MSIk = 768 KHz   */
413 #define RCC_MSIKRANGE_12                (RCC_ICSCR1_MSIKRANGE_2 | RCC_ICSCR1_MSIKRANGE_3)                                /*!< MSIk = 400 KHz   */
414 #define RCC_MSIKRANGE_13                (RCC_ICSCR1_MSIKRANGE_0 | RCC_ICSCR1_MSIKRANGE_2 | RCC_ICSCR1_MSIKRANGE_3)       /*!< MSIk = 200 KHz   */
415 #define RCC_MSIKRANGE_14                (RCC_ICSCR1_MSIKRANGE_1 | RCC_ICSCR1_MSIKRANGE_2 | RCC_ICSCR1_MSIKRANGE_3)       /*!< MSIk = 133 KHz   */
416 #define RCC_MSIKRANGE_15                (RCC_ICSCR1_MSIKRANGE_0 | RCC_ICSCR1_MSIKRANGE_1 | RCC_ICSCR1_MSIKRANGE_2 |\
417                                          RCC_ICSCR1_MSIKRANGE_3)                                                         /*!< MSIk = 100 KHz   */
418 /**
419   * @}
420   */
421 
422 /** @defgroup RCC_System_Clock_Type System Clock Type
423   * @{
424   */
425 #define RCC_CLOCKTYPE_SYSCLK           0x00000001U  /*!< SYSCLK to configure */
426 #define RCC_CLOCKTYPE_HCLK             0x00000002U  /*!< HCLK to configure */
427 #define RCC_CLOCKTYPE_PCLK1            0x00000004U  /*!< PCLK1 to configure */
428 #define RCC_CLOCKTYPE_PCLK2            0x00000008U  /*!< PCLK2 to configure */
429 #define RCC_CLOCKTYPE_PCLK3            0x00000010U  /*!< PCLK3 to configure */
430 /**
431   * @}
432   */
433 
434 /** @defgroup RCC_System_Clock_Source System Clock Source
435   * @{
436   */
437 #define RCC_SYSCLKSOURCE_MSI             0x00000000U                        /*!< MSI selection as system clock */
438 #define RCC_SYSCLKSOURCE_HSI             RCC_CFGR1_SW_0                     /*!< HSI selection as system clock */
439 #define RCC_SYSCLKSOURCE_HSE             RCC_CFGR1_SW_1                     /*!< HSE selection as system clock */
440 #define RCC_SYSCLKSOURCE_PLLCLK          (RCC_CFGR1_SW_0 | RCC_CFGR1_SW_1)  /*!< PLL1 selection as system clock */
441 /**
442   * @}
443   */
444 
445 /** @defgroup RCC_System_Clock_Source_Status System Clock Source Status
446   * @{
447   */
448 #define RCC_SYSCLKSOURCE_STATUS_MSI      0x00000000U                         /*!< MSI used as system clock */
449 #define RCC_SYSCLKSOURCE_STATUS_HSI      RCC_CFGR1_SWS_0                     /*!< HSI used as system clock */
450 #define RCC_SYSCLKSOURCE_STATUS_HSE      RCC_CFGR1_SWS_1                     /*!< HSE used as system clock */
451 #define RCC_SYSCLKSOURCE_STATUS_PLLCLK   (RCC_CFGR1_SWS_0 | RCC_CFGR1_SWS_1) /*!< PLL1 used as system clock */
452 /**
453   * @}
454   */
455 
456 /** @defgroup RCC_AHB_Clock_Source AHB Clock Source
457   * @{
458   */
459 #define RCC_SYSCLK_DIV1                0x00000000U                                                                  /*!< SYSCLK not divided */
460 #define RCC_SYSCLK_DIV2                RCC_CFGR2_HPRE_3                                                             /*!< SYSCLK divided by 2 */
461 #define RCC_SYSCLK_DIV4                (RCC_CFGR2_HPRE_0 | RCC_CFGR2_HPRE_3)                                        /*!< SYSCLK divided by 4 */
462 #define RCC_SYSCLK_DIV8                (RCC_CFGR2_HPRE_1 | RCC_CFGR2_HPRE_3)                                        /*!< SYSCLK divided by 8 */
463 #define RCC_SYSCLK_DIV16               (RCC_CFGR2_HPRE_0 | RCC_CFGR2_HPRE_1 | RCC_CFGR2_HPRE_3)                     /*!< SYSCLK divided by 16 */
464 #define RCC_SYSCLK_DIV64               (RCC_CFGR2_HPRE_2 | RCC_CFGR2_HPRE_3)                                        /*!< SYSCLK divided by 64 */
465 #define RCC_SYSCLK_DIV128              (RCC_CFGR2_HPRE_0 | RCC_CFGR2_HPRE_2 | RCC_CFGR2_HPRE_3)                     /*!< SYSCLK divided by 128 */
466 #define RCC_SYSCLK_DIV256              (RCC_CFGR2_HPRE_1 | RCC_CFGR2_HPRE_2 | RCC_CFGR2_HPRE_3)                     /*!< SYSCLK divided by 256 */
467 #define RCC_SYSCLK_DIV512              (RCC_CFGR2_HPRE_0 | RCC_CFGR2_HPRE_1  | RCC_CFGR2_HPRE_2 | RCC_CFGR2_HPRE_3) /*!< SYSCLK divided by 512 */
468 /**
469   * @}
470   */
471 
472 /** @defgroup RCC_APB1_APB2_APB3_Clock_Source APB1 APB2 APB3 Clock Source
473   * @{
474   */
475 #define RCC_HCLK_DIV1                  (0x00000000U)                                               /*!< HCLK not divided */
476 #define RCC_HCLK_DIV2                  RCC_CFGR2_PPRE1_2                                           /*!< HCLK divided by 2 */
477 #define RCC_HCLK_DIV4                  (RCC_CFGR2_PPRE1_0 | RCC_CFGR2_PPRE1_2)                     /*!< HCLK divided by 4 */
478 #define RCC_HCLK_DIV8                  (RCC_CFGR2_PPRE1_1 | RCC_CFGR2_PPRE1_2)                     /*!< HCLK divided by 8 */
479 #define RCC_HCLK_DIV16                 (RCC_CFGR2_PPRE1_0 | RCC_CFGR2_PPRE1_1 | RCC_CFGR2_PPRE1_2) /*!< HCLK divided by 16 */
480 /**
481   * @}
482   */
483 
484 /** @defgroup RCC_RTC_Clock_Source RTC Clock Source
485   * @{
486   */
487 #define RCC_RTCCLKSOURCE_NO_CLK        0x00000000U             /*!< No clock used as RTC clock */
488 #define RCC_RTCCLKSOURCE_LSE           RCC_BDCR_RTCSEL_0       /*!< LSE oscillator clock used as RTC clock */
489 #define RCC_RTCCLKSOURCE_LSI           RCC_BDCR_RTCSEL_1       /*!< LSI oscillator clock used as RTC clock */
490 #define RCC_RTCCLKSOURCE_HSE_DIV32     RCC_BDCR_RTCSEL         /*!< HSE oscillator clock divided by 32 used as RTC clock */
491 /**
492   * @}
493   */
494 
495 /** @defgroup RCC_MCO_Index MCO Index
496   * @{
497   */
498 #define RCC_MCO1                       0x00000000U
499 #define RCC_MCO                        RCC_MCO1               /*!< MCO1 to be compliant with other families with 2 MCOs*/
500 /**
501   * @}
502   */
503 
504 /** @defgroup RCC_MCO1_Clock_Source MCO1 Clock Source
505   * @{
506   */
507 #define RCC_MCO1SOURCE_NOCLOCK         0x00000000U                                                /*!< MCO1 output disabled, no clock on MCO1 */
508 #define RCC_MCO1SOURCE_SYSCLK          RCC_CFGR1_MCOSEL_0                                         /*!< SYSCLK selection as MCO1 source */
509 #define RCC_MCO1SOURCE_MSI             RCC_CFGR1_MCOSEL_1                                         /*!< MSI selection as MCO1 source */
510 #define RCC_MCO1SOURCE_HSI             (RCC_CFGR1_MCOSEL_0| RCC_CFGR1_MCOSEL_1)                   /*!< HSI selection as MCO1 source */
511 #define RCC_MCO1SOURCE_HSE             RCC_CFGR1_MCOSEL_2                                         /*!< HSE selection as MCO1 source */
512 #define RCC_MCO1SOURCE_PLL1CLK         (RCC_CFGR1_MCOSEL_0|RCC_CFGR1_MCOSEL_2)                    /*!< PLL1CLK selection as MCO1 source */
513 #define RCC_MCO1SOURCE_LSI             (RCC_CFGR1_MCOSEL_1|RCC_CFGR1_MCOSEL_2)                    /*!< LSI selection as MCO1 source */
514 #define RCC_MCO1SOURCE_LSE             (RCC_CFGR1_MCOSEL_0|RCC_CFGR1_MCOSEL_1|RCC_CFGR1_MCOSEL_2) /*!< LSE selection as MCO1 source */
515 #define RCC_MCO1SOURCE_HSI48           RCC_CFGR1_MCOSEL_3                                         /*!< HSI48 selection as MCO1 source */
516 #define RCC_MCO1SOURCE_MSIK            (RCC_CFGR1_MCOSEL_0| RCC_CFGR1_MCOSEL_3)                   /*!< MSIK selection as MCO1 source */
517 /**
518   * @}
519   */
520 
521 /** @defgroup RCC_MCOx_Clock_Prescaler MCO1 Clock Prescaler
522   * @{
523   */
524 #define RCC_MCODIV_1                   0x00000000U                            /*!< MCO is divided by 1 */
525 #define RCC_MCODIV_2                   RCC_CFGR1_MCOPRE_0                       /*!< MCO is divided by 2 */
526 #define RCC_MCODIV_4                   RCC_CFGR1_MCOPRE_1                       /*!< MCO is divided by 4 */
527 #define RCC_MCODIV_8                   (RCC_CFGR1_MCOPRE_0 | RCC_CFGR1_MCOPRE_1)/*!< MCO is divided by 8 */
528 #define RCC_MCODIV_16                  RCC_CFGR1_MCOPRE_2                       /*!< MCO is divided by 16 */
529 /**
530   * @}
531   */
532 
533 /** @defgroup RCC_Interrupt Interrupts
534   * @{
535   */
536 #define RCC_IT_LSIRDY                  RCC_CIFR_LSIRDYF      /*!< LSI Ready Interrupt flag */
537 #define RCC_IT_LSERDY                  RCC_CIFR_LSERDYF      /*!< LSE Ready Interrupt flag */
538 #define RCC_IT_MSIRDY                  RCC_CIFR_MSISRDYF     /*!< MSI Ready Interrupt flag */
539 #define RCC_IT_HSIRDY                  RCC_CIFR_HSIRDYF      /*!< HSI16 Ready Interrupt flag */
540 #define RCC_IT_HSERDY                  RCC_CIFR_HSERDYF      /*!< HSE Ready Interrupt flag */
541 #define RCC_IT_HSI48RDY                RCC_CIFR_HSI48RDYF    /*!< HSI48 Ready Interrupt flag */
542 #define RCC_IT_PLLRDY                  RCC_CIFR_PLL1RDYF     /*!< PLL1 Ready Interrupt flag */
543 #define RCC_IT_PLL2RDY                 RCC_CIFR_PLL2RDYF     /*!< PLL2 Ready Interrupt flag */
544 #define RCC_IT_PLL3RDY                 RCC_CIFR_PLL3RDYF     /*!< PLL3 Ready Interrupt flag */
545 #define RCC_IT_CSS                     RCC_CIFR_CSSF         /*!< Clock Security System Interrupt flag */
546 #define RCC_IT_MSIKRDY                 RCC_CIFR_MSIKRDYF     /*!< MSIK Ready Interrupt flag */
547 #define RCC_IT_SHSIRDY                 RCC_CIFR_SHSIRDYF     /*!< SHSI Ready Interrupt flag */
548 /**
549   * @}
550   */
551 
552 /** @defgroup RCC_Flag Flags
553   *        Elements values convention: XXXYYYYYb
554   *           - YYYYY  : Flag position in the register
555   *           - XXX  : Register index
556   *                 - 001: CR register
557   *                 - 010: BDCR register
558   *                 - 011: CSR register
559   *                 - 100: CRRCR register
560   * @{
561   */
562 /* Flags in the CR register */
563 #define RCC_FLAG_MSIRDY                ((uint32_t)((CR_REG_INDEX << 5U) | RCC_CR_MSISRDY_Pos))  /*!< MSI Ready flag */
564 #define RCC_FLAG_MSIKRDY               ((uint32_t)((CR_REG_INDEX << 5U) | RCC_CR_MSIKRDY_Pos))  /*!< MSI Ready flag */
565 #define RCC_FLAG_HSIRDY                ((uint32_t)((CR_REG_INDEX << 5U) | RCC_CR_HSIRDY_Pos))   /*!< HSI Ready flag */
566 #define RCC_FLAG_HSERDY                ((uint32_t)((CR_REG_INDEX << 5U) | RCC_CR_HSERDY_Pos))   /*!< HSE Ready flag */
567 #define RCC_FLAG_PLL1RDY               ((uint32_t)((CR_REG_INDEX << 5U) | RCC_CR_PLL1RDY_Pos))  /*!< PLL Ready flag */
568 #define RCC_FLAG_PLL2RDY               ((uint32_t)((CR_REG_INDEX << 5U) | RCC_CR_PLL2RDY_Pos))  /*!< PLL2 Ready flag */
569 #define RCC_FLAG_PLL3RDY               ((uint32_t)((CR_REG_INDEX << 5U) | RCC_CR_PLL3RDY_Pos))  /*!< PLL3 Ready flag */
570 #define RCC_FLAG_SHSIRDY               ((uint32_t)((CR_REG_INDEX << 5U) | RCC_CR_SHSIRDY_Pos))  /*!< SHSI Ready flag */
571 #define RCC_FLAG_HSI48RDY              ((uint32_t)((CR_REG_INDEX << 5U) | RCC_CR_HSI48RDY_Pos)) /*!< HSI48 Ready flag */
572 
573 /* Flags in the BDCR register */
574 #define RCC_FLAG_LSERDY                ((uint32_t)((BDCR_REG_INDEX << 5U) | RCC_BDCR_LSERDY_Pos))    /*!< LSE Ready flag */
575 #define RCC_FLAG_LSESYSRDY             ((uint32_t)((BDCR_REG_INDEX << 5U) | RCC_BDCR_LSESYSRDY_Pos)) /*!< LSESYS Ready flag */
576 #define RCC_FLAG_LSECSSD               ((uint32_t)((BDCR_REG_INDEX << 5U) | RCC_BDCR_LSECSSD_Pos))   /*!< LSE Clock Security System Interrupt flag */
577 #define RCC_FLAG_LSIRDY                ((uint32_t)((BDCR_REG_INDEX << 5U) | RCC_BDCR_LSIRDY_Pos))    /*!< LSI Ready flag */
578 
579 /* Flags in the CSR register */
580 #define RCC_FLAG_RMVF                  ((uint32_t)((CSR_REG_INDEX << 5U) | RCC_CSR_RMVF_Pos))     /*!< Remove reset flag */
581 #define RCC_FLAG_OBLRST                ((uint32_t)((CSR_REG_INDEX << 5U) | RCC_CSR_OBLRSTF_Pos))  /*!< Option Byte Loader reset flag */
582 #define RCC_FLAG_PINRST                ((uint32_t)((CSR_REG_INDEX << 5U) | RCC_CSR_PINRSTF_Pos))  /*!< PIN reset flag */
583 #define RCC_FLAG_BORRST                ((uint32_t)((CSR_REG_INDEX << 5U) | RCC_CSR_BORRSTF_Pos))  /*!< BOR reset flag */
584 #define RCC_FLAG_SFTRST                ((uint32_t)((CSR_REG_INDEX << 5U) | RCC_CSR_SFTRSTF_Pos))  /*!< Software Reset flag */
585 #define RCC_FLAG_IWDGRST               ((uint32_t)((CSR_REG_INDEX << 5U) | RCC_CSR_IWDGRSTF_Pos)) /*!< Independent Watchdog reset flag */
586 #define RCC_FLAG_WWDGRST               ((uint32_t)((CSR_REG_INDEX << 5U) | RCC_CSR_WWDGRSTF_Pos)) /*!< Window watchdog reset flag */
587 #define RCC_FLAG_LPWRRST               ((uint32_t)((CSR_REG_INDEX << 5U) | RCC_CSR_LPWRRSTF_Pos)) /*!< Low-Power reset flag */
588 
589 /**
590   * @}
591   */
592 
593 /** @defgroup RCC_LSEDrive_Config LSE Drive Config
594   * @{
595   */
596 #define RCC_LSEDRIVE_LOW                 0x00000000U            /*!< LSE low drive capability */
597 #define RCC_LSEDRIVE_MEDIUMLOW           RCC_BDCR_LSEDRV_0      /*!< LSE medium low drive capability */
598 #define RCC_LSEDRIVE_MEDIUMHIGH          RCC_BDCR_LSEDRV_1      /*!< LSE medium high drive capability */
599 #define RCC_LSEDRIVE_HIGH                RCC_BDCR_LSEDRV        /*!< LSE high drive capability */
600 /**
601   * @}
602   */
603 
604 /** @defgroup RCC_Stop_WakeUpClock Wake-Up from STOP Clock
605   * @{
606   */
607 #define RCC_STOP_WAKEUPCLOCK_MSI       0x00000000U              /*!< MSI selection after wake-up from STOP */
608 #define RCC_STOP_WAKEUPCLOCK_HSI       RCC_CFGR1_STOPWUCK       /*!< HSI selection after wake-up from STOP */
609 /**
610   * @}
611   */
612 
613 /** @defgroup RCC_Stop_KernelWakeUpClock  RCC Stop KernelWakeUpClock
614   * @{
615   */
616 #define RCC_STOP_KERWAKEUPCLOCK_MSI       0x00000000U                /*!< MSI kernel clock selection after wake-up from STOP */
617 #define RCC_STOP_KERWAKEUPCLOCK_HSI        RCC_CFGR1_STOPKERWUCK     /*!< HSI kernel clock selection after wake-up from STOP */
618 
619 /**
620   * @}
621   */
622 
623 /** @defgroup RCC_items RCC items
624   * @brief RCC items to configure attributes on
625   * @{
626   */
627 #define RCC_HSI                        RCC_SECCFGR_HSISEC
628 #define RCC_HSE                        RCC_SECCFGR_HSESEC
629 #define RCC_MSI                        RCC_SECCFGR_MSISEC
630 #define RCC_LSI                        RCC_SECCFGR_LSISEC
631 #define RCC_LSE                        RCC_SECCFGR_LSESEC
632 #define RCC_SYSCLK                     RCC_SECCFGR_SYSCLKSEC
633 #define RCC_PRESC                      RCC_SECCFGR_PRESCSEC
634 #define RCC_PLL1                       RCC_SECCFGR_PLL1SEC
635 #define RCC_PLL2                       RCC_SECCFGR_PLL2SEC
636 #define RCC_PLL3                       RCC_SECCFGR_PLL3SEC
637 #define RCC_CLK48M                     RCC_SECCFGR_CLK48MSEC
638 #define RCC_HSI48                      RCC_SECCFGR_HSI48SEC
639 #define RCC_RMVF                       RCC_SECCFGR_RMVFSEC
640 #define RCC_ALL                        (RCC_HSI|RCC_HSE|RCC_MSI|RCC_LSI|RCC_LSE|RCC_HSI48| \
641                                         RCC_SYSCLK|RCC_PRESC|RCC_PLL1|RCC_PLL2| \
642                                         RCC_PLL3|RCC_CLK48M|RCC_RMVF)
643 /**
644   * @}
645   */
646 
647 /** @defgroup RCC_attributes RCC attributes
648   * @brief RCC privilege/non-privilege and secure/non-secure attributes
649   * @{
650   */
651 #define RCC_NSEC_PRIV                  0x00000001U        /*!< Non-secure Privilege attribute item     */
652 #define RCC_NSEC_NPRIV                 0x00000002U        /*!< Non-secure Non-privilege attribute item */
653 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
654 #define RCC_SEC_PRIV                   0x00000010U        /*!< Secure Privilege attribute item         */
655 #define RCC_SEC_NPRIV                  0x00000020U        /*!< Secure Non-privilege attribute item     */
656 #endif /* __ARM_FEATURE_CMSE */
657 /**
658   * @}
659   */
660 
661 /* Exported macros -----------------------------------------------------------*/
662 
663 /** @defgroup RCC_Exported_Macros RCC Exported Macros
664   * @{
665   */
666 
667 /** @defgroup RCC_AHB1_Peripheral_Clock_Enable_Disable AHB1 Peripheral Clock Enable Disable
668   * @brief  Enable or disable the AHB1 peripheral clock.
669   * @note   After reset, the peripheral clock (used for registers read/write access)
670   *         is disabled and the application software has to enable this clock before
671   *         using it.
672   * @{
673   */
674 #define __HAL_RCC_GPDMA1_CLK_ENABLE()            do { \
675                                                       __IO uint32_t tmpreg; \
676                                                       SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPDMA1EN); \
677      /* Delay after an RCC peripheral clock enabling */ \
678                                                       tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPDMA1EN); \
679                                                       UNUSED(tmpreg); \
680                                                     } while(0)
681 #define __HAL_RCC_CORDIC_CLK_ENABLE()            do { \
682                                                       __IO uint32_t tmpreg; \
683                                                       SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CORDICEN); \
684      /* Delay after an RCC peripheral clock enabling */ \
685                                                       tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CORDICEN); \
686                                                       UNUSED(tmpreg); \
687                                                     } while(0)
688 #define __HAL_RCC_FMAC_CLK_ENABLE()            do { \
689                                                     __IO uint32_t tmpreg; \
690                                                     SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FMACEN); \
691    /* Delay after an RCC peripheral clock enabling */ \
692                                                     tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FMACEN); \
693                                                     UNUSED(tmpreg); \
694                                                   } while(0)
695 #define __HAL_RCC_TSC_CLK_ENABLE()             do { \
696                                                     __IO uint32_t tmpreg; \
697                                                     SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN); \
698    /* Delay after an RCC peripheral clock enabling */ \
699                                                     tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN); \
700                                                     UNUSED(tmpreg); \
701                                                   } while(0)
702 #define __HAL_RCC_CRC_CLK_ENABLE()             do { \
703                                                     __IO uint32_t tmpreg; \
704                                                     SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN); \
705    /* Delay after an RCC peripheral clock enabling */ \
706                                                     tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN); \
707                                                     UNUSED(tmpreg); \
708                                                   } while(0)
709 #define __HAL_RCC_RAMCFG_CLK_ENABLE()             do { \
710                                                        __IO uint32_t tmpreg; \
711                                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_RAMCFGEN); \
712       /* Delay after an RCC peripheral clock enabling */ \
713                                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_RAMCFGEN); \
714                                                        UNUSED(tmpreg); \
715                                                      } while(0)
716 #define __HAL_RCC_FLASH_CLK_ENABLE()           do { \
717                                                     __IO uint32_t tmpreg; \
718                                                     SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN); \
719    /* Delay after an RCC peripheral clock enabling */ \
720                                                     tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN); \
721                                                     UNUSED(tmpreg); \
722                                                   } while(0)
723 
724 #define __HAL_RCC_MDF1_CLK_ENABLE()            do { \
725                                                     __IO uint32_t tmpreg; \
726                                                     SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_MDF1EN); \
727    /* Delay after an RCC peripheral clock enabling */ \
728                                                     tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_MDF1EN); \
729                                                     UNUSED(tmpreg); \
730                                                   } while(0)
731 
732 #define __HAL_RCC_DMA2D_CLK_ENABLE()            do { \
733                                                      __IO uint32_t tmpreg; \
734                                                      SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2DEN); \
735     /* Delay after an RCC peripheral clock enabling */ \
736                                                      tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2DEN); \
737                                                      UNUSED(tmpreg); \
738                                                    } while(0)
739 
740 #define __HAL_RCC_GTZC1_CLK_ENABLE()            do { \
741                                                      __IO uint32_t tmpreg; \
742                                                      SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GTZC1EN); \
743     /* Delay after an RCC peripheral clock enabling */ \
744                                                      tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GTZC1EN); \
745                                                      UNUSED(tmpreg); \
746                                                    } while(0)
747 
748 #define __HAL_RCC_BKPSRAM_CLK_ENABLE()          do { \
749                                                      __IO uint32_t tmpreg; \
750                                                      SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_BKPSRAMEN); \
751     /* Delay after an RCC peripheral clock enabling */ \
752                                                      tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_BKPSRAMEN); \
753                                                      UNUSED(tmpreg); \
754                                                    } while(0)
755 
756 #define __HAL_RCC_DCACHE1_CLK_ENABLE()          do { \
757                                                      __IO uint32_t tmpreg; \
758                                                      SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DCACHE1EN); \
759     /* Delay after an RCC peripheral clock enabling */ \
760                                                      tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DCACHE1EN); \
761                                                      UNUSED(tmpreg); \
762                                                    } while(0)
763 
764 #define __HAL_RCC_SRAM1_CLK_ENABLE()           do { \
765                                                     __IO uint32_t tmpreg; \
766                                                     SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_SRAM1EN); \
767    /* Delay after an RCC peripheral clock enabling */ \
768                                                     tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_SRAM1EN); \
769                                                     UNUSED(tmpreg); \
770                                                   } while(0)
771 
772 #define __HAL_RCC_GPDMA1_CLK_DISABLE()          CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPDMA1EN)
773 
774 #define __HAL_RCC_CORDIC_CLK_DISABLE()         CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CORDICEN)
775 
776 #define __HAL_RCC_FMAC_CLK_DISABLE()           CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FMACEN)
777 
778 #define __HAL_RCC_MDF1_CLK_DISABLE()           CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_MDF1EN)
779 
780 #define __HAL_RCC_FLASH_CLK_DISABLE()          CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN)
781 
782 #define __HAL_RCC_CRC_CLK_DISABLE()            CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN)
783 
784 #define __HAL_RCC_TSC_CLK_DISABLE()            CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN)
785 
786 #define __HAL_RCC_RAMCFG_CLK_DISABLE()         CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_RAMCFGEN)
787 
788 #define __HAL_RCC_DMA2D_CLK_DISABLE()          CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2DEN)
789 
790 #define __HAL_RCC_GTZC1_CLK_DISABLE()          CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GTZC1EN)
791 
792 #define __HAL_RCC_BKPSRAM_CLK_DISABLE()        CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_BKPSRAMEN)
793 
794 #define __HAL_RCC_DCACHE1_CLK_DISABLE()        CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DCACHE1EN)
795 
796 #define __HAL_RCC_SRAM1_CLK_DISABLE()          CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_SRAM1EN)
797 /**
798   * @}
799   */
800 
801 /** @defgroup RCC_AHB2_Peripheral_Clock_Enable_Disable AHB2 Peripheral Clock Enable Disable
802   * @brief  Enable or disable the AHB2 peripheral clock.
803   * @note   After reset, the peripheral clock (used for registers read/write access)
804   *         is disabled and the application software has to enable this clock before
805   *         using it.
806   * @{
807   */
808 #define __HAL_RCC_GPIOA_CLK_ENABLE()           do { \
809                                                     __IO uint32_t tmpreg; \
810                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOAEN); \
811    /* Delay after an RCC peripheral clock enabling */ \
812                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOAEN); \
813                                                     UNUSED(tmpreg); \
814                                                   } while(0)
815 
816 #define __HAL_RCC_GPIOB_CLK_ENABLE()           do { \
817                                                     __IO uint32_t tmpreg; \
818                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOBEN); \
819    /* Delay after an RCC peripheral clock enabling */ \
820                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOBEN); \
821                                                     UNUSED(tmpreg); \
822                                                   } while(0)
823 
824 #define __HAL_RCC_GPIOC_CLK_ENABLE()           do { \
825                                                     __IO uint32_t tmpreg; \
826                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOCEN); \
827    /* Delay after an RCC peripheral clock enabling */ \
828                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOCEN); \
829                                                     UNUSED(tmpreg); \
830                                                   } while(0)
831 
832 #define __HAL_RCC_GPIOD_CLK_ENABLE()           do { \
833                                                     __IO uint32_t tmpreg; \
834                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIODEN); \
835    /* Delay after an RCC peripheral clock enabling */ \
836                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIODEN); \
837                                                     UNUSED(tmpreg); \
838                                                   } while(0)
839 
840 #define __HAL_RCC_GPIOE_CLK_ENABLE()           do { \
841                                                     __IO uint32_t tmpreg; \
842                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOEEN); \
843    /* Delay after an RCC peripheral clock enabling */ \
844                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOEEN); \
845                                                     UNUSED(tmpreg); \
846                                                   } while(0)
847 
848 #define __HAL_RCC_GPIOF_CLK_ENABLE()           do { \
849                                                     __IO uint32_t tmpreg; \
850                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOFEN); \
851    /* Delay after an RCC peripheral clock enabling */ \
852                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOFEN); \
853                                                     UNUSED(tmpreg); \
854                                                   } while(0)
855 
856 #define __HAL_RCC_GPIOG_CLK_ENABLE()           do { \
857                                                     __IO uint32_t tmpreg; \
858                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOGEN); \
859    /* Delay after an RCC peripheral clock enabling */ \
860                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOGEN); \
861                                                     UNUSED(tmpreg); \
862                                                   } while(0)
863 
864 #define __HAL_RCC_GPIOH_CLK_ENABLE()           do { \
865                                                     __IO uint32_t tmpreg; \
866                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOHEN); \
867    /* Delay after an RCC peripheral clock enabling */ \
868                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOHEN); \
869                                                     UNUSED(tmpreg); \
870                                                   } while(0)
871 
872 #define __HAL_RCC_GPIOI_CLK_ENABLE()           do { \
873                                                     __IO uint32_t tmpreg; \
874                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOIEN); \
875    /* Delay after an RCC peripheral clock enabling */ \
876                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOIEN); \
877                                                     UNUSED(tmpreg); \
878                                                   } while(0)
879 
880 #define __HAL_RCC_ADC1_CLK_ENABLE()             do { \
881                                                      __IO uint32_t tmpreg; \
882                                                      SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_ADC1EN); \
883     /* Delay after an RCC peripheral clock enabling */ \
884                                                      tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_ADC1EN); \
885                                                      UNUSED(tmpreg); \
886                                                    } while(0)
887 
888 #define __HAL_RCC_DCMI_PSSI_CLK_ENABLE()             do { \
889                                                           __IO uint32_t tmpreg; \
890                                                           SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_DCMI_PSSIEN); \
891          /* Delay after an RCC peripheral clock enabling */ \
892                                                           tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_DCMI_PSSIEN); \
893                                                           UNUSED(tmpreg); \
894                                                         } while(0)
895 
896 #define __HAL_RCC_USB_CLK_ENABLE()             do { \
897                                                     __IO uint32_t tmpreg; \
898                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTGEN); \
899    /* Delay after an RCC peripheral clock enabling */ \
900                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTGEN); \
901                                                     UNUSED(tmpreg); \
902                                                   } while(0)
903 
904 #if defined(AES)
905 #define __HAL_RCC_AES_CLK_ENABLE()             do { \
906                                                     __IO uint32_t tmpreg; \
907                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_AESEN); \
908    /* Delay after an RCC peripheral clock enabling */ \
909                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_AESEN); \
910                                                     UNUSED(tmpreg); \
911                                                   } while(0)
912 #endif /* AES */
913 
914 #if defined(HASH)
915 #define __HAL_RCC_HASH_CLK_ENABLE()             do { \
916                                                      __IO uint32_t tmpreg; \
917                                                      SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_HASHEN); \
918     /* Delay after an RCC peripheral clock enabling */ \
919                                                      tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_HASHEN); \
920                                                      UNUSED(tmpreg); \
921                                                    } while(0)
922 #endif /* HASH */
923 
924 #define __HAL_RCC_RNG_CLK_ENABLE()             do { \
925                                                     __IO uint32_t tmpreg; \
926                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_RNGEN); \
927    /* Delay after an RCC peripheral clock enabling */ \
928                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_RNGEN); \
929                                                     UNUSED(tmpreg); \
930                                                   } while(0)
931 
932 #define __HAL_RCC_PKA_CLK_ENABLE()             do { \
933                                                     __IO uint32_t tmpreg; \
934                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_PKAEN); \
935    /* Delay after an RCC peripheral clock enabling */ \
936                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_PKAEN); \
937                                                     UNUSED(tmpreg); \
938                                                   } while(0)
939 
940 #define __HAL_RCC_SAES_CLK_ENABLE()         do { \
941                                                  __IO uint32_t tmpreg; \
942                                                  SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SAESEN); \
943    /* Delay after an RCC peripheral clock enabling */ \
944                                                  tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SAESEN); \
945                                                  UNUSED(tmpreg); \
946                                                } while(0)
947 
948 #define __HAL_RCC_OSPIM_CLK_ENABLE()           do { \
949                                                     __IO uint32_t tmpreg; \
950                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OCTOSPIMEN); \
951    /* Delay after an RCC peripheral clock enabling */ \
952                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OCTOSPIMEN); \
953                                                     UNUSED(tmpreg); \
954                                                   } while(0)
955 
956 #define __HAL_RCC_OTFDEC1_CLK_ENABLE()         do { \
957                                                     __IO uint32_t tmpreg; \
958                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTFDEC1EN); \
959    /* Delay after an RCC peripheral clock enabling */ \
960                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTFDEC1EN); \
961                                                     UNUSED(tmpreg); \
962                                                   } while(0)
963 
964 #define __HAL_RCC_OTFDEC2_CLK_ENABLE()         do { \
965                                                     __IO uint32_t tmpreg; \
966                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTFDEC2EN); \
967    /* Delay after an RCC peripheral clock enabling */ \
968                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTFDEC2EN); \
969                                                     UNUSED(tmpreg); \
970                                                   } while(0)
971 
972 #define __HAL_RCC_SDMMC1_CLK_ENABLE()          do { \
973                                                     __IO uint32_t tmpreg; \
974                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SDMMC1EN); \
975    /* Delay after an RCC peripheral clock enabling */ \
976                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SDMMC1EN); \
977                                                     UNUSED(tmpreg); \
978                                                   } while(0)
979 
980 #define __HAL_RCC_SDMMC2_CLK_ENABLE()          do { \
981                                                     __IO uint32_t tmpreg; \
982                                                     SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SDMMC2EN); \
983    /* Delay after an RCC peripheral clock enabling */ \
984                                                     tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SDMMC2EN); \
985                                                     UNUSED(tmpreg); \
986                                                   } while(0)
987 
988 #define __HAL_RCC_SRAM2_CLK_ENABLE()          do { \
989                                                    __IO uint32_t tmpreg; \
990                                                    SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SRAM2EN); \
991   /* Delay after an RCC peripheral clock enabling */ \
992                                                    tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SRAM2EN); \
993                                                    UNUSED(tmpreg); \
994                                                  } while(0)
995 
996 #define __HAL_RCC_SRAM3_CLK_ENABLE()          do { \
997                                                    __IO uint32_t tmpreg; \
998                                                    SET_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SRAM3EN); \
999   /* Delay after an RCC peripheral clock enabling */ \
1000                                                    tmpreg = READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SRAM3EN); \
1001                                                    UNUSED(tmpreg); \
1002                                                  } while(0)
1003 
1004 #define __HAL_RCC_FMC_CLK_ENABLE()             do { \
1005                                                     __IO uint32_t tmpreg; \
1006                                                     SET_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_FSMCEN); \
1007    /* Delay after an RCC peripheral clock enabling */ \
1008                                                     tmpreg = READ_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_FSMCEN); \
1009                                                     UNUSED(tmpreg); \
1010                                                   } while(0)
1011 
1012 #define __HAL_RCC_OSPI1_CLK_ENABLE()           do { \
1013                                                     __IO uint32_t tmpreg; \
1014                                                     SET_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_OCTOSPI1EN); \
1015    /* Delay after an RCC peripheral clock enabling */ \
1016                                                     tmpreg = READ_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_OCTOSPI1EN); \
1017                                                     UNUSED(tmpreg); \
1018                                                   } while(0)
1019 
1020 #define __HAL_RCC_OSPI2_CLK_ENABLE()           do { \
1021                                                     __IO uint32_t tmpreg; \
1022                                                     SET_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_OCTOSPI2EN); \
1023    /* Delay after an RCC peripheral clock enabling */ \
1024                                                     tmpreg = READ_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_OCTOSPI2EN); \
1025                                                     UNUSED(tmpreg); \
1026                                                   } while(0)
1027 
1028 #define __HAL_RCC_GPIOA_CLK_DISABLE()          CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOAEN)
1029 
1030 #define __HAL_RCC_GPIOB_CLK_DISABLE()          CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOBEN)
1031 
1032 #define __HAL_RCC_GPIOC_CLK_DISABLE()          CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOCEN)
1033 
1034 #define __HAL_RCC_GPIOD_CLK_DISABLE()          CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIODEN)
1035 
1036 #define __HAL_RCC_GPIOE_CLK_DISABLE()          CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOEEN)
1037 
1038 #define __HAL_RCC_GPIOF_CLK_DISABLE()          CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOFEN)
1039 
1040 #define __HAL_RCC_GPIOG_CLK_DISABLE()          CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOGEN)
1041 
1042 #define __HAL_RCC_GPIOH_CLK_DISABLE()          CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOHEN)
1043 
1044 #define __HAL_RCC_GPIOI_CLK_DISABLE()          CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOIEN)
1045 
1046 #define __HAL_RCC_ADC1_CLK_DISABLE()           CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_ADC1EN)
1047 
1048 #define __HAL_RCC_DCMI_PSSI_CLK_DISABLE()      CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_DCMI_PSSIEN)
1049 
1050 #define __HAL_RCC_USB_CLK_DISABLE()            CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTGEN)
1051 
1052 #if defined(AES)
1053 #define __HAL_RCC_AES_CLK_DISABLE()            CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_AESEN)
1054 #endif /* AES */
1055 
1056 #if defined(HASH)
1057 #define __HAL_RCC_HASH_CLK_DISABLE()           CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_HASHEN)
1058 #endif /* HASH */
1059 
1060 #define __HAL_RCC_RNG_CLK_DISABLE()            CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_RNGEN)
1061 
1062 #define __HAL_RCC_PKA_CLK_DISABLE()            CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_PKAEN)
1063 
1064 #define __HAL_RCC_SAES_CLK_DISABLE()           CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SAESEN)
1065 
1066 #define __HAL_RCC_OSPIM_CLK_DISABLE()          CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OCTOSPIMEN)
1067 
1068 #define __HAL_RCC_OTFDEC1_CLK_DISABLE()        CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTFDEC1EN)
1069 
1070 #define __HAL_RCC_OTFDEC2_CLK_DISABLE()        CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTFDEC2EN)
1071 
1072 #define __HAL_RCC_SDMMC1_CLK_DISABLE()         CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SDMMC1EN)
1073 
1074 #define __HAL_RCC_SDMMC2_CLK_DISABLE()         CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SDMMC2EN)
1075 
1076 #define __HAL_RCC_SRAM2_CLK_DISABLE()          CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SRAM2EN)
1077 
1078 #define __HAL_RCC_SRAM3_CLK_DISABLE()          CLEAR_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SRAM3EN)
1079 
1080 #define __HAL_RCC_FMC_CLK_DISABLE()            CLEAR_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_FSMCEN)
1081 
1082 #define __HAL_RCC_OSPI1_CLK_DISABLE()          CLEAR_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_OCTOSPI1EN)
1083 
1084 #define __HAL_RCC_OSPI2_CLK_DISABLE()          CLEAR_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_OCTOSPI2EN)
1085 /**
1086   * @}
1087   */
1088 
1089 /** @defgroup BUS AHB APB  Peripheral Clock Enable Disable
1090   * @{
1091   */
1092 #define __HAL_RCC_AHB1_CLK_DISABLE()       SET_BIT(RCC->CFGR2, RCC_CFGR2_AHB1DIS);
1093 
1094 #define __HAL_RCC_AHB2_1_CLK_DISABLE()     SET_BIT(RCC->CFGR2, RCC_CFGR2_AHB2DIS1);
1095 
1096 #define __HAL_RCC_AHB2_2_CLK_DISABLE()     SET_BIT(RCC->CFGR2, RCC_CFGR2_AHB2DIS2);
1097 
1098 #define __HAL_RCC_AHB3_CLK_DISABLE()       SET_BIT(RCC->CFGR3, RCC_CFGR3_AHB3DIS);
1099 
1100 #define __HAL_RCC_APB1_CLK_DISABLE()       SET_BIT(RCC->CFGR2, RCC_CFGR2_APB1DIS);
1101 
1102 #define __HAL_RCC_APB2_CLK_DISABLE()       SET_BIT(RCC->CFGR2, RCC_CFGR2_APB2DIS);
1103 
1104 #define __HAL_RCC_APB3_CLK_DISABLE()       SET_BIT(RCC->CFGR3, RCC_CFGR3_APB3DIS);
1105 
1106 #define __HAL_RCC_AHB1_CLK_ENABLE()           do { \
1107                                                    __IO uint32_t tmpreg; \
1108                                                    CLEAR_BIT(RCC->CFGR2, RCC_CFGR2_AHB1DIS); \
1109                                                    tmpreg = READ_BIT(RCC->CFGR2, RCC_CFGR2_AHB1DIS); \
1110                                                    UNUSED(tmpreg); \
1111                                                  } while(0)
1112 
1113 #define __HAL_RCC_AHB2_1_CLK_ENABLE()         do { \
1114                                                    __IO uint32_t tmpreg; \
1115                                                    CLEAR_BIT(RCC->CFGR2, RCC_CFGR2_AHB2DIS1); \
1116                                                    tmpreg = READ_BIT(RCC->CFGR2, RCC_CFGR2_AHB2DIS1); \
1117                                                    UNUSED(tmpreg); \
1118                                                  } while(0)
1119 
1120 #define __HAL_RCC_AHB2_2_CLK_ENABLE()         do { \
1121                                                    __IO uint32_t tmpreg; \
1122                                                    CLEAR_BIT(RCC->CFGR2, RCC_CFGR2_AHB2DIS2); \
1123                                                    tmpreg = READ_BIT(RCC->CFGR2, RCC_CFGR2_AHB2DIS2); \
1124                                                    UNUSED(tmpreg); \
1125                                                  } while(0)
1126 
1127 
1128 #define __HAL_RCC_AHB3_CLK_ENABLE()          do { \
1129                                                   __IO uint32_t tmpreg; \
1130                                                   CLEAR_BIT(RCC->CFGR3, RCC_CFGR3_AHB3DIS); \
1131                                                   tmpreg = READ_BIT(RCC->CFGR3, RCC_CFGR3_AHB3DIS); \
1132                                                   UNUSED(tmpreg); \
1133                                                 } while(0)
1134 
1135 #define __HAL_RCC_APB1_CLK_ENABLE()          do { \
1136                                                   __IO uint32_t tmpreg; \
1137                                                   CLEAR_BIT(RCC->CFGR2, RCC_CFGR2_APB1DIS); \
1138                                                   tmpreg = READ_BIT(RCC->CFGR2, RCC_CFGR2_APB1DIS); \
1139                                                   UNUSED(tmpreg); \
1140                                                 } while(0)
1141 
1142 #define __HAL_RCC_APB2_CLK_ENABLE()          do { \
1143                                                   __IO uint32_t tmpreg; \
1144                                                   CLEAR_BIT(RCC->CFGR2, RCC_CFGR2_APB2DIS); \
1145                                                   tmpreg = READ_BIT(RCC->CFGR2, RCC_CFGR2_APB2DIS); \
1146                                                   UNUSED(tmpreg); \
1147                                                 } while(0)
1148 
1149 #define __HAL_RCC_APB3_CLK_ENABLE()          do { \
1150                                                   __IO uint32_t tmpreg; \
1151                                                   CLEAR_BIT(RCC->CFGR3, RCC_CFGR3_APB3DIS); \
1152                                                   tmpreg = READ_BIT(RCC->CFGR3, RCC_CFGR3_APB3DIS); \
1153                                                   UNUSED(tmpreg); \
1154                                                 } while(0)
1155 
1156 /**
1157   * @}
1158   */
1159 
1160 /** @defgroup RCC_AHB3_Clock_Enable_Disable AHB3ENR Peripheral Clock Enable Disable
1161   * @brief  Enable or disable the AHB3ENR peripheral clock.
1162   * @note   After reset, the peripheral clock (used for registers read/write access)
1163   *         is disabled and the application software has to enable this clock before
1164   *         using it.
1165   * @{
1166   */
1167 #define __HAL_RCC_LPGPIO1_CLK_ENABLE()         do { \
1168                                                     __IO uint32_t tmpreg; \
1169                                                     SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_LPGPIO1EN); \
1170    /* Delay after an RCC peripheral clock enabling */ \
1171                                                     tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_LPGPIO1EN); \
1172                                                     UNUSED(tmpreg); \
1173                                                   } while(0)
1174 
1175 #define __HAL_RCC_PWR_CLK_ENABLE()             do { \
1176                                                     __IO uint32_t tmpreg; \
1177                                                     SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_PWREN); \
1178    /* Delay after an RCC peripheral clock enabling */ \
1179                                                     tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_PWREN); \
1180                                                     UNUSED(tmpreg); \
1181                                                   } while(0)
1182 
1183 #define __HAL_RCC_ADC4_CLK_ENABLE()             do { \
1184                                                      __IO uint32_t tmpreg; \
1185                                                      SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_ADC4EN); \
1186     /* Delay after an RCC peripheral clock enabling */ \
1187                                                      tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_ADC4EN); \
1188                                                      UNUSED(tmpreg); \
1189                                                    } while(0)
1190 
1191 #define __HAL_RCC_DAC1_CLK_ENABLE()             do { \
1192                                                      __IO uint32_t tmpreg; \
1193                                                      SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_DAC1EN); \
1194     /* Delay after an RCC peripheral clock enabling */ \
1195                                                      tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_DAC1EN); \
1196                                                      UNUSED(tmpreg); \
1197                                                    } while(0)
1198 
1199 #define __HAL_RCC_LPDMA1_CLK_ENABLE()             do { \
1200                                                        __IO uint32_t tmpreg; \
1201                                                        SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_LPDMA1EN); \
1202       /* Delay after an RCC peripheral clock enabling */ \
1203                                                        tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_LPDMA1EN); \
1204                                                        UNUSED(tmpreg); \
1205                                                      } while(0)
1206 
1207 #define __HAL_RCC_ADF1_CLK_ENABLE()             do { \
1208                                                      __IO uint32_t tmpreg; \
1209                                                      SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_ADF1EN); \
1210     /* Delay after an RCC peripheral clock enabling */ \
1211                                                      tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_ADF1EN); \
1212                                                      UNUSED(tmpreg); \
1213                                                    } while(0)
1214 
1215 #define __HAL_RCC_GTZC2_CLK_ENABLE()             do { \
1216                                                       __IO uint32_t tmpreg; \
1217                                                       SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_GTZC2EN); \
1218      /* Delay after an RCC peripheral clock enabling */ \
1219                                                       tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_GTZC2EN); \
1220                                                       UNUSED(tmpreg); \
1221                                                     } while(0)
1222 
1223 #define __HAL_RCC_SRAM4_CLK_ENABLE()             do { \
1224                                                       __IO uint32_t tmpreg; \
1225                                                       SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_SRAM4EN); \
1226      /* Delay after an RCC peripheral clock enabling */ \
1227                                                       tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_SRAM4EN); \
1228                                                       UNUSED(tmpreg); \
1229                                                     } while(0)
1230 
1231 #define __HAL_RCC_LPGPIO1_CLK_DISABLE()         CLEAR_BIT(RCC->AHB3ENR, RCC_AHB3ENR_LPGPIO1EN)
1232 
1233 #define __HAL_RCC_PWR_CLK_DISABLE()            CLEAR_BIT(RCC->AHB3ENR, RCC_AHB3ENR_PWREN)
1234 
1235 #define __HAL_RCC_ADC4_CLK_DISABLE()           CLEAR_BIT(RCC->AHB3ENR, RCC_AHB3ENR_ADC4EN)
1236 
1237 #define __HAL_RCC_DAC1_CLK_DISABLE()           CLEAR_BIT(RCC->AHB3ENR, RCC_AHB3ENR_DAC1EN)
1238 
1239 #define __HAL_RCC_LPDMA1_CLK_DISABLE()          CLEAR_BIT(RCC->AHB3ENR, RCC_AHB3ENR_LPDMA1EN)
1240 
1241 #define __HAL_RCC_ADF1_CLK_DISABLE()           CLEAR_BIT(RCC->AHB3ENR, RCC_AHB3ENR_ADF1EN)
1242 
1243 #define __HAL_RCC_GTZC2_CLK_DISABLE()          CLEAR_BIT(RCC->AHB3ENR, RCC_AHB3ENR_GTZC2EN)
1244 
1245 #define __HAL_RCC_SRAM4_CLK_DISABLE()          CLEAR_BIT(RCC->AHB3ENR, RCC_AHB3ENR_SRAM4EN)
1246 /**
1247   * @}
1248   */
1249 
1250 /** @defgroup RCC_APB1_Clock_Enable_Disable APB1 Peripheral Clock Enable Disable
1251   * @brief  Enable or disable the APB1 peripheral clock.
1252   * @note   After reset, the peripheral clock (used for registers read/write access)
1253   *         is disabled and the application software has to enable this clock before
1254   *         using it.
1255   * @{
1256   */
1257 #define __HAL_RCC_TIM2_CLK_ENABLE()             do { \
1258                                                      __IO uint32_t tmpreg; \
1259                                                      SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN); \
1260     /* Delay after an RCC peripheral clock enabling */ \
1261                                                      tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN); \
1262                                                      UNUSED(tmpreg); \
1263                                                    } while(0)
1264 
1265 #define __HAL_RCC_TIM3_CLK_ENABLE()             do { \
1266                                                      __IO uint32_t tmpreg; \
1267                                                      SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN); \
1268     /* Delay after an RCC peripheral clock enabling */ \
1269                                                      tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN); \
1270                                                      UNUSED(tmpreg); \
1271                                                    } while(0)
1272 
1273 #define __HAL_RCC_TIM4_CLK_ENABLE()             do { \
1274                                                      __IO uint32_t tmpreg; \
1275                                                      SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN); \
1276     /* Delay after an RCC peripheral clock enabling */ \
1277                                                      tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN); \
1278                                                      UNUSED(tmpreg); \
1279                                                    } while(0)
1280 
1281 #define __HAL_RCC_TIM5_CLK_ENABLE()             do { \
1282                                                      __IO uint32_t tmpreg; \
1283                                                      SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN); \
1284     /* Delay after an RCC peripheral clock enabling */ \
1285                                                      tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN); \
1286                                                      UNUSED(tmpreg); \
1287                                                    } while(0)
1288 
1289 #define __HAL_RCC_TIM6_CLK_ENABLE()             do { \
1290                                                      __IO uint32_t tmpreg; \
1291                                                      SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN); \
1292     /* Delay after an RCC peripheral clock enabling */ \
1293                                                      tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN); \
1294                                                      UNUSED(tmpreg); \
1295                                                    } while(0)
1296 
1297 #define __HAL_RCC_TIM7_CLK_ENABLE()             do { \
1298                                                      __IO uint32_t tmpreg; \
1299                                                      SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN); \
1300     /* Delay after an RCC peripheral clock enabling */ \
1301                                                      tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN); \
1302                                                      UNUSED(tmpreg); \
1303                                                    } while(0)
1304 
1305 #define __HAL_RCC_WWDG_CLK_ENABLE()            do { \
1306                                                     __IO uint32_t tmpreg; \
1307                                                     SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_WWDGEN); \
1308    /* Delay after an RCC peripheral clock enabling */ \
1309                                                     tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_WWDGEN); \
1310                                                     UNUSED(tmpreg); \
1311                                                   } while(0)
1312 
1313 #define __HAL_RCC_SPI2_CLK_ENABLE()            do { \
1314                                                     __IO uint32_t tmpreg; \
1315                                                     SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN); \
1316    /* Delay after an RCC peripheral clock enabling */ \
1317                                                     tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN); \
1318                                                     UNUSED(tmpreg); \
1319                                                   } while(0)
1320 
1321 #define __HAL_RCC_USART2_CLK_ENABLE()          do { \
1322                                                     __IO uint32_t tmpreg; \
1323                                                     SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN); \
1324    /* Delay after an RCC peripheral clock enabling */ \
1325                                                     tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN); \
1326                                                     UNUSED(tmpreg); \
1327                                                   } while(0)
1328 
1329 #define __HAL_RCC_USART3_CLK_ENABLE()          do { \
1330                                                     __IO uint32_t tmpreg; \
1331                                                     SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN); \
1332    /* Delay after an RCC peripheral clock enabling */ \
1333                                                     tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN); \
1334                                                     UNUSED(tmpreg); \
1335                                                   } while(0)
1336 
1337 #define __HAL_RCC_UART4_CLK_ENABLE()           do { \
1338                                                     __IO uint32_t tmpreg; \
1339                                                     SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN); \
1340    /* Delay after an RCC peripheral clock enabling */ \
1341                                                     tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN); \
1342                                                     UNUSED(tmpreg); \
1343                                                   } while(0)
1344 
1345 #define __HAL_RCC_UART5_CLK_ENABLE()           do { \
1346                                                     __IO uint32_t tmpreg; \
1347                                                     SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN); \
1348    /* Delay after an RCC peripheral clock enabling */ \
1349                                                     tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN); \
1350                                                     UNUSED(tmpreg); \
1351                                                   } while(0)
1352 
1353 #define  __HAL_RCC_I2C1_CLK_ENABLE()           do { \
1354                                                     __IO uint32_t tmpreg; \
1355                                                     SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN); \
1356    /* Delay after an RCC peripheral clock enabling */ \
1357                                                     tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN); \
1358                                                     UNUSED(tmpreg); \
1359                                                   } while(0)
1360 
1361 #define  __HAL_RCC_I2C2_CLK_ENABLE()           do { \
1362                                                     __IO uint32_t tmpreg; \
1363                                                     SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN); \
1364    /* Delay after an RCC peripheral clock enabling */ \
1365                                                     tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN); \
1366                                                     UNUSED(tmpreg); \
1367                                                   } while(0)
1368 
1369 #define   __HAL_RCC_CRS_CLK_ENABLE()           do { \
1370                                                     __IO uint32_t tmpreg; \
1371                                                     SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN); \
1372    /* Delay after an RCC peripheral clock enabling */ \
1373                                                     tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN); \
1374                                                     UNUSED(tmpreg); \
1375                                                   } while(0)
1376 
1377 #define __HAL_RCC_I2C4_CLK_ENABLE()            do { \
1378                                                     __IO uint32_t tmpreg; \
1379                                                     SET_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN); \
1380    /* Delay after an RCC peripheral clock enabling */ \
1381                                                     tmpreg = READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN); \
1382                                                     UNUSED(tmpreg); \
1383                                                   } while(0)
1384 
1385 #define __HAL_RCC_DTS_CLK_ENABLE()             do { \
1386                                                     __IO uint32_t tmpreg; \
1387                                                     SET_BIT(RCC->APB1ENR2, RCC_APB1ENR2_DTSEN); \
1388    /* Delay after an RCC peripheral clock enabling */ \
1389                                                     tmpreg = READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_DTSEN); \
1390                                                     UNUSED(tmpreg); \
1391                                                   } while(0)
1392 
1393 #define __HAL_RCC_LPTIM2_CLK_ENABLE()          do { \
1394                                                     __IO uint32_t tmpreg; \
1395                                                     SET_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN); \
1396    /* Delay after an RCC peripheral clock enabling */ \
1397                                                     tmpreg = READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN); \
1398                                                     UNUSED(tmpreg); \
1399                                                   } while(0)
1400 
1401 #define __HAL_RCC_FDCAN1_CLK_ENABLE()          do { \
1402                                                     __IO uint32_t tmpreg; \
1403                                                     SET_BIT(RCC->APB1ENR2, RCC_APB1ENR2_FDCAN1EN); \
1404    /* Delay after an RCC peripheral clock enabling */ \
1405                                                     tmpreg = READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_FDCAN1EN); \
1406                                                     UNUSED(tmpreg); \
1407                                                   } while(0)
1408 
1409 #define __HAL_RCC_UCPD_CLK_ENABLE()            do { \
1410                                                     __IO uint32_t tmpreg; \
1411                                                     SET_BIT(RCC->APB1ENR2, RCC_APB1ENR2_UCPD1EN); \
1412    /* Delay after an RCC peripheral clock enabling */ \
1413                                                     tmpreg = READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_UCPD1EN); \
1414                                                     UNUSED(tmpreg); \
1415                                                   } while(0)
1416 
1417 #define __HAL_RCC_TIM2_CLK_DISABLE()          CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN)
1418 
1419 #define __HAL_RCC_TIM3_CLK_DISABLE()        CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN)
1420 
1421 #define __HAL_RCC_TIM4_CLK_DISABLE()        CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN)
1422 
1423 #define __HAL_RCC_TIM5_CLK_DISABLE()        CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN)
1424 
1425 #define __HAL_RCC_TIM6_CLK_DISABLE()        CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN)
1426 
1427 #define __HAL_RCC_TIM7_CLK_DISABLE()        CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN)
1428 
1429 #define __HAL_RCC_WWDG_CLK_DISABLE()        CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_WWDGEN)
1430 
1431 #define __HAL_RCC_SPI2_CLK_DISABLE()        CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN)
1432 
1433 #define __HAL_RCC_USART2_CLK_DISABLE()      CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN)
1434 
1435 #define __HAL_RCC_USART3_CLK_DISABLE()      CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN)
1436 
1437 #define __HAL_RCC_UART4_CLK_DISABLE()       CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN)
1438 
1439 #define __HAL_RCC_UART5_CLK_DISABLE()       CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN)
1440 
1441 #define __HAL_RCC_I2C1_CLK_DISABLE()        CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN)
1442 
1443 #define __HAL_RCC_I2C2_CLK_DISABLE()        CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN)
1444 
1445 #define __HAL_RCC_CRS_CLK_DISABLE()         CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN)
1446 
1447 #define __HAL_RCC_I2C4_CLK_DISABLE()        CLEAR_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN)
1448 
1449 #define __HAL_RCC_DTS_CLK_DISABLE()         CLEAR_BIT(RCC->APB1ENR2 , RCC_APB1ENR2_DTSEN)
1450 
1451 #define __HAL_RCC_LPTIM2_CLK_DISABLE()      CLEAR_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN)
1452 
1453 #define __HAL_RCC_FDCAN1_CLK_DISABLE()      CLEAR_BIT(RCC->APB1ENR2, RCC_APB1ENR2_FDCAN1EN)
1454 
1455 #define __HAL_RCC_UCPD_CLK_DISABLE()        CLEAR_BIT(RCC->APB1ENR2, RCC_APB1ENR2_UCPD1EN)
1456 /**
1457   * @}
1458   */
1459 
1460 /** @defgroup RCC_APB2_Clock_Enable_Disable APB2 Peripheral Clock Enable Disable
1461   * @brief  Enable or disable the APB2 peripheral clock.
1462   * @note   After reset, the peripheral clock (used for registers read/write access)
1463   *         is disabled and the application software has to enable this clock before
1464   *         using it.
1465   * @{
1466   */
1467 #define __HAL_RCC_TIM1_CLK_ENABLE()             do { \
1468                                                      __IO uint32_t tmpreg; \
1469                                                      SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN); \
1470     /* Delay after an RCC peripheral clock enabling */ \
1471                                                      tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN); \
1472                                                      UNUSED(tmpreg); \
1473                                                    } while(0)
1474 
1475 #define __HAL_RCC_SPI1_CLK_ENABLE()             do { \
1476                                                      __IO uint32_t tmpreg; \
1477                                                      SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN); \
1478     /* Delay after an RCC peripheral clock enabling */ \
1479                                                      tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN); \
1480                                                      UNUSED(tmpreg); \
1481                                                    } while(0)
1482 
1483 #define __HAL_RCC_TIM8_CLK_ENABLE()             do { \
1484                                                      __IO uint32_t tmpreg; \
1485                                                      SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN); \
1486     /* Delay after an RCC peripheral clock enabling */ \
1487                                                      tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN); \
1488                                                      UNUSED(tmpreg); \
1489                                                    } while(0)
1490 
1491 
1492 #define __HAL_RCC_USART1_CLK_ENABLE()             do { \
1493                                                        __IO uint32_t tmpreg; \
1494                                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN); \
1495       /* Delay after an RCC peripheral clock enabling */ \
1496                                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN); \
1497                                                        UNUSED(tmpreg); \
1498                                                      } while(0)
1499 
1500 #define __HAL_RCC_TIM15_CLK_ENABLE()             do { \
1501                                                       __IO uint32_t tmpreg; \
1502                                                       SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN); \
1503      /* Delay after an RCC peripheral clock enabling */ \
1504                                                       tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN); \
1505                                                       UNUSED(tmpreg); \
1506                                                     } while(0)
1507 
1508 #define __HAL_RCC_TIM16_CLK_ENABLE()             do { \
1509                                                       __IO uint32_t tmpreg; \
1510                                                       SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN); \
1511      /* Delay after an RCC peripheral clock enabling */ \
1512                                                       tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN); \
1513                                                       UNUSED(tmpreg); \
1514                                                     } while(0)
1515 
1516 #define __HAL_RCC_TIM17_CLK_ENABLE()             do { \
1517                                                       __IO uint32_t tmpreg; \
1518                                                       SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN); \
1519      /* Delay after an RCC peripheral clock enabling */ \
1520                                                       tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN); \
1521                                                       UNUSED(tmpreg); \
1522                                                     } while(0)
1523 
1524 #define __HAL_RCC_SAI1_CLK_ENABLE()             do { \
1525                                                      __IO uint32_t tmpreg; \
1526                                                      SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN); \
1527     /* Delay after an RCC peripheral clock enabling */ \
1528                                                      tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN); \
1529                                                      UNUSED(tmpreg); \
1530                                                    } while(0)
1531 
1532 #define __HAL_RCC_SAI2_CLK_ENABLE()             do { \
1533                                                      __IO uint32_t tmpreg; \
1534                                                      SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN); \
1535     /* Delay after an RCC peripheral clock enabling */ \
1536                                                      tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN); \
1537                                                      UNUSED(tmpreg); \
1538                                                    } while(0)
1539 
1540 #define __HAL_RCC_TIM1_CLK_DISABLE()           CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN)
1541 
1542 #define __HAL_RCC_SPI1_CLK_DISABLE()           CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN)
1543 
1544 #define __HAL_RCC_TIM8_CLK_DISABLE()           CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN)
1545 
1546 #define __HAL_RCC_USART1_CLK_DISABLE()         CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN)
1547 
1548 #define __HAL_RCC_TIM15_CLK_DISABLE()          CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN)
1549 
1550 #define __HAL_RCC_TIM16_CLK_DISABLE()          CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN)
1551 
1552 #define __HAL_RCC_TIM17_CLK_DISABLE()          CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN)
1553 
1554 #define __HAL_RCC_SAI1_CLK_DISABLE()           CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN)
1555 
1556 #define __HAL_RCC_SAI2_CLK_DISABLE()           CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN)
1557 /**
1558   * @}
1559   */
1560 
1561 /** @defgroup RCC_APB3_Clock_Enable_Disable APB3 Peripheral Clock Enable Disable
1562   * @brief  Enable or disable the APB3 peripheral clock.
1563   * @note   After reset, the peripheral clock (used for registers read/write access)
1564   *         is disabled and the application software has to enable this clock before
1565   *         using it.
1566   * @{
1567   */
1568 #define __HAL_RCC_SYSCFG_CLK_ENABLE()             do { \
1569                                                        __IO uint32_t tmpreg; \
1570                                                        SET_BIT(RCC->APB3ENR, RCC_APB3ENR_SYSCFGEN); \
1571       /* Delay after an RCC peripheral clock enabling */ \
1572                                                        tmpreg = READ_BIT(RCC->APB3ENR, RCC_APB3ENR_SYSCFGEN); \
1573                                                        UNUSED(tmpreg); \
1574                                                      } while(0)
1575 
1576 #define __HAL_RCC_SPI3_CLK_ENABLE()             do { \
1577                                                      __IO uint32_t tmpreg; \
1578                                                      SET_BIT(RCC->APB3ENR, RCC_APB3ENR_SPI3EN); \
1579     /* Delay after an RCC peripheral clock enabling */ \
1580                                                      tmpreg = READ_BIT(RCC->APB3ENR, RCC_APB3ENR_SPI3EN); \
1581                                                      UNUSED(tmpreg); \
1582                                                    } while(0)
1583 
1584 #define __HAL_RCC_LPUART1_CLK_ENABLE()          do { \
1585                                                      __IO uint32_t tmpreg; \
1586                                                      SET_BIT(RCC->APB3ENR, RCC_APB3ENR_LPUART1EN); \
1587     /* Delay after an RCC peripheral clock enabling */ \
1588                                                      tmpreg = READ_BIT(RCC->APB3ENR, RCC_APB3ENR_LPUART1EN); \
1589                                                      UNUSED(tmpreg); \
1590                                                    } while(0)
1591 
1592 #define __HAL_RCC_I2C3_CLK_ENABLE()             do { \
1593                                                      __IO uint32_t tmpreg; \
1594                                                      SET_BIT(RCC->APB3ENR, RCC_APB3ENR_I2C3EN); \
1595     /* Delay after an RCC peripheral clock enabling */ \
1596                                                      tmpreg = READ_BIT(RCC->APB3ENR, RCC_APB3ENR_I2C3EN); \
1597                                                      UNUSED(tmpreg); \
1598                                                    } while(0)
1599 
1600 #define __HAL_RCC_LPTIM1_CLK_ENABLE()           do { \
1601                                                      __IO uint32_t tmpreg; \
1602                                                      SET_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM1EN); \
1603     /* Delay after an RCC peripheral clock enabling */ \
1604                                                      tmpreg = READ_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM1EN); \
1605                                                      UNUSED(tmpreg); \
1606                                                    } while(0)
1607 
1608 #define __HAL_RCC_LPTIM3_CLK_ENABLE()           do { \
1609                                                      __IO uint32_t tmpreg; \
1610                                                      SET_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM3EN); \
1611     /* Delay after an RCC peripheral clock enabling */ \
1612                                                      tmpreg = READ_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM3EN); \
1613                                                      UNUSED(tmpreg); \
1614                                                    } while(0)
1615 
1616 #define __HAL_RCC_LPTIM4_CLK_ENABLE()           do { \
1617                                                      __IO uint32_t tmpreg; \
1618                                                      SET_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM4EN); \
1619     /* Delay after an RCC peripheral clock enabling */ \
1620                                                      tmpreg = READ_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM4EN); \
1621                                                      UNUSED(tmpreg); \
1622                                                    } while(0)
1623 
1624 #define __HAL_RCC_OPAMP_CLK_ENABLE()            do { \
1625                                                      __IO uint32_t tmpreg; \
1626                                                      SET_BIT(RCC->APB3ENR, RCC_APB3ENR_OPAMPEN); \
1627     /* Delay after an RCC peripheral clock enabling */ \
1628                                                      tmpreg = READ_BIT(RCC->APB3ENR, RCC_APB3ENR_OPAMPEN); \
1629                                                      UNUSED(tmpreg); \
1630                                                    } while(0)
1631 
1632 #define __HAL_RCC_COMP_CLK_ENABLE()             do { \
1633                                                      __IO uint32_t tmpreg; \
1634                                                      SET_BIT(RCC->APB3ENR, RCC_APB3ENR_COMPEN); \
1635     /* Delay after an RCC peripheral clock enabling */ \
1636                                                      tmpreg = READ_BIT(RCC->APB3ENR, RCC_APB3ENR_COMPEN); \
1637                                                      UNUSED(tmpreg); \
1638                                                    } while(0)
1639 
1640 #define __HAL_RCC_VREF_CLK_ENABLE()             do { \
1641                                                      __IO uint32_t tmpreg; \
1642                                                      SET_BIT(RCC->APB3ENR, RCC_APB3ENR_VREFEN); \
1643     /* Delay after an RCC peripheral clock enabling */ \
1644                                                      tmpreg = READ_BIT(RCC->APB3ENR, RCC_APB3ENR_VREFEN); \
1645                                                      UNUSED(tmpreg); \
1646                                                    } while(0)
1647 
1648 #define __HAL_RCC_RTCAPB_CLK_ENABLE()           do { \
1649                                                      __IO uint32_t tmpreg; \
1650                                                      SET_BIT(RCC->APB3ENR, RCC_APB3ENR_RTCAPBEN); \
1651     /* Delay after an RCC peripheral clock enabling */ \
1652                                                      tmpreg = READ_BIT(RCC->APB3ENR, RCC_APB3ENR_RTCAPBEN); \
1653                                                      UNUSED(tmpreg); \
1654                                                    } while(0)
1655 
1656 #define __HAL_RCC_SYSCFG_CLK_DISABLE()         CLEAR_BIT(RCC->APB3ENR, RCC_APB3ENR_SYSCFGEN)
1657 
1658 #define __HAL_RCC_SPI3_CLK_DISABLE()           CLEAR_BIT(RCC->APB3ENR, RCC_APB3ENR_SPI3EN)
1659 
1660 #define __HAL_RCC_LPUART1_CLK_DISABLE()        CLEAR_BIT(RCC->APB3ENR, RCC_APB3ENR_LPUART1EN)
1661 
1662 #define __HAL_RCC_I2C3_CLK_DISABLE()           CLEAR_BIT(RCC->APB3ENR, RCC_APB3ENR_I2C3EN)
1663 
1664 #define __HAL_RCC_LPTIM1_CLK_DISABLE()         CLEAR_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM1EN)
1665 
1666 #define __HAL_RCC_LPTIM3_CLK_DISABLE()         CLEAR_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM3EN)
1667 
1668 #define __HAL_RCC_LPTIM4_CLK_DISABLE()         CLEAR_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM4EN)
1669 
1670 #define __HAL_RCC_OPAMP_CLK_DISABLE()          CLEAR_BIT(RCC->APB3ENR, RCC_APB3ENR_OPAMPEN)
1671 
1672 #define __HAL_RCC_COMP_CLK_DISABLE()           CLEAR_BIT(RCC->APB3ENR, RCC_APB3ENR_COMPEN)
1673 
1674 #define __HAL_RCC_VREF_CLK_DISABLE()           CLEAR_BIT(RCC->APB3ENR, RCC_APB3ENR_VREFEN)
1675 
1676 #define __HAL_RCC_RTCAPB_CLK_DISABLE()         CLEAR_BIT(RCC->APB3ENR, RCC_APB3ENR_RTCAPBEN)
1677 /**
1678   * @}
1679   */
1680 
1681 /** @defgroup RCC_AHB1_Peripheral_Clock_Enable_Disable_Status AHB1 Peripheral Clock Enabled or Disabled Status
1682   * @brief  Check whether the AHB1 peripheral clock is enabled or not.
1683   * @note   After reset, the peripheral clock (used for registers read/write access)
1684   *         is disabled and the application software has to enable this clock before
1685   *         using it.
1686   * @{
1687   */
1688 #define __HAL_RCC_GPDMA1_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPDMA1EN) != 0U)
1689 
1690 #define __HAL_RCC_CORDIC_IS_CLK_ENABLED()       (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CORDICEN) != 0U)
1691 
1692 #define __HAL_RCC_FMAC_IS_CLK_ENABLED()         (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FMACEN) != 0U)
1693 
1694 #define __HAL_RCC_MDF1_IS_CLK_ENABLED()         (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_MDF1EN) != 0U)
1695 
1696 #define __HAL_RCC_FLASH_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN) != 0U)
1697 
1698 #define __HAL_RCC_CRC_IS_CLK_ENABLED()          (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN) != 0U)
1699 
1700 #define __HAL_RCC_TSC_IS_CLK_ENABLED()          (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN) != 0U)
1701 
1702 #define __HAL_RCC_RAMCFG_IS_CLK_ENABLED()       (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_RAMCFGEN) != 0U)
1703 
1704 #define __HAL_RCC_DMA2D_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2DEN) != 0U)
1705 
1706 #define __HAL_RCC_GTZC1_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GTZC1EN) != 0U)
1707 
1708 #define __HAL_RCC_BKPSRAM_IS_CLK_ENABLED()      (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_BKPSRAMEN) != 0U)
1709 
1710 #define __HAL_RCC_DCACHE1_IS_CLK_ENABLED()      (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DCACHE1EN) != 0U)
1711 
1712 #define __HAL_RCC_SRAM1_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_SRAM1EN) != 0U)
1713 
1714 #define __HAL_RCC_GPDMA1_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPDMA1EN) == 0U)
1715 
1716 #define __HAL_RCC_CORDIC_IS_CLK_DISABLED()      (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CORDICEN) == 0U)
1717 
1718 #define __HAL_RCC_FMAC_IS_CLK_DISABLED()        (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FMACEN) == 0U)
1719 
1720 #define __HAL_RCC_MDF1_IS_CLK_DISABLED()        (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_MDF1EN) == 0U)
1721 
1722 #define __HAL_RCC_FLASH_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN) == 0U)
1723 
1724 #define __HAL_RCC_CRC_IS_CLK_DISABLED()         (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN) == 0U)
1725 
1726 #define __HAL_RCC_TSC_IS_CLK_DISABLED()         (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN) == 0U)
1727 
1728 #define __HAL_RCC_RAMCFG_IS_CLK_DISABLED()      (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_RAMCFGEN) == 0U)
1729 
1730 #define __HAL_RCC_DMA2D_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2DEN) == 0U)
1731 
1732 #define __HAL_RCC_GTZC1_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GTZC1EN) == 0U)
1733 
1734 #define __HAL_RCC_BKPSRAM_IS_CLK_DISABLED()     (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_BKPSRAMEN) == 0U)
1735 
1736 #define __HAL_RCC_DCACHE1_IS_CLK_DISABLED()     (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DCACHE1EN) == 0U)
1737 
1738 #define __HAL_RCC_SRAM1_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_SRAM1EN) == 0U)
1739 /**
1740   * @}
1741   */
1742 
1743 /** @defgroup RCC_AHB2_Peripheral_Clock_Enable_Disable_Status AHB2 Peripheral Clock Enabled or Disabled Status
1744   * @brief  Check whether the AHB2 peripheral clock is enabled or not.
1745   * @note   After reset, the peripheral clock (used for registers read/write access)
1746   *         is disabled and the application software has to enable this clock before
1747   *         using it.
1748   * @{
1749   */
1750 #define __HAL_RCC_GPIOA_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOAEN) != 0U)
1751 
1752 #define __HAL_RCC_GPIOB_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOBEN) != 0U)
1753 
1754 #define __HAL_RCC_GPIOC_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOCEN) != 0U)
1755 
1756 #define __HAL_RCC_GPIOD_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIODEN) != 0U)
1757 
1758 #define __HAL_RCC_GPIOE_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOEEN) != 0U)
1759 
1760 #define __HAL_RCC_GPIOF_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOFEN) != 0U)
1761 
1762 #define __HAL_RCC_GPIOG_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOGEN) != 0U)
1763 
1764 #define __HAL_RCC_GPIOH_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOHEN) != 0U)
1765 
1766 #define __HAL_RCC_GPIOI_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOIEN) != 0U)
1767 
1768 #define __HAL_RCC_ADC1_IS_CLK_ENABLED()         (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_ADC1EN) != 0U)
1769 
1770 #define __HAL_RCC_DCMI_PSSI_IS_CLK_ENABLED()    (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_DCMI_PSSIEN) != 0U)
1771 
1772 #define __HAL_RCC_USB_IS_CLK_ENABLED()          (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTGEN) != 0U)
1773 
1774 #if defined(AES)
1775 #define __HAL_RCC_AES_IS_CLK_ENABLED()          (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_AESEN) != 0U)
1776 #endif /* AES */
1777 
1778 #if defined(HASH)
1779 #define __HAL_RCC_HASH_IS_CLK_ENABLED()         (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_HASHEN) != 0U)
1780 #endif /* HASH */
1781 
1782 #define __HAL_RCC_RNG_IS_CLK_ENABLED()          (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_RNGEN) != 0U)
1783 
1784 #define __HAL_RCC_PKA_IS_CLK_ENABLED()          (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_PKAEN) != 0U)
1785 
1786 #define __HAL_RCC_SAES_IS_CLK_ENABLED()          (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SAESEN) != 0U)
1787 
1788 #define __HAL_RCC_OSPIM_IS_CLK_ENABLED()        (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OCTOSPIMEN) != 0U)
1789 
1790 #define __HAL_RCC_OTFDEC1_IS_CLK_ENABLED()      (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTFDEC1EN) != 0U)
1791 
1792 #define __HAL_RCC_OTFDEC2_IS_CLK_ENABLED()      (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTFDEC2EN) != 0U)
1793 
1794 #define __HAL_RCC_SDMMC1_IS_CLK_ENABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SDMMC1EN) != 0U)
1795 
1796 #define __HAL_RCC_SDMMC2_IS_CLK_ENABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SDMMC2EN) != 0U)
1797 
1798 #define __HAL_RCC_SRAM2_IS_CLK_ENABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SRAM2EN) != 0U)
1799 
1800 #define __HAL_RCC_SRAM3_IS_CLK_ENABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SRAM3EN) != 0U)
1801 
1802 #define __HAL_RCC_FMC_IS_CLK_ENABLED()          (READ_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_FSMCEN) != 0U)
1803 
1804 #define __HAL_RCC_OSPI1_IS_CLK_ENABLED()       (READ_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_OCTOSPI1EN) != 0U)
1805 
1806 #define __HAL_RCC_OSPI2_IS_CLK_ENABLED()          (READ_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_OCTOSPI2EN) != 0U)
1807 
1808 #define __HAL_RCC_GPIOA_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOAEN) == 0U)
1809 
1810 #define __HAL_RCC_GPIOB_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOBEN) == 0U)
1811 
1812 #define __HAL_RCC_GPIOC_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOCEN) == 0U)
1813 
1814 #define __HAL_RCC_GPIOD_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIODEN) == 0U)
1815 
1816 #define __HAL_RCC_GPIOE_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOEEN) == 0U)
1817 
1818 #define __HAL_RCC_GPIOF_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOFEN) == 0U)
1819 
1820 #define __HAL_RCC_GPIOG_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOGEN) == 0U)
1821 
1822 #define __HAL_RCC_GPIOH_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOHEN) == 0U)
1823 
1824 #define __HAL_RCC_GPIOI_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_GPIOIEN) == 0U)
1825 
1826 #define __HAL_RCC_ADC1_IS_CLK_DISABLED()        (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_ADC1EN) == 0U)
1827 
1828 #define __HAL_RCC_DCMI_PSSI_IS_CLK_DISABLED()   (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_DCMI_PSSIEN) == 0U)
1829 
1830 #define __HAL_RCC_USB_IS_CLK_DISABLED()         (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTGEN) == 0U)
1831 
1832 #if defined(AES)
1833 #define __HAL_RCC_AES_IS_CLK_DISABLED()         (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_AESEN) == 0U)
1834 #endif /* AES */
1835 
1836 #if defined(HASH)
1837 #define __HAL_RCC_HASH_IS_CLK_DISABLED()        (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_HASHEN) == 0U)
1838 #endif /* HASH */
1839 
1840 #define __HAL_RCC_RNG_IS_CLK_DISABLED()         (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_RNGEN) == 0U)
1841 
1842 #define __HAL_RCC_PKA_IS_CLK_DISABLED()         (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_PKAEN) == 0U)
1843 
1844 #define __HAL_RCC_SAES_IS_CLK_DISABLED()        (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SAESEN) == 0U)
1845 
1846 #define __HAL_RCC_OSPIM_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OCTOSPIMEN) == 0U)
1847 
1848 #define __HAL_RCC_OTFDEC1_IS_CLK_DISABLED()     (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTFDEC1EN) == 0U)
1849 
1850 #define __HAL_RCC_OTFDEC2_IS_CLK_DISABLED()     (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_OTFDEC2EN) == 0U)
1851 
1852 #define __HAL_RCC_SDMMC1_IS_CLK_DISABLED()      (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SDMMC1EN) == 0U)
1853 
1854 #define __HAL_RCC_SDMMC2_IS_CLK_DISABLED()      (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SDMMC2EN) == 0U)
1855 
1856 #define __HAL_RCC_SRAM2_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SRAM2EN) == 0U)
1857 
1858 #define __HAL_RCC_SRAM3_IS_CLK_DISABLED()       (READ_BIT(RCC->AHB2ENR1, RCC_AHB2ENR1_SRAM3EN) == 0U)
1859 
1860 #define __HAL_RCC_FMC_IS_CLK_DISABLED()           (READ_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_FSMCEN) == 0U)
1861 
1862 #define __HAL_RCC_OSPI1_IS_CLK_DISABLED()         (READ_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_OCTOSPI1EN) == 0U)
1863 
1864 #define __HAL_RCC_OSPI2_IS_CLK_DISABLED()         (READ_BIT(RCC->AHB2ENR2, RCC_AHB2ENR2_OCTOSPI2EN) == 0U)
1865 /**
1866   * @}
1867   */
1868 
1869 /** @defgroup RCC_AHB3_Peripheral_Clock_Enable_Disable_Status AHB3 Peripheral Clock Enabled or Disabled Status
1870   * @brief  Check whether the AHB3 peripheral clock is enabled or not.
1871   * @note   After reset, the peripheral clock (used for registers read/write access)
1872   *         is disabled and the application software has to enable this clock before
1873   *         using it.
1874   * @{
1875   */
1876 #define __HAL_RCC_LPGPIO1_IS_CLK_ENABLED()         (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_LPGPIO1EN) != 0U)
1877 
1878 #define __HAL_RCC_PWR_IS_CLK_ENABLED()            (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_PWREN) != 0U)
1879 
1880 #define __HAL_RCC_ADC4_IS_CLK_ENABLED()           (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_ADC4EN) != 0U)
1881 
1882 #define __HAL_RCC_DAC1_IS_CLK_ENABLED()           (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_DAC1EN) != 0U)
1883 
1884 #define __HAL_RCC_LPDMA1_IS_CLK_ENABLED()          (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_LPDMA1EN) != 0U)
1885 
1886 #define __HAL_RCC_ADF1_IS_CLK_ENABLED()           (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_ADF1EN) != 0U)
1887 
1888 #define __HAL_RCC_GTZC2_IS_CLK_ENABLED()          (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_GTZC2EN) != 0U)
1889 
1890 #define __HAL_RCC_SRAM4_IS_CLK_ENABLED()          (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_SRAM4EN) != 0U)
1891 
1892 #define __HAL_RCC_LPGPIO1_IS_CLK_DISABLED()        (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_LPGPIO1EN) == 0U)
1893 
1894 #define __HAL_RCC_PWR_IS_CLK_DISABLED()           (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_PWREN) == 0U)
1895 
1896 #define __HAL_RCC_ADC4_IS_CLK_DISABLED()          (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_ADC4EN) == 0U)
1897 
1898 #define __HAL_RCC_DAC1_IS_CLK_DISABLED()          (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_DAC1EN) == 0U)
1899 
1900 #define __HAL_RCC_LPDMA1_IS_CLK_DISABLED()         (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_LPDMA1EN) == 0U)
1901 
1902 #define __HAL_RCC_ADF1_IS_CLK_DISABLED()          (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_ADF1EN) == 0U)
1903 
1904 #define __HAL_RCC_GTZC2_IS_CLK_DISABLED()        (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_GTZC2EN) == 0U)
1905 
1906 #define __HAL_RCC_SRAM4_IS_CLK_DISABLED()        (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_SRAM4EN) == 0U)
1907 /**
1908   * @}
1909   */
1910 
1911 /** @defgroup RCC_APB1_Peripheral_Clock_Enable_Disable_Status APB1 Peripheral Clock Enabled or Disabled Status
1912   * @brief  Check whether the APB1 peripheral clock is enabled or not.
1913   * @note   After reset, the peripheral clock (used for registers read/write access)
1914   *         is disabled and the application software has to enable this clock before
1915   *         using it.
1916   * @{
1917   */
1918 #define __HAL_RCC_TIM2_IS_CLK_ENABLED()        (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN) != 0U)
1919 
1920 #define __HAL_RCC_TIM3_IS_CLK_ENABLED()        (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN) != 0U)
1921 
1922 #define __HAL_RCC_TIM4_IS_CLK_ENABLED()        (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN) != 0U)
1923 
1924 #define __HAL_RCC_TIM5_IS_CLK_ENABLED()        (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN) != 0U)
1925 
1926 #define __HAL_RCC_TIM6_IS_CLK_ENABLED()        (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN) != 0U)
1927 
1928 #define __HAL_RCC_TIM7_IS_CLK_ENABLED()        (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN) != 0U)
1929 
1930 #define __HAL_RCC_WWDG_IS_CLK_ENABLED()        (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_WWDGEN) != 0U)
1931 
1932 #define __HAL_RCC_SPI2_IS_CLK_ENABLED()        (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN) != 0U)
1933 
1934 #define __HAL_RCC_USART2_IS_CLK_ENABLED()      (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN) != 0U)
1935 
1936 #define __HAL_RCC_USART3_IS_CLK_ENABLED()      (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN) != 0U)
1937 
1938 #define __HAL_RCC_UART4_IS_CLK_ENABLED()       (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN) != 0U)
1939 
1940 #define __HAL_RCC_UART5_IS_CLK_ENABLED()       (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN) != 0U)
1941 
1942 #define __HAL_RCC_I2C1_IS_CLK_ENABLED()        (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN) != 0U)
1943 
1944 #define __HAL_RCC_I2C2_IS_CLK_ENABLED()        (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN) != 0U)
1945 
1946 #define __HAL_RCC_CRS_IS_CLK_ENABLED()         (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN) != 0U)
1947 
1948 #define __HAL_RCC_I2C4_IS_CLK_ENABLED()        (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN) != 0U)
1949 
1950 #define __HAL_RCC_DTS_IS_CLK_ENABLED()         (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_DTSEN) != 0U)
1951 
1952 #define __HAL_RCC_LPTIM2_IS_CLK_ENABLED()      (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN) != 0U)
1953 
1954 #define __HAL_RCC_FDCAN1_IS_CLK_ENABLED()      (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_FDCAN1EN) != 0U)
1955 
1956 #define __HAL_RCC_UCPD_IS_CLK_ENABLED()        (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_UCPD1EN) != 0U)
1957 
1958 #define __HAL_RCC_TIM2_IS_CLK_DISABLED()       (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN) == 0U)
1959 
1960 #define __HAL_RCC_TIM3_IS_CLK_DISABLED()       (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN) == 0U)
1961 
1962 #define __HAL_RCC_TIM4_IS_CLK_DISABLED()       (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN) == 0U)
1963 
1964 #define __HAL_RCC_TIM5_IS_CLK_DISABLED()       (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN) == 0U)
1965 
1966 #define __HAL_RCC_TIM6_IS_CLK_DISABLED()       (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN) == 0U)
1967 
1968 #define __HAL_RCC_TIM7_IS_CLK_DISABLED()       (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN) == 0U)
1969 
1970 #define __HAL_RCC_SPI2_IS_CLK_DISABLED()       (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN) == 0U)
1971 
1972 #define __HAL_RCC_USART2_IS_CLK_DISABLED()     (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN) == 0U)
1973 
1974 #define __HAL_RCC_USART3_IS_CLK_DISABLED()     (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN) == 0U)
1975 
1976 #define __HAL_RCC_UART4_IS_CLK_DISABLED()      (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN) == 0U)
1977 
1978 #define __HAL_RCC_UART5_IS_CLK_DISABLED()      (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN) == 0U)
1979 
1980 #define __HAL_RCC_I2C1_IS_CLK_DISABLED()       (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN) == 0U)
1981 
1982 #define __HAL_RCC_I2C2_IS_CLK_DISABLED()       (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN) == 0U)
1983 
1984 #define __HAL_RCC_CRS_IS_CLK_DISABLED()        (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN) == 0U)
1985 
1986 #define __HAL_RCC_I2C4_IS_CLK_DISABLED()       (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN) == 0U)
1987 
1988 #define __HAL_RCC_DTS_IS_CLK_DISABLED()        (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_DTSEN) == 0U)
1989 
1990 #define __HAL_RCC_LPTIM2_IS_CLK_DISABLED()     (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN) == 0U)
1991 
1992 #define __HAL_RCC_FDCAN1_IS_CLK_DISABLED()     (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_FDCAN1EN) == 0U)
1993 
1994 #define __HAL_RCC_UCPD_IS_CLK_DISABLED()       (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_UCPD1EN) == 0U)
1995 /**
1996   * @}
1997   */
1998 
1999 /** @defgroup RCC_APB2_Peripheral_Clock_Enable_Disable_Status APB2 Peripheral Clock Enabled or Disabled Status
2000   * @brief  Check whether the APB2 peripheral clock is enabled or not.
2001   * @note   After reset, the peripheral clock (used for registers read/write access)
2002   *         is disabled and the application software has to enable this clock before
2003   *         using it.
2004   * @{
2005   */
2006 #define __HAL_RCC_TIM1_IS_CLK_ENABLED()        (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN) != 0U)
2007 
2008 #define __HAL_RCC_SPI1_IS_CLK_ENABLED()        (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN) != 0U)
2009 
2010 #define __HAL_RCC_TIM8_IS_CLK_ENABLED()        (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN) != 0U)
2011 
2012 #define __HAL_RCC_USART1_IS_CLK_ENABLED()      (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN) != 0U)
2013 
2014 #define __HAL_RCC_TIM15_IS_CLK_ENABLED()       (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN) != 0U)
2015 
2016 #define __HAL_RCC_TIM16_IS_CLK_ENABLED()       (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN) != 0U)
2017 
2018 #define __HAL_RCC_TIM17_IS_CLK_ENABLED()       (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN) != 0U)
2019 
2020 #define __HAL_RCC_SAI1_IS_CLK_ENABLED()        (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN) != 0U)
2021 
2022 #define __HAL_RCC_SAI2_IS_CLK_ENABLED()        (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN) != 0U)
2023 
2024 #define __HAL_RCC_TIM1_IS_CLK_DISABLED()       (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN) == 0U)
2025 
2026 #define __HAL_RCC_SPI1_IS_CLK_DISABLED()       (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN) == 0U)
2027 
2028 #define __HAL_RCC_TIM8_IS_CLK_DISABLED()       (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN) == 0U)
2029 
2030 #define __HAL_RCC_USART1_IS_CLK_DISABLED()     (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN) == 0U)
2031 
2032 #define __HAL_RCC_TIM15_IS_CLK_DISABLED()      (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN) == 0U)
2033 
2034 #define __HAL_RCC_TIM16_IS_CLK_DISABLED()      (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN) == 0U)
2035 
2036 #define __HAL_RCC_TIM17_IS_CLK_DISABLED()      (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN) == 0U)
2037 
2038 #define __HAL_RCC_SAI1_IS_CLK_DISABLED()       (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN) == 0U)
2039 
2040 #define __HAL_RCC_SAI2_IS_CLK_DISABLED()       (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN) == 0U)
2041 /**
2042   * @}
2043   */
2044 
2045 /** @defgroup RCC_APB3_Peripheral_Clock_Enable_Disable_Status APB3 Peripheral Clock Enabled or Disabled Status
2046   * @brief  Check whether the APB3 peripheral clock is enabled or not.
2047   * @note   After reset, the peripheral clock (used for registers read/write access)
2048   *         is disabled and the application software has to enable this clock before
2049   *         using it.
2050   * @{
2051   */
2052 #define __HAL_RCC_SYSCFG_IS_CLK_ENABLED()         (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_SYSCFGEN) != 0U)
2053 
2054 #define __HAL_RCC_SPI3_IS_CLK_ENABLED()           (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_SPI3EN) != 0U)
2055 
2056 #define __HAL_RCC_LPUART1_IS_CLK_ENABLED()        (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_LPUART1EN) != 0U)
2057 
2058 #define __HAL_RCC_I2C3_IS_CLK_ENABLED()           (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_I2C3EN) != 0U)
2059 
2060 #define __HAL_RCC_LPTIM1_IS_CLK_ENABLED()         (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM1EN) != 0U)
2061 
2062 #define __HAL_RCC_LPTIM3_IS_CLK_ENABLED()         (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM3EN) != 0U)
2063 
2064 #define __HAL_RCC_LPTIM4_IS_CLK_ENABLED()         (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM4EN) != 0U)
2065 
2066 #define __HAL_RCC_OPAMP_IS_CLK_ENABLED()          (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_OPAMPEN) != 0U)
2067 
2068 #define __HAL_RCC_COMP_IS_CLK_ENABLED()           (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_COMPEN) != 0U)
2069 
2070 #define __HAL_RCC_VREF_IS_CLK_ENABLED()           (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_VREFEN) != 0U)
2071 
2072 #define __HAL_RCC_RTCAPB_IS_CLK_ENABLED()         (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_RTCAPBEN) != 0U)
2073 
2074 #define __HAL_RCC_SYSCFG_IS_CLK_DISABLED()        (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_SYSCFGEN) == 0U)
2075 
2076 #define __HAL_RCC_SPI3_IS_CLK_DISABLED()          (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_SPI3EN) == 0U)
2077 
2078 #define __HAL_RCC_LPUART1_IS_CLK_DISABLED()       (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_LPUART1EN) == 0U)
2079 
2080 #define __HAL_RCC_I2C3_IS_CLK_DISABLED()          (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_I2C3EN) == 0U)
2081 
2082 #define __HAL_RCC_LPTIM1_IS_CLK_DISABLED()        (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM1EN) == 0U)
2083 
2084 #define __HAL_RCC_LPTIM3_IS_CLK_DISABLED()        (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM3EN) == 0U)
2085 
2086 #define __HAL_RCC_LPTIM4_IS_CLK_DISABLED()        (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_LPTIM4EN) == 0U)
2087 
2088 #define __HAL_RCC_OPAMP_IS_CLK_DISABLED()         (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_OPAMPEN) == 0U)
2089 
2090 #define __HAL_RCC_COMP_IS_CLK_DISABLED()          (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_COMPEN) == 0U)
2091 
2092 #define __HAL_RCC_VREF_IS_CLK_DISABLED()          (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_VREFEN) == 0U)
2093 
2094 #define __HAL_RCC_RTCAPB_IS_CLK_DISABLED()        (READ_BIT(RCC->APB3ENR, RCC_APB3ENR_RTCAPBEN) == 0U)
2095 /**
2096   * @}
2097   */
2098 
2099 /** @defgroup RCC_AHB1_Force_Release_Reset AHB1 Peripheral Force Release Reset
2100   * @brief  Force or release AHB1 peripheral reset.
2101   * @{
2102   */
2103 #define __HAL_RCC_AHB1_FORCE_RESET()      WRITE_REG(RCC->AHB1RSTR, 0x0007100FU)
2104 
2105 #define __HAL_RCC_GPDMA1_FORCE_RESET()     SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_GPDMA1RST)
2106 
2107 #define __HAL_RCC_CORDIC_FORCE_RESET()    SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_CORDICRST)
2108 
2109 #define __HAL_RCC_FMAC_FORCE_RESET()      SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_FMACRST)
2110 
2111 #define __HAL_RCC_MDF1_FORCE_RESET()      SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_MDF1RST)
2112 
2113 #define __HAL_RCC_CRC_FORCE_RESET()       SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_CRCRST)
2114 
2115 #define __HAL_RCC_TSC_FORCE_RESET()       SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_TSCRST)
2116 
2117 #define __HAL_RCC_RAMCFG_FORCE_RESET()    SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_RAMCFGRST)
2118 
2119 #define __HAL_RCC_DMA2D_FORCE_RESET()     SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_DMA2DRST)
2120 
2121 #define __HAL_RCC_AHB1_RELEASE_RESET()    WRITE_REG(RCC->AHB1RSTR, 0x00000000U)
2122 
2123 #define __HAL_RCC_GPDMA1_RELEASE_RESET()   CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_GPDMA1RST)
2124 
2125 #define __HAL_RCC_CORDIC_RELEASE_RESET()  CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_CORDICRST)
2126 
2127 #define __HAL_RCC_FMAC_RELEASE_RESET()    CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_FMACRST)
2128 
2129 #define __HAL_RCC_MDF1_RELEASE_RESET()    CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_MDF1RST)
2130 
2131 #define __HAL_RCC_CRC_RELEASE_RESET()     CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_CRCRST)
2132 
2133 #define __HAL_RCC_TSC_RELEASE_RESET()     CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_TSCRST)
2134 
2135 #define __HAL_RCC_RAMCFG_RELEASE_RESET()  CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_RAMCFGRST)
2136 
2137 #define __HAL_RCC_DMA2D_RELEASE_RESET()   CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_DMA2DRST)
2138 /**
2139   * @}
2140   */
2141 
2142 /** @defgroup RCC_AHB2_Force_Release_Reset AHB2 Peripheral Force Release Reset
2143   * @brief  Force or release AHB2 peripheral reset.
2144   * @{
2145   */
2146 #define __HAL_RCC_AHB2_FORCE_RESET()       do{\
2147                                                  WRITE_REG(RCC->AHB2RSTR1, 0x19BF55FFU);\
2148                                                  WRITE_REG(RCC->AHB2RSTR2, 0x00000111U);\
2149                                                }while(0)
2150 
2151 #define __HAL_RCC_GPIOA_FORCE_RESET()       SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOARST)
2152 
2153 #define __HAL_RCC_GPIOB_FORCE_RESET()       SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOBRST)
2154 
2155 #define __HAL_RCC_GPIOC_FORCE_RESET()       SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOCRST)
2156 
2157 #define __HAL_RCC_GPIOD_FORCE_RESET()       SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIODRST)
2158 
2159 #define __HAL_RCC_GPIOE_FORCE_RESET()       SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOERST)
2160 
2161 #define __HAL_RCC_GPIOF_FORCE_RESET()       SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOFRST)
2162 
2163 #define __HAL_RCC_GPIOG_FORCE_RESET()       SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOGRST)
2164 
2165 #define __HAL_RCC_GPIOH_FORCE_RESET()       SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOHRST)
2166 
2167 #define __HAL_RCC_GPIOI_FORCE_RESET()       SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOIRST)
2168 
2169 #define __HAL_RCC_ADC1_FORCE_RESET()        SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_ADC1RST)
2170 
2171 #define __HAL_RCC_DCMI_PSSI_FORCE_RESET()   SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_DCMI_PSSIRST)
2172 
2173 #define __HAL_RCC_USB_FORCE_RESET()         SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_OTGRST)
2174 
2175 #define __HAL_RCC_AES_FORCE_RESET()         SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_AESRST)
2176 
2177 #define __HAL_RCC_HASH_FORCE_RESET()        SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_HASHRST)
2178 
2179 #define __HAL_RCC_RNG_FORCE_RESET()         SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_RNGRST)
2180 
2181 #define __HAL_RCC_PKA_FORCE_RESET()         SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_PKARST)
2182 
2183 #define __HAL_RCC_SAES_FORCE_RESET()        SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_SAESRST)
2184 
2185 #define __HAL_RCC_OSPIM_FORCE_RESET()       SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_OCTOSPIMRST)
2186 
2187 #define __HAL_RCC_OTFDEC1_FORCE_RESET()     SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_OTFDEC1RST)
2188 
2189 #define __HAL_RCC_OTFDEC2_FORCE_RESET()     SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_OTFDEC2RST)
2190 
2191 #define __HAL_RCC_SDMMC1_FORCE_RESET()      SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_SDMMC1RST)
2192 
2193 #define __HAL_RCC_SDMMC2_FORCE_RESET()      SET_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_SDMMC2RST)
2194 
2195 #define __HAL_RCC_FMC_FORCE_RESET()         SET_BIT(RCC->AHB2RSTR2, RCC_AHB2RSTR2_FSMCRST)
2196 
2197 #define __HAL_RCC_OSPI1_FORCE_RESET()       SET_BIT(RCC->AHB2RSTR2, RCC_AHB2RSTR2_OCTOSPI1RST)
2198 
2199 #define __HAL_RCC_OSPI2_FORCE_RESET()       SET_BIT(RCC->AHB2RSTR2, RCC_AHB2RSTR2_OCTOSPI2RST)
2200 
2201 #define __HAL_RCC_AHB2_RELEASE_RESET()      do{\
2202                                                  WRITE_REG(RCC->AHB2RSTR1, 0x00000000U);\
2203                                                  WRITE_REG(RCC->AHB2RSTR2, 0x00000000U);\
2204                                                }while(0)
2205 
2206 #define __HAL_RCC_GPIOA_RELEASE_RESET()     CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOARST)
2207 
2208 #define __HAL_RCC_GPIOB_RELEASE_RESET()     CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOBRST)
2209 
2210 #define __HAL_RCC_GPIOC_RELEASE_RESET()     CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOCRST)
2211 
2212 #define __HAL_RCC_GPIOD_RELEASE_RESET()     CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIODRST)
2213 
2214 #define __HAL_RCC_GPIOE_RELEASE_RESET()     CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOERST)
2215 
2216 #define __HAL_RCC_GPIOF_RELEASE_RESET()     CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOFRST)
2217 
2218 #define __HAL_RCC_GPIOG_RELEASE_RESET()     CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOGRST)
2219 
2220 #define __HAL_RCC_GPIOH_RELEASE_RESET()     CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOHRST)
2221 
2222 #define __HAL_RCC_GPIOI_RELEASE_RESET()     CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_GPIOIRST)
2223 
2224 #define __HAL_RCC_ADC1_RELEASE_RESET()      CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_ADC1RST)
2225 
2226 #define __HAL_RCC_DCMI_PSSI_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_DCMI_PSSIRST)
2227 
2228 #define __HAL_RCC_USB_RELEASE_RESET()       CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_OTGRST)
2229 
2230 #define __HAL_RCC_AES_RELEASE_RESET()       CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_AESRST)
2231 
2232 #define __HAL_RCC_HASH_RELEASE_RESET()      CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_HASHRST)
2233 
2234 #define __HAL_RCC_RNG_RELEASE_RESET()       CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_RNGRST)
2235 
2236 #define __HAL_RCC_PKA_RELEASE_RESET()       CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_PKARST)
2237 
2238 #define __HAL_RCC_SAES_RELEASE_RESET()      CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_SAESRST)
2239 
2240 #define __HAL_RCC_OSPIM_RELEASE_RESET()     CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_OCTOSPIMRST)
2241 
2242 #define __HAL_RCC_OTFDEC1_RELEASE_RESET()   CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_OTFDEC1RST)
2243 
2244 #define __HAL_RCC_OTFDEC2_RELEASE_RESET()   CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_OTFDEC2RST)
2245 
2246 #define __HAL_RCC_SDMMC1_RELEASE_RESET()    CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_SDMMC1RST)
2247 
2248 #define __HAL_RCC_SDMMC2_RELEASE_RESET()    CLEAR_BIT(RCC->AHB2RSTR1, RCC_AHB2RSTR1_SDMMC2RST)
2249 
2250 #define __HAL_RCC_FMC_RELEASE_RESET()       CLEAR_BIT(RCC->AHB2RSTR2, RCC_AHB2RSTR2_FSMCRST)
2251 
2252 #define __HAL_RCC_OSPI1_RELEASE_RESET()     CLEAR_BIT(RCC->AHB2RSTR2, RCC_AHB2RSTR2_OCTOSPI1RST)
2253 
2254 #define __HAL_RCC_OSPI2_RELEASE_RESET()     CLEAR_BIT(RCC->AHB2RSTR2, RCC_AHB2RSTR2_OCTOSPI2RST)
2255 /**
2256   * @}
2257   */
2258 
2259 /** @defgroup RCC_AHB3_Force_Release_Reset AHB3 Peripheral Force Release Reset
2260   * @brief  Force or release AHB3 peripheral reset.
2261   * @{
2262   */
2263 #define __HAL_RCC_AHB3_FORCE_RESET()          WRITE_REG(RCC->AHB3RSTR, 0x00000661U)
2264 
2265 #define __HAL_RCC_LPGPIO1_FORCE_RESET()       SET_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_LPGPIO1RST)
2266 
2267 #define __HAL_RCC_ADC4_FORCE_RESET()          SET_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_ADC4RST)
2268 
2269 #define __HAL_RCC_DAC1_FORCE_RESET()          SET_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_DAC1RST)
2270 
2271 #define __HAL_RCC_LPDMA1_FORCE_RESET()        SET_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_LPDMA1RST)
2272 
2273 #define __HAL_RCC_ADF1_FORCE_RESET()          SET_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_ADF1RST)
2274 
2275 #define __HAL_RCC_AHB3_RELEASE_RESET()        WRITE_REG(RCC->AHB3RSTR, 0x00000000U)
2276 
2277 #define __HAL_RCC_LPGPIO1_RELEASE_RESET()     CLEAR_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_LPGPIO1RST)
2278 
2279 #define __HAL_RCC_ADC4_RELEASE_RESET()        CLEAR_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_ADC4RST)
2280 
2281 #define __HAL_RCC_DAC1_RELEASE_RESET()        CLEAR_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_DAC1RST)
2282 
2283 #define __HAL_RCC_LPDMA1_RELEASE_RESET()      CLEAR_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_LPDMA1RST)
2284 
2285 #define __HAL_RCC_ADF1_RELEASE_RESET()        CLEAR_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_ADF1RST)
2286 /**
2287   * @}
2288   */
2289 /** @defgroup RCC_APB1_Force_Release_Reset APB1 Peripheral Force Release Reset
2290   * @brief  Force or release APB1 peripheral reset.
2291   * @{
2292   */
2293 #define __HAL_RCC_APB1_FORCE_RESET()     do { \
2294                                                  WRITE_REG(RCC->APB1RSTR1, 0x027E403FU); \
2295                                                  WRITE_REG(RCC->APB1RSTR2, 0x00800222U); \
2296                                                } while(0)
2297 
2298 #define __HAL_RCC_TIM2_FORCE_RESET()     SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM2RST)
2299 
2300 #define __HAL_RCC_TIM3_FORCE_RESET()     SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM3RST)
2301 
2302 #define __HAL_RCC_TIM4_FORCE_RESET()     SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM4RST)
2303 
2304 #define __HAL_RCC_TIM5_FORCE_RESET()     SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM5RST)
2305 
2306 #define __HAL_RCC_TIM6_FORCE_RESET()     SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM6RST)
2307 
2308 #define __HAL_RCC_TIM7_FORCE_RESET()     SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM7RST)
2309 
2310 #define __HAL_RCC_SPI2_FORCE_RESET()     SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_SPI2RST)
2311 
2312 #define __HAL_RCC_USART2_FORCE_RESET()   SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USART2RST)
2313 
2314 #define __HAL_RCC_USART3_FORCE_RESET()   SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USART3RST)
2315 
2316 #define __HAL_RCC_UART4_FORCE_RESET()    SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_UART4RST)
2317 
2318 #define __HAL_RCC_UART5_FORCE_RESET()    SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_UART5RST)
2319 
2320 #define __HAL_RCC_I2C1_FORCE_RESET()     SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C1RST)
2321 
2322 #define __HAL_RCC_I2C2_FORCE_RESET()     SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C2RST)
2323 
2324 #define __HAL_RCC_CRS_FORCE_RESET()      SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_CRSRST)
2325 
2326 #define __HAL_RCC_I2C4_FORCE_RESET()     SET_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_I2C4RST)
2327 
2328 #define __HAL_RCC_LPTIM2_FORCE_RESET()   SET_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_LPTIM2RST)
2329 
2330 #define __HAL_RCC_FDCAN1_FORCE_RESET()   SET_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_FDCAN1RST)
2331 
2332 #define __HAL_RCC_UCPD_FORCE_RESET()     SET_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_UCPD1RST)
2333 
2334 #define __HAL_RCC_APB1_RELEASE_RESET()   do { \
2335                                                  WRITE_REG(RCC->APB1RSTR1, 0x00000000U); \
2336                                                  WRITE_REG(RCC->APB1RSTR2, 0x00000000U); \
2337                                                } while(0)
2338 
2339 #define __HAL_RCC_TIM2_RELEASE_RESET()    CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM2RST)
2340 
2341 #define __HAL_RCC_TIM3_RELEASE_RESET()    CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM3RST)
2342 
2343 #define __HAL_RCC_TIM4_RELEASE_RESET()    CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM4RST)
2344 
2345 #define __HAL_RCC_TIM5_RELEASE_RESET()    CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM5RST)
2346 
2347 #define __HAL_RCC_TIM6_RELEASE_RESET()    CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM6RST)
2348 
2349 #define __HAL_RCC_TIM7_RELEASE_RESET()    CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM7RST)
2350 
2351 #define __HAL_RCC_SPI2_RELEASE_RESET()    CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_SPI2RST)
2352 
2353 #define __HAL_RCC_USART2_RELEASE_RESET()  CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USART2RST)
2354 
2355 #define __HAL_RCC_USART3_RELEASE_RESET()  CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USART3RST)
2356 
2357 #define __HAL_RCC_UART4_RELEASE_RESET()   CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_UART4RST)
2358 
2359 #define __HAL_RCC_UART5_RELEASE_RESET()   CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_UART5RST)
2360 
2361 #define __HAL_RCC_I2C1_RELEASE_RESET()    CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C1RST)
2362 
2363 #define __HAL_RCC_I2C2_RELEASE_RESET()    CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C2RST)
2364 
2365 #define __HAL_RCC_CRS_RELEASE_RESET()     CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_CRSRST)
2366 
2367 #define __HAL_RCC_I2C4_RELEASE_RESET()    CLEAR_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_I2C4RST)
2368 
2369 #define __HAL_RCC_LPTIM2_RELEASE_RESET()  CLEAR_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_LPTIM2RST)
2370 
2371 #define __HAL_RCC_FDCAN1_RELEASE_RESET()  CLEAR_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_FDCAN1RST)
2372 
2373 #define __HAL_RCC_UCPD_RELEASE_RESET()    CLEAR_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_UCPD1RST)
2374 /**
2375   * @}
2376   */
2377 
2378 /** @defgroup RCC_APB2_Force_Release_Reset APB2 Peripheral Force Release Reset
2379   * @brief  Force or release APB2 peripheral reset.
2380   * @{
2381   */
2382 #define __HAL_RCC_APB2_FORCE_RESET()          WRITE_REG(RCC->APB2RSTR, 0x00677800U)
2383 
2384 #define __HAL_RCC_TIM1_FORCE_RESET()          SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM1RST)
2385 
2386 #define __HAL_RCC_SPI1_FORCE_RESET()          SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SPI1RST)
2387 
2388 #define __HAL_RCC_TIM8_FORCE_RESET()          SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM8RST)
2389 
2390 #define __HAL_RCC_USART1_FORCE_RESET()        SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_USART1RST)
2391 
2392 #define __HAL_RCC_TIM15_FORCE_RESET()         SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM15RST)
2393 
2394 #define __HAL_RCC_TIM16_FORCE_RESET()         SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM16RST)
2395 
2396 #define __HAL_RCC_TIM17_FORCE_RESET()         SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM17RST)
2397 
2398 #define __HAL_RCC_SAI1_FORCE_RESET()          SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SAI1RST)
2399 
2400 #define __HAL_RCC_SAI2_FORCE_RESET()          SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SAI2RST)
2401 
2402 #define __HAL_RCC_APB2_RELEASE_RESET()        WRITE_REG(RCC->APB2RSTR, 0x00000000U)
2403 
2404 #define __HAL_RCC_TIM1_RELEASE_RESET()        CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM1RST)
2405 
2406 #define __HAL_RCC_SPI1_RELEASE_RESET()        CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SPI1RST)
2407 
2408 #define __HAL_RCC_TIM8_RELEASE_RESET()        CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM8RST)
2409 
2410 #define __HAL_RCC_USART1_RELEASE_RESET()      CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_USART1RST)
2411 
2412 #define __HAL_RCC_TIM15_RELEASE_RESET()       CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM15RST)
2413 
2414 #define __HAL_RCC_TIM16_RELEASE_RESET()       CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM16RST)
2415 
2416 #define __HAL_RCC_TIM17_RELEASE_RESET()       CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM17RST)
2417 
2418 #define __HAL_RCC_SAI1_RELEASE_RESET()        CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SAI1RST)
2419 
2420 #define __HAL_RCC_SAI2_RELEASE_RESET()        CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SAI2RST)
2421 /**
2422   * @}
2423   */
2424 
2425 /** @defgroup RCC_APB3_Force_Release_Reset APB3 Peripheral Force Release Reset
2426   * @brief  Force or release APB3 peripheral reset.
2427   * @{
2428   */
2429 #define __HAL_RCC_APB3_FORCE_RESET()           WRITE_REG(RCC->APB3RSTR, 0x0010F8E2U)
2430 
2431 #define __HAL_RCC_SYSCFG_FORCE_RESET()         SET_BIT(RCC->APB3RSTR, RCC_APB3RSTR_SYSCFGRST)
2432 
2433 #define __HAL_RCC_SPI3_FORCE_RESET()           SET_BIT(RCC->APB3RSTR, RCC_APB3RSTR_SPI3RST)
2434 
2435 #define __HAL_RCC_LPUART1_FORCE_RESET()        SET_BIT(RCC->APB3RSTR, RCC_APB3RSTR_LPUART1RST)
2436 
2437 #define __HAL_RCC_I2C3_FORCE_RESET()           SET_BIT(RCC->APB3RSTR, RCC_APB3RSTR_I2C3RST)
2438 
2439 #define __HAL_RCC_LPTIM1_FORCE_RESET()         SET_BIT(RCC->APB3RSTR, RCC_APB3RSTR_LPTIM1RST)
2440 
2441 #define __HAL_RCC_LPTIM3_FORCE_RESET()         SET_BIT(RCC->APB3RSTR, RCC_APB3RSTR_LPTIM3RST)
2442 
2443 #define __HAL_RCC_LPTIM4_FORCE_RESET()         SET_BIT(RCC->APB3RSTR, RCC_APB3RSTR_LPTIM4RST)
2444 
2445 #define __HAL_RCC_OPAMP_FORCE_RESET()          SET_BIT(RCC->APB3RSTR, RCC_APB3RSTR_OPAMPRST)
2446 
2447 #define __HAL_RCC_COMP_FORCE_RESET()           SET_BIT(RCC->APB3RSTR, RCC_APB3RSTR_COMPRST)
2448 
2449 #define __HAL_RCC_VREF_FORCE_RESET()           SET_BIT(RCC->APB3RSTR, RCC_APB3RSTR_VREFRST)
2450 
2451 #define __HAL_RCC_APB3_RELEASE_RESET()         WRITE_REG(RCC->APB3RSTR, 0x00000000U)
2452 
2453 #define __HAL_RCC_SYSCFG_RELEASE_RESET()       CLEAR_BIT(RCC->APB3RSTR, RCC_APB3RSTR_SYSCFGRST)
2454 
2455 #define __HAL_RCC_SPI3_RELEASE_RESET()         CLEAR_BIT(RCC->APB3RSTR, RCC_APB3RSTR_SPI3RST)
2456 
2457 #define __HAL_RCC_LPUART1_RELEASE_RESET()      CLEAR_BIT(RCC->APB3RSTR, RCC_APB3RSTR_LPUART1RST)
2458 
2459 #define __HAL_RCC_I2C3_RELEASE_RESET()         CLEAR_BIT(RCC->APB3RSTR, RCC_APB3RSTR_I2C3RST)
2460 
2461 #define __HAL_RCC_LPTIM1_RELEASE_RESET()       CLEAR_BIT(RCC->APB3RSTR, RCC_APB3RSTR_LPTIM1RST)
2462 
2463 #define __HAL_RCC_LPTIM3_RELEASE_RESET()       CLEAR_BIT(RCC->APB3RSTR, RCC_APB3RSTR_LPTIM3RST)
2464 
2465 #define __HAL_RCC_LPTIM4_RELEASE_RESET()       CLEAR_BIT(RCC->APB3RSTR, RCC_APB3RSTR_LPTIM4RST)
2466 
2467 #define __HAL_RCC_OPAMP_RELEASE_RESET()        CLEAR_BIT(RCC->APB3RSTR, RCC_APB3RSTR_OPAMPRST)
2468 
2469 #define __HAL_RCC_COMP_RELEASE_RESET()         CLEAR_BIT(RCC->APB3RSTR, RCC_APB3RSTR_COMPRST)
2470 
2471 #define __HAL_RCC_VREF_RELEASE_RESET()         CLEAR_BIT(RCC->APB3RSTR, RCC_APB3RSTR_VREFRST)
2472 /**
2473   * @}
2474   */
2475 
2476 /** @defgroup RCC_AHB1_Peripheral_Clock_Sleep_Enable_Disable AHB1 Peripheral Clock Sleep Enable Disable
2477   * @brief  Enable or disable the AHB1 peripheral clock during Low Power (Sleep and Stop) mode.
2478   * @note   Peripheral clock gating in SLEEP and STOP modes can be used to further reduce
2479   *         power consumption.
2480   * @note   After wakeup from SLEEP or STOP modes, the peripheral clock is enabled again.
2481   * @note   By default, all peripheral clocks are enabled during SLEEP mode,in STOP mode peripheral clock
2482   *         is enabled only when a peripheral requests AHB clock.
2483   * @{
2484   */
2485 #define __HAL_RCC_GPDMA1_CLK_SLEEP_ENABLE()         SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_GPDMA1SMEN)
2486 
2487 #define __HAL_RCC_CORDIC_CLK_SLEEP_ENABLE()         SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_CORDICSMEN)
2488 
2489 #define __HAL_RCC_FMAC_CLK_SLEEP_ENABLE()           SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_FMACSMEN)
2490 
2491 #define __HAL_RCC_MDF1_CLK_SLEEP_ENABLE()           SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_MDF1SMEN)
2492 
2493 #define __HAL_RCC_FLASH_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_FLASHSMEN)
2494 
2495 #define __HAL_RCC_CRC_CLK_SLEEP_ENABLE()            SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_CRCSMEN)
2496 
2497 #define __HAL_RCC_TSC_CLK_SLEEP_ENABLE()            SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_TSCSMEN)
2498 
2499 #define __HAL_RCC_RAMCFG_CLK_SLEEP_ENABLE()         SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_RAMCFGSMEN)
2500 
2501 #define __HAL_RCC_DMA2D_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA2DSMEN)
2502 
2503 #define __HAL_RCC_GTZC1_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_GTZC1SMEN)
2504 
2505 #define __HAL_RCC_BKPSRAM_CLK_SLEEP_ENABLE()        SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_BKPSRAMSMEN)
2506 
2507 #define __HAL_RCC_ICACHE_CLK_SLEEP_ENABLE()         SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_ICACHESMEN)
2508 
2509 #define __HAL_RCC_DCACHE1_CLK_SLEEP_ENABLE()        SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DCACHE1SMEN)
2510 
2511 #define __HAL_RCC_SRAM1_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_SRAM1SMEN)
2512 
2513 #define __HAL_RCC_GPDMA1_CLK_SLEEP_DISABLE()        CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_GPDMA1SMEN)
2514 
2515 #define __HAL_RCC_CORDIC_CLK_SLEEP_DISABLE()        CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_CORDICSMEN)
2516 
2517 #define __HAL_RCC_FMAC_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_FMACSMEN)
2518 
2519 #define __HAL_RCC_MDF1_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_MDF1SMEN)
2520 
2521 #define __HAL_RCC_FLASH_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_FLASHSMEN)
2522 
2523 #define __HAL_RCC_CRC_CLK_SLEEP_DISABLE()           CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_CRCSMEN)
2524 
2525 #define __HAL_RCC_TSC_CLK_SLEEP_DISABLE()           CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_TSCSMEN)
2526 
2527 #define __HAL_RCC_RAMCFG_CLK_SLEEP_DISABLE()        CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_RAMCFGSMEN)
2528 
2529 #define __HAL_RCC_DMA2D_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA2DSMEN)
2530 
2531 #define __HAL_RCC_GTZC1_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_GTZC1SMEN)
2532 
2533 #define __HAL_RCC_BKPSRAM_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_BKPSRAMSMEN)
2534 
2535 #define __HAL_RCC_ICACHE_CLK_SLEEP_DISABLE()        CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_ICACHESMEN)
2536 
2537 #define __HAL_RCC_DCACHE1_CLK_SLEEP_DISABLE()        CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DCACHE1SMEN)
2538 
2539 #define __HAL_RCC_SRAM1_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_SRAM1SMEN)
2540 /**
2541   * @}
2542   */
2543 
2544 /** @defgroup RCC_AHB2_Peripheral_Clock_Sleep_Enable_Disable AHB2 Peripheral Clock Sleep Enable Disable
2545   * @brief  Enable or disable the AHB2 peripheral clock during Low Power (Sleep and Stop) mode.
2546   * @note   Peripheral clock gating in SLEEP and STOP modes can be used to further reduce
2547   *         power consumption.
2548   * @note   After wakeup from SLEEP or STOP modes, the peripheral clock is enabled again.
2549   * @note   By default, all peripheral clocks are enabled during SLEEP mode,in STOP mode peripheral clock
2550   *         is enabled only when a peripheral requests AHB clock.
2551   * @{
2552   */
2553 #define __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOASMEN)
2554 
2555 #define __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOBSMEN)
2556 
2557 #define __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOCSMEN)
2558 
2559 #define __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIODSMEN)
2560 
2561 #define __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOESMEN)
2562 
2563 #define __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOFSMEN)
2564 
2565 #define __HAL_RCC_GPIOG_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOGSMEN)
2566 
2567 #define __HAL_RCC_GPIOH_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOHSMEN)
2568 
2569 #define __HAL_RCC_GPIOI_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOISMEN)
2570 
2571 #define __HAL_RCC_ADC1_CLK_SLEEP_ENABLE()           SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_ADC1SMEN)
2572 
2573 #define __HAL_RCC_DCMI_PSSI_CLK_SLEEP_ENABLE()      SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_DCMI_PSSISMEN)
2574 
2575 #define __HAL_RCC_USB_CLK_SLEEP_ENABLE()            SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_OTGSMEN)
2576 
2577 #if defined(AES)
2578 #define __HAL_RCC_AES_CLK_SLEEP_ENABLE()            SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_AESSMEN);
2579 #endif /* AES */
2580 
2581 #if defined(HASH)
2582 #define __HAL_RCC_HASH_CLK_SLEEP_ENABLE()           SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_HASHSMEN)
2583 #endif /* HASH */
2584 
2585 #define __HAL_RCC_RNG_CLK_SLEEP_ENABLE()            SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_RNGSMEN)
2586 
2587 #define __HAL_RCC_PKA_CLK_SLEEP_ENABLE()            SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_PKASMEN)
2588 
2589 #define __HAL_RCC_SAES_CLK_SLEEP_ENABLE()           SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_SAESSMEN)
2590 
2591 #define __HAL_RCC_OCTOSPIM_CLK_SLEEP_ENABLE()       SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_OCTOSPIMSMEN)
2592 
2593 #define __HAL_RCC_OTFDEC1_CLK_SLEEP_ENABLE()        SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_OTFDEC1SMEN)
2594 
2595 #define __HAL_RCC_OTFDEC2_CLK_SLEEP_ENABLE()        SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_OTFDEC2SMEN)
2596 
2597 #define __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE()         SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_SDMMC1SMEN)
2598 
2599 #define __HAL_RCC_SDMMC2_CLK_SLEEP_ENABLE()         SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_SDMMC2SMEN)
2600 
2601 #define __HAL_RCC_SRAM2_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_SRAM2SMEN)
2602 
2603 #define __HAL_RCC_SRAM3_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_SRAM3SMEN)
2604 
2605 #define __HAL_RCC_FMC_CLK_SLEEP_ENABLE()            SET_BIT(RCC->AHB2SMENR2, RCC_AHB2SMENR2_FSMCSMEN)
2606 
2607 #define __HAL_RCC_OSPI1_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB2SMENR2, RCC_AHB2SMENR2_OCTOSPI1SMEN)
2608 
2609 #define __HAL_RCC_OSPI2_CLK_SLEEP_ENABLE()          SET_BIT(RCC->AHB2SMENR2, RCC_AHB2SMENR2_OCTOSPI2SMEN)
2610 
2611 #define __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOASMEN)
2612 
2613 #define __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOBSMEN)
2614 
2615 #define __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOCSMEN)
2616 
2617 #define __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIODSMEN)
2618 
2619 #define __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOESMEN)
2620 
2621 #define __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOFSMEN)
2622 
2623 #define __HAL_RCC_GPIOG_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOGSMEN)
2624 
2625 #define __HAL_RCC_GPIOH_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOHSMEN)
2626 
2627 #define __HAL_RCC_GPIOI_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_GPIOISMEN)
2628 
2629 #define __HAL_RCC_ADC1_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_ADC1SMEN)
2630 
2631 #define __HAL_RCC_DCMI_PSSI_CLK_SLEEP_DISABLE()     CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_DCMI_PSSISMEN)
2632 
2633 #define __HAL_RCC_USB_CLK_SLEEP_DISABLE()           CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_OTGSMEN)
2634 
2635 #if defined(AES)
2636 #define __HAL_RCC_AES_CLK_SLEEP_DISABLE()           CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_AESSMEN);
2637 #endif /* AES */
2638 
2639 #if defined(HASH)
2640 #define __HAL_RCC_HASH_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_HASHSMEN)
2641 #endif /* HASH */
2642 
2643 #define __HAL_RCC_RNG_CLK_SLEEP_DISABLE()           CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_RNGSMEN)
2644 
2645 #define __HAL_RCC_PKA_CLK_SLEEP_DISABLE()           CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_PKASMEN)
2646 
2647 #define __HAL_RCC_SAES_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_SAESSMEN)
2648 
2649 #define __HAL_RCC_OCTOSPIM_CLK_SLEEP_DISABLE()      CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_OCTOSPIMSMEN)
2650 
2651 #define __HAL_RCC_OTFDEC1_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_OTFDEC1SMEN)
2652 
2653 #define __HAL_RCC_OTFDEC2_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_OTFDEC2SMEN)
2654 
2655 #define __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE()        CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_SDMMC1SMEN)
2656 
2657 #define __HAL_RCC_SDMMC2_CLK_SLEEP_DISABLE()        CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_SDMMC2SMEN)
2658 
2659 #define __HAL_RCC_SRAM2_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_SRAM2SMEN)
2660 
2661 #define __HAL_RCC_SRAM3_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB2SMENR1, RCC_AHB2SMENR1_SRAM3SMEN)
2662 
2663 #define __HAL_RCC_FMC_CLK_SLEEP_DISABLE()           CLEAR_BIT(RCC->AHB2SMENR2, RCC_AHB2SMENR2_FSMCSMEN)
2664 
2665 #define __HAL_RCC_OSPI1_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB2SMENR2, RCC_AHB2SMENR2_OCTOSPI1SMEN)
2666 
2667 #define __HAL_RCC_OSPI2_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->AHB2SMENR2, RCC_AHB2SMENR2_OCTOSPI2SMEN)
2668 /**
2669   * @}
2670   */
2671 
2672 /** @defgroup RCC_AHB3_Clock_Sleep_Enable_Disable AHB3SMENR Peripheral Clock Sleep Enable Disable
2673   * @brief  Enable or disable the AHB3SMENR peripheral clock during Low Power (Sleep and STOP ) mode.
2674   * @note   Peripheral clock gating in SLEEP and STOP modes can be used to further reduce
2675   *         power consumption.
2676   * @note   After wakeup from SLEEP or STOP modes, the peripheral clock is enabled again.
2677   * @note   By default, all peripheral clocks are enabled during SLEEP mode,in STOP mode peripheral clock
2678   *         is enabled only when a peripheral requests AHB clock.
2679   * @{
2680   */
2681 #define __HAL_RCC_LPGPIO1_CLK_SLEEP_ENABLE()           SET_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_LPGPIO1SMEN)
2682 
2683 #define __HAL_RCC_PWR_CLK_SLEEP_ENABLE()              SET_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_PWRSMEN)
2684 
2685 #define __HAL_RCC_ADC4_CLK_SLEEP_ENABLE()             SET_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_ADC4SMEN)
2686 
2687 #define __HAL_RCC_DAC1_CLK_SLEEP_ENABLE()             SET_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_DAC1SMEN)
2688 
2689 #define __HAL_RCC_LPDMA1_CLK_SLEEP_ENABLE()            SET_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_LPDMA1SMEN)
2690 
2691 #define __HAL_RCC_ADF1_CLK_SLEEP_ENABLE()             SET_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_ADF1SMEN)
2692 
2693 #define __HAL_RCC_GTZC2_CLK_SLEEP_ENABLE()            SET_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_GTZC2SMEN)
2694 
2695 #define __HAL_RCC_SRAM4_CLK_SLEEP_ENABLE()            SET_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_SRAM4SMEN)
2696 
2697 #define __HAL_RCC_LPGPIO1_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_LPGPIO1SMEN)
2698 
2699 #define __HAL_RCC_PWR_CLK_SLEEP_DISABLE()             CLEAR_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_PWRSMEN)
2700 
2701 #define __HAL_RCC_ADC4_CLK_SLEEP_DISABLE()            CLEAR_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_ADC4SMEN)
2702 
2703 #define __HAL_RCC_DAC1_CLK_SLEEP_DISABLE()            CLEAR_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_DAC1SMEN)
2704 
2705 #define __HAL_RCC_LPDMA1_CLK_SLEEP_DISABLE()           CLEAR_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_LPDMA1SMEN)
2706 
2707 #define __HAL_RCC_ADF1_CLK_SLEEP_DISABLE()            CLEAR_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_ADF1SMEN)
2708 
2709 #define __HAL_RCC_GTZC2_CLK_SLEEP_DISABLE()           CLEAR_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_GTZC2SMEN)
2710 
2711 #define __HAL_RCC_SRAM4_CLK_SLEEP_DISABLE()           CLEAR_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_SRAM4SMEN)
2712 /**
2713   * @}
2714   */
2715 
2716 /** @defgroup RCC_APB1_Clock_Sleep_Enable_Disable APB1 Peripheral Clock Sleep Enable Disable
2717   * @brief  Enable or disable the APB1 peripheral clock during Low Power (Sleep and Stop) mode.
2718   * @note   Peripheral clock gating in SLEEP and STOP modes can be used to further reduce
2719   *         power consumption.
2720   * @note   After wakeup from SLEEP or STOP modes, the peripheral clock is enabled again.
2721   * @note   By default, all peripheral clocks are enabled during SLEEP mode,in STOP mode peripheral clock
2722   *         is enabled only when a peripheral requests APB clock.
2723   * @{
2724   */
2725 #define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE()        SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM2SMEN)
2726 
2727 #define __HAL_RCC_TIM3_CLK_SLEEP_ENABLE()        SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM3SMEN)
2728 
2729 #define __HAL_RCC_TIM4_CLK_SLEEP_ENABLE()        SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM4SMEN)
2730 
2731 #define __HAL_RCC_TIM5_CLK_SLEEP_ENABLE()        SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM5SMEN)
2732 
2733 #define __HAL_RCC_TIM6_CLK_SLEEP_ENABLE()        SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM6SMEN)
2734 
2735 #define __HAL_RCC_TIM7_CLK_SLEEP_ENABLE()        SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM7SMEN)
2736 
2737 #define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE()        SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_WWDGSMEN)
2738 
2739 #define __HAL_RCC_SPI2_CLK_SLEEP_ENABLE()        SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI2SMEN)
2740 
2741 #define __HAL_RCC_USART2_CLK_SLEEP_ENABLE()      SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART2SMEN)
2742 
2743 #define __HAL_RCC_USART3_CLK_SLEEP_ENABLE()      SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART3SMEN)
2744 
2745 #define __HAL_RCC_UART4_CLK_SLEEP_ENABLE()       SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART4SMEN)
2746 
2747 #define __HAL_RCC_UART5_CLK_SLEEP_ENABLE()       SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART5SMEN)
2748 
2749 #define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE()        SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C1SMEN)
2750 
2751 #define __HAL_RCC_I2C2_CLK_SLEEP_ENABLE()        SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C2SMEN)
2752 
2753 #define __HAL_RCC_CRS_CLK_SLEEP_ENABLE()         SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CRSSMEN)
2754 
2755 #define __HAL_RCC_I2C4_CLK_SLEEP_ENABLE()        SET_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_I2C4SMEN)
2756 
2757 #define __HAL_RCC_LPTIM2_CLK_SLEEP_ENABLE()      SET_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPTIM2SMEN)
2758 
2759 #define __HAL_RCC_FDCAN1_CLK_SLEEP_ENABLE()      SET_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_FDCAN1SMEN)
2760 
2761 #define __HAL_RCC_UCPD_CLK_SLEEP_ENABLE()        SET_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_UCPD1SMEN)
2762 
2763 #define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM2SMEN)
2764 
2765 #define __HAL_RCC_TIM3_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM3SMEN)
2766 
2767 #define __HAL_RCC_TIM4_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM4SMEN)
2768 
2769 #define __HAL_RCC_TIM5_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM5SMEN)
2770 
2771 #define __HAL_RCC_TIM6_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM6SMEN)
2772 
2773 #define __HAL_RCC_TIM7_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM7SMEN)
2774 
2775 #define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_WWDGSMEN)
2776 
2777 #define __HAL_RCC_SPI2_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI2SMEN)
2778 
2779 #define __HAL_RCC_USART2_CLK_SLEEP_DISABLE()     CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART2SMEN)
2780 
2781 #define __HAL_RCC_USART3_CLK_SLEEP_DISABLE()     CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART3SMEN)
2782 
2783 #define __HAL_RCC_UART4_CLK_SLEEP_DISABLE()      CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART4SMEN)
2784 
2785 #define __HAL_RCC_UART5_CLK_SLEEP_DISABLE()      CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART5SMEN)
2786 
2787 #define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C1SMEN)
2788 
2789 #define __HAL_RCC_I2C2_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C2SMEN)
2790 
2791 #define __HAL_RCC_CRS_CLK_SLEEP_DISABLE()        CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CRSSMEN)
2792 
2793 #define __HAL_RCC_I2C4_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_I2C4SMEN)
2794 
2795 #define __HAL_RCC_LPTIM2_CLK_SLEEP_DISABLE()     CLEAR_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPTIM2SMEN)
2796 
2797 #define __HAL_RCC_FDCAN1_CLK_SLEEP_DISABLE()     CLEAR_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_FDCAN1SMEN)
2798 
2799 #define __HAL_RCC_UCPD_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_UCPD1SMEN)
2800 /**
2801   * @}
2802   */
2803 
2804 /** @defgroup RCC_APB2_Clock_Sleep_Enable_Disable APB2 Peripheral Clock Sleep Enable Disable
2805   * @brief  Enable or disable the APB2 peripheral clock during Low Power (Sleep and Stop) mode.
2806   * @note   Peripheral clock gating in SLEEP and STOP modes can be used to further reduce
2807   *         power consumption.
2808   * @note   After wakeup from SLEEP or STOP mode, the pseripheral clock is enabled again.
2809   * @note   By default, all peripheral clocks are enabled during SLEEP mode,in STOP mode peripheral clock
2810   *         is enabled only when a peripheral requests APB clock.
2811   * @{
2812   */
2813 #define __HAL_RCC_TIM1_CLK_SLEEP_ENABLE()           SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM1SMEN)
2814 
2815 #define __HAL_RCC_SPI1_CLK_SLEEP_ENABLE()           SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SPI1SMEN)
2816 
2817 #define __HAL_RCC_TIM8_CLK_SLEEP_ENABLE()           SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM8SMEN)
2818 
2819 #define __HAL_RCC_USART1_CLK_SLEEP_ENABLE()         SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_USART1SMEN)
2820 
2821 #define __HAL_RCC_TIM15_CLK_SLEEP_ENABLE()          SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM15SMEN)
2822 
2823 #define __HAL_RCC_TIM16_CLK_SLEEP_ENABLE()          SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM16SMEN)
2824 
2825 #define __HAL_RCC_TIM17_CLK_SLEEP_ENABLE()          SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM17SMEN)
2826 
2827 #define __HAL_RCC_SAI1_CLK_SLEEP_ENABLE()           SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI1SMEN)
2828 
2829 #define __HAL_RCC_SAI2_CLK_SLEEP_ENABLE()           SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI2SMEN)
2830 
2831 #define __HAL_RCC_TIM1_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM1SMEN)
2832 
2833 #define __HAL_RCC_SPI1_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SPI1SMEN)
2834 
2835 #define __HAL_RCC_TIM8_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM8SMEN)
2836 
2837 #define __HAL_RCC_USART1_CLK_SLEEP_DISABLE()        CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_USART1SMEN)
2838 
2839 #define __HAL_RCC_TIM15_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM15SMEN)
2840 
2841 #define __HAL_RCC_TIM16_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM16SMEN)
2842 
2843 #define __HAL_RCC_TIM17_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM17SMEN)
2844 
2845 #define __HAL_RCC_SAI1_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI1SMEN)
2846 
2847 #define __HAL_RCC_SAI2_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI2SMEN)
2848 
2849 /**
2850   * @}
2851   */
2852 
2853 /** @defgroup RCC_APB3_Clock_Sleep_Enable_Disable APB3 Peripheral Clock Sleep Enable Disable
2854   * @brief  Enable or disable the APB3 peripheral clock during Low Power (Sleep and Stop) mode.
2855   * @note   Peripheral clock gating in SLEEP and STOP modes can be used to further reduce
2856   *         power consumption.
2857   * @note   After wakeup from SLEEP or STOP modes, the peripheral clock is enabled again.
2858   * @note   By default, all peripheral clocks are enabled during SLEEP mode,in STOP mode peripheral clock
2859   *         is enabled only when a peripheral requests APB clock.
2860   * @{
2861   */
2862 #define __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE()         SET_BIT(RCC->APB3SMENR, RCC_APB3SMENR_SYSCFGSMEN)
2863 
2864 #define __HAL_RCC_SPI3_CLK_SLEEP_ENABLE()           SET_BIT(RCC->APB3SMENR, RCC_APB3SMENR_SPI3SMEN)
2865 
2866 #define __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE()        SET_BIT(RCC->APB3SMENR, RCC_APB3SMENR_LPUART1SMEN)
2867 
2868 #define __HAL_RCC_I2C3_CLK_SLEEP_ENABLE()           SET_BIT(RCC->APB3SMENR, RCC_APB3SMENR_I2C3SMEN)
2869 
2870 #define __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE()         SET_BIT(RCC->APB3SMENR, RCC_APB3SMENR_LPTIM1SMEN)
2871 
2872 #define __HAL_RCC_LPTIM3_CLK_SLEEP_ENABLE()         SET_BIT(RCC->APB3SMENR, RCC_APB3SMENR_LPTIM3SMEN)
2873 
2874 #define __HAL_RCC_LPTIM4_CLK_SLEEP_ENABLE()         SET_BIT(RCC->APB3SMENR, RCC_APB3SMENR_LPTIM4SMEN)
2875 
2876 #define __HAL_RCC_OPAMP_CLK_SLEEP_ENABLE()          SET_BIT(RCC->APB3SMENR, RCC_APB3SMENR_OPAMPSMEN)
2877 
2878 #define __HAL_RCC_COMP_CLK_SLEEP_ENABLE()           SET_BIT(RCC->APB3SMENR, RCC_APB3SMENR_COMPSMEN)
2879 
2880 #define __HAL_RCC_VREF_CLK_SLEEP_ENABLE()           SET_BIT(RCC->APB3SMENR, RCC_APB3SMENR_VREFSMEN)
2881 
2882 #define __HAL_RCC_RTCAPB_CLK_SLEEP_ENABLE()         SET_BIT(RCC->APB3SMENR, RCC_APB3SMENR_RTCAPBSMEN)
2883 
2884 #define __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE()        CLEAR_BIT(RCC->APB3SMENR, RCC_APB3SMENR_SYSCFGSMEN)
2885 
2886 #define __HAL_RCC_SPI3_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->APB3SMENR, RCC_APB3SMENR_SPI3SMEN)
2887 
2888 #define __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE()       CLEAR_BIT(RCC->APB3SMENR, RCC_APB3SMENR_LPUART1SMEN)
2889 
2890 #define __HAL_RCC_I2C3_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->APB3SMENR, RCC_APB3SMENR_I2C3SMEN)
2891 
2892 #define __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE()        CLEAR_BIT(RCC->APB3SMENR, RCC_APB3SMENR_LPTIM1SMEN)
2893 
2894 #define __HAL_RCC_LPTIM3_CLK_SLEEP_DISABLE()        CLEAR_BIT(RCC->APB3SMENR, RCC_APB3SMENR_LPTIM3SMEN)
2895 
2896 #define __HAL_RCC_LPTIM4_CLK_SLEEP_DISABLE()        CLEAR_BIT(RCC->APB3SMENR, RCC_APB3SMENR_LPTIM4SMEN)
2897 
2898 #define __HAL_RCC_OPAMP_CLK_SLEEP_DISABLE()         CLEAR_BIT(RCC->APB3SMENR, RCC_APB3SMENR_OPAMPSMEN)
2899 
2900 #define __HAL_RCC_COMP_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->APB3SMENR, RCC_APB3SMENR_COMPSMEN)
2901 
2902 #define __HAL_RCC_VREF_CLK_SLEEP_DISABLE()          CLEAR_BIT(RCC->APB3SMENR, RCC_APB3SMENR_VREFSMEN)
2903 
2904 #define __HAL_RCC_RTCAPB_CLK_SLEEP_DISABLE()        CLEAR_BIT(RCC->APB3SMENR, RCC_APB3SMENR_RTCAPBSMEN)
2905 /**
2906   * @}
2907   */
2908 
2909 /** @brief  Enable or disable peripheral bus clock  when SRD domain is in DRUN
2910   * @note   After reset, peripheral clock is disabled when CPUs are in CSTOP
2911   * @{
2912   */
2913 #define __HAL_RCC_SPI3_CLKAM_ENABLE()             SET_BIT(RCC->SRDAMR , RCC_SRDAMR_SPI3AMEN)
2914 
2915 #define __HAL_RCC_LPUART1_CLKAM_ENABLE()          SET_BIT(RCC->SRDAMR , RCC_SRDAMR_LPUART1AMEN)
2916 
2917 #define __HAL_RCC_I2C3_CLKAM_ENABLE()             SET_BIT(RCC->SRDAMR , RCC_SRDAMR_I2C3AMEN)
2918 
2919 #define __HAL_RCC_LPTIM1_CLKAM_ENABLE()           SET_BIT(RCC->SRDAMR , RCC_SRDAMR_LPTIM1AMEN)
2920 
2921 #define __HAL_RCC_LPTIM3_CLKAM_ENABLE()           SET_BIT(RCC->SRDAMR , RCC_SRDAMR_LPTIM3AMEN)
2922 
2923 #define __HAL_RCC_LPTIM4_CLKAM_ENABLE()           SET_BIT(RCC->SRDAMR , RCC_SRDAMR_LPTIM4AMEN)
2924 
2925 #define __HAL_RCC_OPAMP_CLKAM_ENABLE()            SET_BIT(RCC->SRDAMR , RCC_SRDAMR_OPAMPAMEN)
2926 
2927 #define __HAL_RCC_COMP12_CLKAM_ENABLE()           SET_BIT(RCC->SRDAMR , RCC_SRDAMR_COMPAMEN)
2928 
2929 #define __HAL_RCC_ADC4_CLKAM_ENABLE()             SET_BIT(RCC->SRDAMR , RCC_SRDAMR_ADC4AMEN)
2930 
2931 #define __HAL_RCC_VREF_CLKAM_ENABLE()             SET_BIT(RCC->SRDAMR , RCC_SRDAMR_VREFAMEN)
2932 
2933 #define __HAL_RCC_RTCAPB_CLKAM_ENABLE()           SET_BIT(RCC->SRDAMR , RCC_SRDAMR_RTCAPBAMEN)
2934 
2935 #define __HAL_RCC_LPGPIO1_CLKAM_ENABLE()           SET_BIT(RCC->SRDAMR , RCC_SRDAMR_LPGPIO1AMEN)
2936 
2937 #define __HAL_RCC_DAC1_CLKAM_ENABLE()             SET_BIT(RCC->SRDAMR , RCC_SRDAMR_DAC1AMEN)
2938 
2939 #define __HAL_RCC_LPDMA1_CLKAM_ENABLE()            SET_BIT(RCC->SRDAMR , RCC_SRDAMR_LPDMA1AMEN)
2940 
2941 #define __HAL_RCC_ADF1_CLKAM_ENABLE()             SET_BIT(RCC->SRDAMR , RCC_SRDAMR_ADF1AMEN)
2942 
2943 #define __HAL_RCC_SRAM4_CLKAM_ENABLE()            SET_BIT(RCC->SRDAMR , RCC_SRDAMR_SRAM4AMEN)
2944 
2945 
2946 #define __HAL_RCC_SPI3_CLKAM_DISABLE()            CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_SPI3AMEN)
2947 
2948 #define __HAL_RCC_LPUART1_CLKAM_DISABLE()         CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_LPUART1AMEN)
2949 
2950 #define __HAL_RCC_I2C3_CLKAM_DISABLE()            CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_I2C3AMEN)
2951 
2952 #define __HAL_RCC_LPTIM1_CLKAM_DISABLE()          CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_LPTIM1AMEN)
2953 
2954 #define __HAL_RCC_LPTIM3_CLKAM_DISABLE()          CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_LPTIM3AMEN)
2955 
2956 #define __HAL_RCC_LPTIM4_CLKAM_DISABLE()          CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_LPTIM4AMEN)
2957 
2958 #define __HAL_RCC_OPAMP_CLKAM_DISABLE()           CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_OPAMPAMEN)
2959 
2960 #define __HAL_RCC_COMP12_CLKAM_DISABLE()          CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_COMPAMEN)
2961 
2962 #define __HAL_RCC_ADC4_CLKAM_DISABLE()            CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_ADC4AMEN)
2963 
2964 #define __HAL_RCC_VREF_CLKAM_DISABLE()            CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_VREFAMEN)
2965 
2966 #define __HAL_RCC_RTCAPB_CLKAM_DISABLE()          CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_RTCAPBAMEN)
2967 
2968 #define __HAL_RCC_LPGPIO1_CLKAM_DISABLE()          CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_LPGPIO1AMEN)
2969 
2970 #define __HAL_RCC_DAC1_CLKAM_DISABLE()            CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_DAC1AMEN)
2971 
2972 #define __HAL_RCC_LPDMA1_CLKAM_DISABLE()           CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_LPDMA1AMEN)
2973 
2974 #define __HAL_RCC_ADF1_CLKAM_DISABLE()            CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_ADF1AMEN)
2975 
2976 #define __HAL_RCC_SRAM4_CLKAM_DISABLE()           CLEAR_BIT(RCC->SRDAMR , RCC_SRDAMR_SRAM4AMEN)
2977 /**
2978   * @}
2979   */
2980 
2981 /** @defgroup RCC_Backup_Domain_Reset RCC Backup Domain Reset
2982   * @{
2983   */
2984 
2985 /** @brief  Macros to force or release the Backup domain reset.
2986   * @note   This function resets the RTC peripheral (including the backup registers)
2987   *         and the RTC clock source selection in RCC_CSR register.
2988   * @note   The BKPSRAM is not affected by this reset.
2989   * @retval None
2990   */
2991 #define __HAL_RCC_BACKUPRESET_FORCE()   SET_BIT(RCC->BDCR, RCC_BDCR_BDRST)
2992 
2993 #define __HAL_RCC_BACKUPRESET_RELEASE() CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST)
2994 
2995 /**
2996   * @}
2997   */
2998 
2999 /** @defgroup RCC_RTC_Clock_Configuration RCC RTC Clock Configuration
3000   * @{
3001   */
3002 
3003 /** @brief  Macros to enable or disable the RTC clock.
3004   * @note   As the RTC is in the Backup domain and write access is denied to
3005   *         this domain after reset, you have to enable write access using
3006   *         HAL_PWR_EnableBkUpAccess() function before to configure the RTC
3007   *         (to be done once after reset).
3008   * @note   These macros must be used after the RTC clock source was selected.
3009   * @retval None
3010   */
3011 #define __HAL_RCC_RTC_ENABLE()         SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN)
3012 
3013 #define __HAL_RCC_RTC_DISABLE()        CLEAR_BIT(RCC->BDCR, RCC_BDCR_RTCEN)
3014 
3015 /**
3016   * @}
3017   */
3018 
3019 /** @brief  Macros to enable or disable the Internal High Speed 16MHz oscillator (HSI).
3020   * @note   The HSI is stopped by hardware when entering STOP and STANDBY modes.
3021   *         It is used (enabled by hardware) as system clock source after startup
3022   *         from Reset, wakeup from STOP and STANDBY mode, or in case of failure
3023   *         of the HSE used directly or indirectly as system clock (if the Clock
3024   *         Security System CSS is enabled).
3025   * @note   HSI can not be stopped if it is used as system clock source. In this case,
3026   *         you have to select another source of the system clock then stop the HSI.
3027   * @note   After enabling the HSI, the application software should wait on HSIRDY
3028   *         flag to be set indicating that HSI clock is stable and can be used as
3029   *         system clock source.
3030   *         This parameter can be: ENABLE or DISABLE.
3031   * @note   When the HSI is stopped, HSIRDY flag goes low after 6 HSI oscillator
3032   *         clock cycles.
3033   * @retval None
3034   */
3035 #define __HAL_RCC_HSI_ENABLE()  SET_BIT(RCC->CR, RCC_CR_HSION)
3036 
3037 #define __HAL_RCC_HSI_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSION)
3038 
3039 /** @brief  Macro to adjust the Internal High Speed 16MHz oscillator (HSI) calibration value.
3040   * @note   The calibration is used to compensate for the variations in voltage
3041   *         and temperature that influence the frequency of the internal HSI RC.
3042   * @param  __HSICALIBRATIONVALUE__: specifies the calibration trimming value
3043   *         (default is RCC_HSICALIBRATION_DEFAULT).
3044   *         This parameter must be a number between 0 and 0x20.
3045   * @retval None
3046   */
3047 #define __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(__HSICALIBRATIONVALUE__) \
3048   MODIFY_REG(RCC->ICSCR3, RCC_ICSCR3_HSITRIM, (uint32_t)(__HSICALIBRATIONVALUE__) << RCC_ICSCR3_HSITRIM_Pos)
3049 
3050 
3051 /**
3052   * @brief    Macros to enable or disable the force of the Internal High Speed oscillator (HSI)
3053   *           in STOP mode to be quickly available as kernel clock for USARTs, LPUART and I2Cs.
3054   * @note     Keeping the HSI ON in STOP mode allows to avoid slowing down the communication
3055   *           speed because of the HSI startup time.
3056   * @note     The enable of this function has not effect on the HSION bit.
3057   *           This parameter can be: ENABLE or DISABLE.
3058   * @retval None
3059   */
3060 #define __HAL_RCC_HSISTOP_ENABLE()     SET_BIT(RCC->CR, RCC_CR_HSIKERON)
3061 
3062 #define __HAL_RCC_HSISTOP_DISABLE()    CLEAR_BIT(RCC->CR, RCC_CR_HSIKERON)
3063 
3064 /**
3065   * @brief    Macros to enable or disable the force of the Internal Multi Speed kernel oscillator (MSIK)
3066   *           in STOP mode to be quickly available as kernel clock for USARTs, LPUART and I2Cs.
3067   * @note     Keeping the MSIK ON in STOP mode allows to avoid slowing down the communication
3068   *           speed because of the MSIK startup time.
3069   * @note     The enable of this function has not effect on the MSIKON bit.
3070   * @note     The MSIKERON must be configured at 0 before entreing stop 3 mode.
3071   *           This parameter can be: ENABLE or DISABLE.
3072   * @retval None
3073   */
3074 #define __HAL_RCC_MSIKSTOP_ENABLE()     SET_BIT(RCC->CR, RCC_CR_MSIKERON)
3075 
3076 #define __HAL_RCC_MSIKSTOP_DISABLE()    CLEAR_BIT(RCC->CR, RCC_CR_MSIKERON)
3077 
3078 /**
3079   * @brief  Macros to enable or disable the Internal Multi Speed oscillator (MSI).
3080   * @note     The MSI is stopped by hardware when entering STOP and STANDBY modes.
3081   *           It is used (enabled by hardware) as system clock source after
3082   *           startup from Reset, wakeup from STOP and STANDBY mode, or in case
3083   *           of failure of the HSE used directly or indirectly as system clock
3084   *           (if the Clock Security System CSS is enabled).
3085   * @note     MSI can not be stopped if it is used as system clock source.
3086   *           In this case, you have to select another source of the system
3087   *           clock then stop the MSI.
3088   * @note     After enabling the MSI, the application software should wait on
3089   *           MSIRDY flag to be set indicating that MSI clock is stable and can
3090   *           be used as system clock source.
3091   * @note   When the MSI is stopped, MSIRDY flag goes low after 6 MSI oscillator
3092   *         clock cycles.
3093   * @retval None
3094   */
3095 #define __HAL_RCC_MSI_ENABLE()  SET_BIT(RCC->CR, RCC_CR_MSISON)
3096 
3097 #define __HAL_RCC_MSI_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_MSISON)
3098 
3099 /**
3100   * @brief  Macro configures the Internal Multi Speed oscillator (MSI) clock range in run mode
3101   * @note     After restart from Reset , the MSI clock is around 4 MHz.
3102   *           After stop the startup clock can be MSI (at any of its possible
3103   *           frequencies, the one that was used before entering stop mode) or HSI.
3104   *          After Standby its frequency can be selected between 4 possible values
3105   *          (1, 3.072, 4 or 8 MHz).
3106   * @note     MSIRANGE can be modified when MSI is OFF (MSION=0) or when MSI is ready
3107   *          (MSIRDY=1).
3108   * @note    The MSI clock range after reset can be modified on the fly.
3109   * @param  __MSIRANGEVALUE__: specifies the MSI clock range.
3110   *         This parameter must be one of the following values:
3111   *            @arg @ref RCC_MSIRANGE_0  MSI clock is around 48 MHz
3112   *            @arg @ref RCC_MSIRANGE_1  MSI clock is around 24 KHz
3113   *            @arg @ref RCC_MSIRANGE_2  MSI clock is around 16 MHz
3114   *            @arg @ref RCC_MSIRANGE_3  MSI clock is around 12 MHz
3115   *            @arg @ref RCC_MSIRANGE_4  MSI clock is around 4 MHz (default after Reset)
3116   *            @arg @ref RCC_MSIRANGE_5  MSI clock is around 2 MHz
3117   *            @arg @ref RCC_MSIRANGE_6  MSI clock is around 1.33 MHz
3118   *            @arg @ref RCC_MSIRANGE_7  MSI clock is around 1 MHz
3119   *            @arg @ref RCC_MSIRANGE_8  MSI clock is around 3.072 MHz
3120   *            @arg @ref RCC_MSIRANGE_9  MSI clock is around 1.536 MHz
3121   *            @arg @ref RCC_MSIRANGE_10 MSI clock is around 1.024 MHz
3122   *            @arg @ref RCC_MSIRANGE_11 MSI clock is around 768 KHz
3123   *            @arg @ref RCC_MSIRANGE_12 MSI clock is around 400 KHz
3124   *            @arg @ref RCC_MSIRANGE_13 MSI clock is around 200 KHz
3125   *            @arg @ref RCC_MSIRANGE_14 MSI clock is around 133 KHz
3126   *            @arg @ref RCC_MSIRANGE_15 MSI clock is around 100 KHz
3127   * @retval None
3128   */
3129 #define __HAL_RCC_MSI_RANGE_CONFIG(__MSIRANGEVALUE__) \
3130   do {                                                         \
3131     SET_BIT(RCC->ICSCR1, RCC_ICSCR1_MSIRGSEL);                         \
3132     MODIFY_REG(RCC->ICSCR1, RCC_ICSCR1_MSISRANGE, (__MSIRANGEVALUE__)); \
3133   } while(0)
3134 /**
3135   * @brief  Macro configures the Internal Multi Speed kernel oscillator (MSIK) clock range in run mode
3136   * @note     After restart from Reset , the MSIK clock is around 4 MHz.
3137   *           After stop the startup clock can be MSIK (at any of its possible
3138   *           frequencies, the one that was used before entering stop mode) or HSI.
3139   *          After Standby its frequency can be selected between 4 possible values
3140   *          (1, 3.072, 4 or 8 MHz).
3141   * @note     MSIKRANGE can be modified when MSIK is OFF (MSIKON=0) or when MSIK is ready
3142   *          (MSIKRDY=1).
3143   * @note    The MSI clock range after reset can be modified on the fly.
3144   * @param  __MSIKRANGEVALUE__: specifies the MSI clock range.
3145   *            @arg @ref RCC_MSIKRANGE_0  MSIK clock is around 48 MHz
3146   *            @arg @ref RCC_MSIKRANGE_1  MSIK clock is around 24 KHz
3147   *            @arg @ref RCC_MSIKRANGE_2  MSIK clock is around 16 MHz
3148   *            @arg @ref RCC_MSIKRANGE_3  MSIK clock is around 12 MHz
3149   *            @arg @ref RCC_MSIKRANGE_4  MSIK clock is around 4 MHz (default after Reset)
3150   *            @arg @ref RCC_MSIKRANGE_5  MSIK clock is around 2 MHz
3151   *            @arg @ref RCC_MSIKRANGE_6  MSIK clock is around 1.33 MHz
3152   *            @arg @ref RCC_MSIKRANGE_7  MSIK clock is around 1 MHz
3153   *            @arg @ref RCC_MSIKRANGE_8  MSIK clock is around 3.072 MHz
3154   *            @arg @ref RCC_MSIKRANGE_9  MSIK clock is around 1.536 MHz
3155   *            @arg @ref RCC_MSIKRANGE_10 MSIK clock is around 1.024 MHz
3156   *            @arg @ref RCC_MSIKRANGE_11 MSIK clock is around 768 KHz
3157   *            @arg @ref RCC_MSIKRANGE_12 MSIK clock is around 400 KHz
3158   *            @arg @ref RCC_MSIKRANGE_13 MSIK clock is around 200 KHz
3159   *            @arg @ref RCC_MSIKRANGE_14 MSIK clock is around 133 KHz
3160   *            @arg @ref RCC_MSIKRANGE_15 MSIK clock is around 100 KHz
3161   * @retval None
3162   */
3163 #define __HAL_RCC_MSIK_RANGE_CONFIG(__MSIKRANGEVALUE__) \
3164   do {                                                         \
3165     SET_BIT(RCC->ICSCR1, RCC_ICSCR1_MSIRGSEL);                         \
3166     MODIFY_REG(RCC->ICSCR1, RCC_ICSCR1_MSIKRANGE, (__MSIKRANGEVALUE__)); \
3167   } while(0)
3168 
3169 /** @brief  Macros to enable or disable the MSI bias mode selection.
3170   * @note   By default the MSI bias is in continuous mode in order to maintain
3171   *         the output clocks accuracy.
3172   * @note   Setting this bit reduces the MSI consumption under range 4 but decrease its accuracy.
3173   * @retval None
3174   */
3175 #define __HAL_RCC_MSIBIAS_SELECTION_ENABLE()         SET_BIT(RCC->ICSCR1, RCC_ICSCR1_MSIBIAS)
3176 
3177 #define __HAL_RCC_MSIBIAS_SELECTION_DISABLE()        CLEAR_BIT(RCC->ICSCR1, RCC_ICSCR1_MSIBIAS)
3178 
3179 /** @brief  Macros to enable or disable LSE clock glitch filter .
3180   * @note   The glitches on LSE can be filtred by setting the LSEGFON.
3181   * @note   LSEGFON must be written when the LSE is disabled (LSEON = 0 and LSERDY = 0).
3182   * @retval None
3183   */
3184 
3185 #define __HAL_RCC_LSE_GLITCHFILTER_ENABLE()           SET_BIT(RCC->BDCR, RCC_BDCR_LSEGFON )
3186 
3187 #define __HAL_RCC_LSE_GLITCHFILTER_DISABLE()          CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEGFON )
3188 /**
3189   * @brief  Macro configures the Internal Multi Speed oscillator (MSI) clock range after Standby mode
3190   *         After Standby its frequency can be selected between 5 possible values (4, 2, 1.5, 1, or 3.072 MHz).
3191   * @param  __MSIRANGEVALUE__: specifies the MSI clock range.
3192   *         This parameter must be one of the following values:
3193   *            @arg @ref RCC_MSIRANGE_4  MSI clock is around 4 MHz (default after Reset)
3194   *            @arg @ref RCC_MSIRANGE_5  MSI clock is around 2 MHz
3195   *            @arg @ref RCC_MSIRANGE_6  MSI clock is around 1.5 MHz
3196   *            @arg @ref RCC_MSIRANGE_7  MSI clock is around 1 MHz
3197   *            @arg @ref RCC_MSIRANGE_8  MSI clock is around 3.072 MHz
3198   * @retval None
3199   */
3200 #define __HAL_RCC_MSI_STANDBY_RANGE_CONFIG(__MSIRANGEVALUE__) do {SET_BIT(RCC->ICSCR1, RCC_ICSCR1_MSIRGSEL);\
3201                                                                    MODIFY_REG(RCC->CSR, RCC_CSR_MSISSRANGE,\
3202                                                                    (__MSIRANGEVALUE__) >> (RCC_ICSCR1_MSISRANGE_Pos -\
3203                                                                    RCC_CSR_MSISSRANGE_Pos));\
3204                                                                  } while(0)
3205 /**
3206   * @brief  Macro configures the Internal Multi Speed oscillator (MSIK) clock range after Standby mode
3207   *         After Standby its frequency can be selected between 5 possible values (4, 2, 1.5, 1, or 3.072 MHz).
3208   * @param  __MSIRANGEVALUE__: specifies the MSI clock range.
3209   *         This parameter must be one of the following values:
3210   *            @arg @ref RCC_MSIRANGE_4  MSI clock is around 4 MHz (default after Reset)
3211   *            @arg @ref RCC_MSIRANGE_5  MSI clock is around 2 MHz
3212   *            @arg @ref RCC_MSIRANGE_6  MSI clock is around 1.5 MHz
3213   *            @arg @ref RCC_MSIRANGE_7  MSI clock is around 1 MHz
3214   *            @arg @ref RCC_MSIRANGE_8  MSI clock is around 3.072 MHz
3215   * @retval None
3216   */
3217 #define __HAL_RCC_MSIK_STANDBY_RANGE_CONFIG(__MSIRANGEVALUE__) do {SET_BIT(RCC->ICSCR1, RCC_ICSCR1_MSIRGSEL); \
3218                                                                     MODIFY_REG(RCC->CSR, RCC_CSR_MSISSRANGE,\
3219                                                                     (__MSIRANGEVALUE__) >> (RCC_ICSCR1_MSISRANGE_Pos -\
3220                                                                     RCC_CSR_MSISSRANGE_Pos));\
3221                                                                    } while(0)
3222 
3223 /** @brief  Macro to get the Internal Multi Speed oscillator (MSI) clock range in run mode
3224   * @retval MSI clock range.
3225   *         This parameter must be one of the following values:
3226   *            @arg @ref RCC_MSIRANGE_0  MSI clock is around 48 MHz
3227   *            @arg @ref RCC_MSIRANGE_1  MSI clock is around 24 KHz
3228   *            @arg @ref RCC_MSIRANGE_2  MSI clock is around 16 MHz
3229   *            @arg @ref RCC_MSIRANGE_3  MSI clock is around 12 MHz
3230   *            @arg @ref RCC_MSIRANGE_4  MSI clock is around 4 MHz
3231   *            @arg @ref RCC_MSIRANGE_5  MSI clock is around 2 MHz
3232   *            @arg @ref RCC_MSIRANGE_6  MSI clock is around 1.33 MHz
3233   *            @arg @ref RCC_MSIRANGE_7  MSI clock is around 1 MHz
3234   *            @arg @ref RCC_MSIRANGE_8  MSI clock is around 3.072 MHz
3235   *            @arg @ref RCC_MSIRANGE_9  MSI clock is around 1.536 MHz
3236   *            @arg @ref RCC_MSIRANGE_10 MSI clock is around 1.024 MHz
3237   *            @arg @ref RCC_MSIRANGE_11 MSI clock is around 768 KHz
3238   *            @arg @ref RCC_MSIRANGE_12 MSI clock is around 400 KHz
3239   *            @arg @ref RCC_MSIRANGE_13 MSI clock is around 200 KHz
3240   *            @arg @ref RCC_MSIRANGE_14 MSI clock is around 133 KHz
3241   *            @arg @ref RCC_MSIRANGE_15 MSI clock is around 100 KHz
3242   */
3243 #define __HAL_RCC_GET_MSI_RANGE()       ((READ_BIT(RCC->ICSCR1, RCC_ICSCR1_MSIRGSEL) != 0U) ?             \
3244                                          (uint32_t)(READ_BIT(RCC->ICSCR1, RCC_ICSCR1_MSISRANGE)) :            \
3245                                          (uint32_t)(READ_BIT(RCC->CSR, RCC_CSR_MSISSRANGE) << \
3246                                                     (RCC_ICSCR1_MSISRANGE_Pos - RCC_CSR_MSISSRANGE_Pos)))
3247 
3248 /** @brief  Macro to get the Internal Multi Speed kernel oscillator (MSIK) clock range in run mode
3249   * @retval MSIK clock range.
3250   *         This parameter must be one of the following values:
3251   *            @arg @ref RCC_MSIRANGE_0  MSI clock is around 48 MHz
3252   *            @arg @ref RCC_MSIRANGE_1  MSI clock is around 24 KHz
3253   *            @arg @ref RCC_MSIRANGE_2  MSI clock is around 16 MHz
3254   *            @arg @ref RCC_MSIRANGE_3  MSI clock is around 12 MHz
3255   *            @arg @ref RCC_MSIRANGE_4  MSI clock is around 4 MHz
3256   *            @arg @ref RCC_MSIRANGE_5  MSI clock is around 2 MHz
3257   *            @arg @ref RCC_MSIRANGE_6  MSI clock is around 1.33 MHz
3258   *            @arg @ref RCC_MSIRANGE_7  MSI clock is around 1 MHz
3259   *            @arg @ref RCC_MSIRANGE_8  MSI clock is around 3.072 MHz
3260   *            @arg @ref RCC_MSIRANGE_9  MSI clock is around 1.536 MHz
3261   *            @arg @ref RCC_MSIRANGE_10 MSI clock is around 1.024 MHz
3262   *            @arg @ref RCC_MSIRANGE_11 MSI clock is around 768 KHz
3263   *            @arg @ref RCC_MSIRANGE_12 MSI clock is around 400 KHz
3264   *            @arg @ref RCC_MSIRANGE_13 MSI clock is around 200 KHz
3265   *            @arg @ref RCC_MSIRANGE_14 MSI clock is around 133 KHz
3266   *            @arg @ref RCC_MSIRANGE_15 MSI clock is around 100 KHz
3267   */
3268 #define __HAL_RCC_GET_MSIK_RANGE()      ((READ_BIT(RCC->ICSCR1, RCC_ICSCR1_MSIRGSEL) != 0U) ?             \
3269                                          (uint32_t)(READ_BIT(RCC->ICSCR1, RCC_ICSCR1_MSIKRANGE)) :            \
3270                                          (uint32_t)(READ_BIT(RCC->CSR, RCC_CSR_MSIKSRANGE) << \
3271                                                     (RCC_ICSCR1_MSIKRANGE_Pos - RCC_CSR_MSIKSRANGE_Pos)))
3272 
3273 /** @brief  Macros to enable or disable the Internal Low Speed oscillator (LSI).
3274   * @note   After enabling the LSI, the application software should wait on
3275   *         LSIRDY flag to be set indicating that LSI clock is stable and can
3276   *         be used to clock the IWDG and/or the RTC.
3277   * @note   LSI can not be disabled if the IWDG is running.
3278   * @note   When the LSI is stopped, LSIRDY flag goes low after 6 LSI oscillator
3279   *         clock cycles.
3280   * @retval None
3281   */
3282 #define __HAL_RCC_LSI_ENABLE()                  SET_BIT(RCC->BDCR, RCC_BDCR_LSION)
3283 
3284 #define __HAL_RCC_LSI_DISABLE()                 CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSION|RCC_BDCR_LSIPREDIV)
3285 
3286 /**
3287   * @brief  Macro to configure the External High Speed oscillator (HSE).
3288   * @note   Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not
3289   *         supported by this macro. User should request a transition to HSE Off
3290   *         first and then HSE On or HSE Bypass.
3291   * @note   After enabling the HSE (RCC_HSE_ON or RCC_HSE_Bypass), the application
3292   *         software should wait on HSERDY flag to be set indicating that HSE clock
3293   *         is stable and can be used to clock the PLL and/or system clock.
3294   * @note   HSE state can not be changed if it is used directly or through the
3295   *         PLL as system clock. In this case, you have to select another source
3296   *         of the system clock then change the HSE state (ex. disable it).
3297   * @note   The HSE is stopped by hardware when entering STOP and STANDBY or shutdown modes.
3298   * @param  __STATE__: specifies the new state of the HSE.
3299   *         This parameter can be one of the following values:
3300   *            @arg @ref RCC_HSE_OFF  Turn OFF the HSE oscillator, HSERDY flag goes low after
3301   *                              6 HSE oscillator clock cycles.
3302   *            @arg @ref RCC_HSE_ON  Turn ON the HSE oscillator.
3303   *            @arg @ref RCC_HSE_BYPASS  HSE oscillator bypassed with external clock.
3304   *            @arg @ref RCC_HSE_BYPASS_DIGITAL HSE oscillator bypassed through I/O Schmitt trigger .
3305   * @retval None
3306   */
3307 #define __HAL_RCC_HSE_CONFIG(__STATE__)                                \
3308   do {                                               \
3309     if((__STATE__) == RCC_HSE_ON)                    \
3310     {                                                \
3311       SET_BIT(RCC->CR, RCC_CR_HSEON);                \
3312     }                                                \
3313     else if((__STATE__) == RCC_HSE_BYPASS)           \
3314     {                                                \
3315       SET_BIT(RCC->CR, RCC_CR_HSEBYP);               \
3316       CLEAR_BIT(RCC->CR, RCC_CR_HSEEXT);             \
3317       SET_BIT(RCC->CR, RCC_CR_HSEON);                \
3318     }                                                \
3319     else if((__STATE__) == RCC_HSE_BYPASS_DIGITAL)   \
3320     {                                                \
3321       SET_BIT(RCC->CR, RCC_CR_HSEBYP);               \
3322       SET_BIT(RCC->CR, RCC_CR_HSEEXT);               \
3323       SET_BIT(RCC->CR, RCC_CR_HSEON);                \
3324     }                                                \
3325     else                                             \
3326     {                                                \
3327       CLEAR_BIT(RCC->CR, RCC_CR_HSEON);              \
3328       CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP);             \
3329     }                                                \
3330   } while(0)
3331 
3332 /** @brief   Macro to enable or disable the LSE system clock.
3333   * @note    This clock can be used by any peripheral when its source clock is the LSE or at system
3334   *          in case of one of the LSCOSEL, MCO, MSI PLL mode or CSS on LSE is needed.
3335   * @note    The LSESYS clock can be generated even if LSESYSEN= 0 if the LSE clock is requested by
3336   *          the CSS on LSE, by a peripheral or any other source clock using LSE.
3337   * @retval None
3338   */
3339 #define __HAL_RCC_LSESYS_ENABLE()    SET_BIT(RCC->BDCR,RCC_BDCR_LSESYSEN)
3340 
3341 #define __HAL_RCC_LSESYS_DISABLE()   CLEAR_BIT(RCC->BDCR,RCC_BDCR_LSESYSEN)
3342 
3343 
3344 /** @brief  Macro to set Low-speed clock (LSI) divider.
3345   * @note   This bit can be written only when the LSI is disabled (LSION = 0 and LSIRDY = 0).
3346   *         The LSIPREDIV cannot be changed if the LSI is used by the IWDG or by the RTC.
3347   *
3348   * @param  __DIVIDER__ : specifies the divider value
3349   *          This parameter can be one of the following values
3350   *          @arg @ref RCC_LSI_DIV1
3351   *          @arg @ref RCC_LSI_DIV128
3352   * @retval None
3353   */
3354 #define __HAL_RCC_LSI_DIV_CONFIG(__DIVIDER__)                                     \
3355   do {                                                        \
3356     if((__DIVIDER__) == RCC_LSI_DIV128)                       \
3357     {                                                       \
3358       SET_BIT(RCC->BDCR, RCC_BDCR_LSIPREDIV);               \
3359     }                                                       \
3360     else                                                      \
3361     {                                                       \
3362       CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSIPREDIV);             \
3363     }                                                       \
3364   } while(0)
3365 
3366 /**
3367   * @brief  Macro to configure the External Low Speed oscillator (LSE).
3368   * @note   Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not
3369   *         supported by this macro. User should request a transition to LSE Off
3370   *         first and then LSE On or LSE Bypass.
3371   * @note   As the LSE is in the Backup domain and write access is denied to
3372   *         this domain after reset, you have to enable write access using
3373   *         HAL_PWR_EnableBkUpAccess() function before to configure the LSE
3374   *         (to be done once after reset).
3375   * @note   After enabling the LSE (RCC_LSE_ON or RCC_LSE_BYPASS), the application
3376   *         software should wait on LSERDY flag to be set indicating that LSE clock
3377   *         is stable and can be used to clock the RTC.
3378   * @param  __STATE__: specifies the new state of the LSE.
3379   *         This parameter can be one of the following values:
3380   *            @arg @ref RCC_LSE_OFF  Turn OFF the LSE oscillator, LSERDY flag goes low after
3381   *                              6 LSE oscillator clock cycles.
3382   *            @arg @ref RCC_LSE_ON  Turn ON the LSE oscillator.
3383   *            @arg @ref RCC_LSE_BYPASS  LSE oscillator bypassed with external clock.
3384   * @retval None
3385   */
3386 #define __HAL_RCC_LSE_CONFIG(__STATE__)                                                \
3387   do {                                                                 \
3388     if((__STATE__) == RCC_LSE_ON)                                      \
3389     {                                                                  \
3390       SET_BIT(RCC->BDCR,RCC_BDCR_LSEON);                               \
3391     }                                                                  \
3392     else if((__STATE__) == RCC_LSE_BYPASS)                             \
3393     {                                                                  \
3394       SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP);                             \
3395       SET_BIT(RCC->BDCR, RCC_BDCR_LSEON);                              \
3396     }                                                                  \
3397     else                                                               \
3398     {                                                                  \
3399       CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON);                            \
3400       CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP);                           \
3401     }                                                                  \
3402   } while(0)
3403 
3404 /** @brief  Macros to enable or disable the Internal High Speed 48MHz oscillator (HSI48).
3405   * @note   The HSI48 is stopped by hardware when entering STOP and STANDBY modes.
3406   * @note   After enabling the HSI48, the application software should wait on HSI48RDY
3407   *         flag to be set indicating that HSI48 clock is stable.
3408   *         This parameter can be: ENABLE or DISABLE.
3409   * @retval None
3410   */
3411 #define __HAL_RCC_HSI48_ENABLE()  SET_BIT(RCC->CR, RCC_CR_HSI48ON)
3412 
3413 #define __HAL_RCC_HSI48_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSI48ON)
3414 
3415 /** @brief  Macros to enable or disable the Internal multi-speed RC oscillator clock (MSIK).
3416   * @note   if the peripheral requests its kernel clock in Stop 0 or Stop 1 mode,MSIK is woken up
3417   * @note   After enabling the MSIK, the application software should wait on MSIKRDY
3418   *         flag to be set indicating that MSIK clock is stable.
3419   *         This parameter can be: ENABLE or DISABLE.
3420   * @retval None
3421   */
3422 #define __HAL_RCC_MSIK_ENABLE()  SET_BIT(RCC->CR, RCC_CR_MSIKON)
3423 
3424 #define __HAL_RCC_MSIK_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_MSIKON)
3425 
3426 /** @brief  Macros to enable or disable the secure Internal High Speed oscillator (SHSI).
3427   * @note   The SHSI is stopped by hardware when entering STOP and STANDBY modes.
3428   * @note   After enabling the SHSI, the application software should wait on SHSI
3429   *         flag to be set indicating that SHSI clock is stable.
3430   *         This parameter can be: ENABLE or DISABLE.
3431   * @retval None
3432   */
3433 #define __HAL_RCC_SHSI_ENABLE()  SET_BIT(RCC->CR, RCC_CR_SHSION)
3434 
3435 #define __HAL_RCC_SHSI_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_SHSION)
3436 
3437 /** @brief  Macros to configure the RTC clock (RTCCLK).
3438   * @note   As the RTC clock configuration bits are in the Backup domain and write
3439   *         access is denied to this domain after reset, you have to enable write
3440   *         access using the Power Backup Access macro before to configure
3441   *         the RTC clock source (to be done once after reset).
3442   * @note   Once the RTC clock is configured it cannot be changed unless the
3443   *         Backup domain is reset using __HAL_RCC_BACKUPRESET_FORCE() macro, or by
3444   *         a Power On Reset (POR).
3445   *
3446   * @param  __RTC_CLKSOURCE__: specifies the RTC clock source.
3447   *         This parameter can be one of the following values:
3448   *            @arg @ref RCC_RTCCLKSOURCE_NO_CLK  No clock selected as RTC clock.
3449   *            @arg @ref RCC_RTCCLKSOURCE_LSE  LSE selected as RTC clock.
3450   *            @arg @ref RCC_RTCCLKSOURCE_LSI  LSI selected as RTC clock.
3451   *            @arg @ref RCC_RTCCLKSOURCE_HSE_DIV32  HSE clock divided by 32 selected
3452   *
3453   * @note   If the LSE or LSI is used as RTC clock source, the RTC continues to
3454   *         work in STOP and STANDBY modes, and can be used as wakeup source.
3455   *         However, when the HSE clock is used as RTC clock source, the RTC
3456   *         cannot be used in STOP and STANDBY modes.
3457   * @note   The maximum input clock frequency for RTC is 1MHz (when using HSE as
3458   *         RTC clock source).
3459   * @retval None
3460   */
3461 #define __HAL_RCC_RTC_CONFIG(__RTC_CLKSOURCE__)  \
3462   MODIFY_REG( RCC->BDCR, RCC_BDCR_RTCSEL, (__RTC_CLKSOURCE__))
3463 
3464 /** @brief  Macro to get the RTC clock source.
3465   * @retval The returned value can be one of the following:
3466   *            @arg @ref RCC_RTCCLKSOURCE_NO_CLK  No clock selected as RTC clock.
3467   *            @arg @ref RCC_RTCCLKSOURCE_LSE  LSE selected as RTC clock.
3468   *            @arg @ref RCC_RTCCLKSOURCE_LSI  LSI selected as RTC clock.
3469   *            @arg @ref RCC_RTCCLKSOURCE_HSE_DIV32  HSE clock divided by 32 selected
3470   */
3471 #define  __HAL_RCC_GET_RTC_SOURCE() ((uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL)))
3472 
3473 /** @brief  Macros to enable or disable the main PLL.
3474   * @note   After enabling the main PLL, the application software should wait on
3475   *         PLLRDY flag to be set indicating that PLL clock is stable and can
3476   *         be used as system clock source.
3477   * @note   The main PLL can not be disabled if it is used as system clock source
3478   * @note   The main PLL is disabled by hardware when entering STOP and STANDBY modes.
3479   */
3480 #define __HAL_RCC_PLL_ENABLE()         SET_BIT(RCC->CR, RCC_CR_PLL1ON)
3481 #define __HAL_RCC_PLL_DISABLE()        CLEAR_BIT(RCC->CR, RCC_CR_PLL1ON)
3482 
3483 /**
3484   * @brief  Enables or disables each clock output (PLL_P_CLK, PLL_Q_CLK, PLL_R_CLK)
3485   * @note   Enabling/disabling  Those Clocks can be any time  without the need to stop the PLL,
3486   *         This is mainly used to save Power.
3487   * @param  __PLL1_CLOCKOUT__: specifies the PLL clock to be outputted
3488   *          This parameter can be one of the following values:
3489   *            @arg RCC_PLL1_DIVP: This clock is used to generate an accurate clock to achieve,
3490   *                                   high-quality audio performance on SAI interface.
3491   *            @arg RCC_PLL1_DIVQ: This Clock is used to generate the clock for the USB FS(48 MHz),
3492   *                                the random analog generator (<=48 MHz) and the OCTOSPI1/2.
3493   *            @arg RCC_PLL1_DIVR: This Clock is used to generate the high speed system clock (up to 160MHz)
3494   * @retval None
3495   *
3496   */
3497 #define __HAL_RCC_PLLCLKOUT_ENABLE(__PLL1_CLOCKOUT__)   SET_BIT(RCC->PLL1CFGR, (__PLL1_CLOCKOUT__))
3498 
3499 #define __HAL_RCC_PLLCLKOUT_DISABLE(__PLL1_CLOCKOUT__)  CLEAR_BIT(RCC->PLL1CFGR, (__PLL1_CLOCKOUT__))
3500 
3501 /**
3502   * @brief  Macro to get the PLL clock output enable status.
3503   * @param  __PLL1_CLOCKOUT__ specifies the PLL1 clock to be output.
3504   *         This parameter can be one of the following values:
3505   *            @arg RCC_PLL1_DIVP: This clock is used to generate an accurate clock to achieve,
3506   *                                   high-quality audio performance on SAI interface.
3507   *            @arg RCC_PLL1_DIVQ: This Clock is used to generate the clock for the USB FS(48 MHz),
3508   *                                the random analog generator (<=48 MHz) and the OCTOSPI1/2.
3509   *            @arg RCC_PLL1_DIVR: This Clock is used to generate the high speed system clock (up to 160MHz)
3510   * @retval SET / RESET
3511   */
3512 #define __HAL_RCC_GET_PLLCLKOUT_CONFIG(__PLL1_CLOCKOUT__)  READ_BIT(RCC->PLL1CFGR, (__PLL1_CLOCKOUT__))
3513 
3514 /**
3515   * @brief  Enables or disables Fractional Part Of The Multiplication Factor of PLL1 VCO
3516   * @note   Enabling/disabling  Fractional Part can be any time  without the need to stop the PLL1
3517   * @retval None
3518   */
3519 #define __HAL_RCC_PLLFRACN_ENABLE()   SET_BIT(RCC->PLL1CFGR, RCC_PLL1CFGR_PLL1FRACEN)
3520 
3521 #define __HAL_RCC_PLLFRACN_DISABLE()  CLEAR_BIT(RCC->PLL1CFGR, RCC_PLL1CFGR_PLL1FRACEN)
3522 
3523 /**
3524   * @brief  Macro to configure the main PLL clock source, multiplication and division factors.
3525   * @note   This function must be used only when the main PLL is disabled.
3526   *
3527   * @param  __PLL1SOURCE__: specifies the PLL entry clock source.
3528   *          This parameter can be one of the following values:
3529   *            @arg RCC_PLLSOURCE_MSI: MSI oscillator clock selected as PLL clock entry
3530   *            @arg RCC_PLLSOURCE_HSI: HSI oscillator clock selected as PLL clock entry
3531   *            @arg RCC_PLLSOURCE_HSE: HSE oscillator clock selected as PLL clock entry
3532   * @note   This clock source (__PLL1SOURCE__) is common for the main PLL1 (main PLL) and PLL2 & PLL3 .
3533   *
3534   * @param  __PLL1MBOOST__: specifies the division factor for the EPOD clock
3535   *          This parameter must be a value of @ref RCC_PLLMBOOST_EPOD_Clock_Divider.
3536   *
3537   * @param  __PLL1M__: specifies the division factor for PLL VCO input clock
3538   *          This parameter must be a number between 1 and 63.
3539   * @note   You have to set the PLLM parameter correctly to ensure that the VCO input
3540   *         frequency ranges from 1 to 16 MHz.
3541   *
3542   * @param  __PLL1N__: specifies the multiplication factor for PLL VCO output clock
3543   *          This parameter must be a number between 4 and 512.
3544   * @note   You have to set the PLLN parameter correctly to ensure that the VCO
3545   *         output frequency is between 128 and 544 MHz(Voltage range 1 or 2)
3546   *         between 128 and 330 MHZ (Voltage range 3) and not allowed for Voltage range 4.
3547   *
3548   * @param  __PLL1P__: specifies the division factor for system  clock.
3549   *          This parameter must be a number between 2 and 128 (where odd numbers not allowed)
3550   *
3551   * @param  __PLL1Q__: specifies the division factor for peripheral kernel clocks
3552   *          This parameter must be a number between 1 and 128
3553   *
3554   * @param  __PLL1R__: specifies the division factor for peripheral kernel clocks
3555   *          This parameter must be a number between 1 and 128
3556   *
3557   * @retval None
3558   */
3559 #define __HAL_RCC_PLL_CONFIG(__PLL1SOURCE__, __PLL1MBOOST__,__PLL1M__, __PLL1N__, __PLL1P__, __PLL1Q__, __PLL1R__) \
3560   do{ MODIFY_REG(RCC->PLL1CFGR,(RCC_PLL1CFGR_PLL1SRC | RCC_PLL1CFGR_PLL1M|\
3561                                   RCC_PLL1CFGR_PLL1MBOOST), ((__PLL1SOURCE__) << RCC_PLL1CFGR_PLL1SRC_Pos) |\
3562                    (((__PLL1M__) - 1U) << RCC_PLL1CFGR_PLL1M_Pos) | (__PLL1MBOOST__));\
3563     MODIFY_REG(RCC->PLL1DIVR ,(RCC_PLL1DIVR_PLL1N | RCC_PLL1DIVR_PLL1P | RCC_PLL1DIVR_PLL1Q |\
3564                                RCC_PLL1DIVR_PLL1R), ( (((__PLL1N__) - 1U ) & RCC_PLL1DIVR_PLL1N) |\
3565                                                       ((((__PLL1P__) -1U ) << RCC_PLL1DIVR_PLL1P_Pos) & \
3566                                                        RCC_PLL1DIVR_PLL1P) | \
3567                                                       ((((__PLL1Q__) -1U) << RCC_PLL1DIVR_PLL1Q_Pos) & \
3568                                                        RCC_PLL1DIVR_PLL1Q) |\
3569                                                       ((((__PLL1R__)- 1U) << RCC_PLL1DIVR_PLL1R_Pos) & \
3570                                                        RCC_PLL1DIVR_PLL1R))); \
3571   } while(0)
3572 
3573 /** @brief  Macro to configure the PLLs clock source.
3574   * @note   This function must be used only when all PLLs are disabled.
3575   * @param  __PLL1SOURCE__: specifies the PLLs entry clock source.
3576   *         This parameter can be one of the following values:
3577   *            @arg RCC_PLLSOURCE_MSI: MSI oscillator clock selected as PLL clock entry
3578   *            @arg RCC_PLLSOURCE_HSI: HSI oscillator clock selected as PLL clock entry
3579   *            @arg RCC_PLLSOURCE_HSE: HSE oscillator clock selected as PLL clock entry
3580   */
3581 #define __HAL_RCC_PLL_PLLSOURCE_CONFIG(__PLL1SOURCE__) MODIFY_REG(RCC->PLL1CFGR, RCC_PLL1CFGR_PLL1SRC, (__PLL1SOURCE__))
3582 
3583 /**
3584   * @brief  Macro to configure the main PLL clock Fractional Part Of The Multiplication Factor
3585   * @note   These bits can be written at any time, allowing dynamic fine-tuning of the PLL1 VCO
3586   * @param  __PLL1FRACN__: specifies Fractional Part Of The Multiplication Factor for PLL1 VCO
3587   *                            It should be a value between 0 and 8191
3588   * @note   Warning: The software has to set correctly these bits to insure that the VCO
3589   *                  output frequency is between its valid frequency range, which is:
3590   *                   192 to 836 MHz if PLL1VCOSEL = 0
3591   *                   150 to 420 MHz if PLL1VCOSEL = 1.
3592   * @retval None
3593   */
3594 #define  __HAL_RCC_PLLFRACN_CONFIG(__PLL1FRACN__)    MODIFY_REG(RCC->PLL1FRACR, RCC_PLL1FRACR_PLL1FRACN,\
3595                                                                 (uint32_t)(__PLL1FRACN__) << \
3596                                                                 RCC_PLL1FRACR_PLL1FRACN_Pos)
3597 
3598 /** @brief  Macro to select  the PLL1  reference frequency range.
3599   * @param  __PLL1VCIRange__: specifies the PLL1 input frequency range
3600   *         This parameter can be one of the following values:
3601   *            @arg RCC_PLLVCIRANGE_0: Range frequency is between 4 and 8 MHz
3602   *            @arg RCC_PLLVCIRANGE_1: Range frequency is between 8 and 16 MHz
3603   * @retval None
3604   */
3605 #define __HAL_RCC_PLL_VCIRANGE(__PLL1VCIRange__) \
3606   MODIFY_REG(RCC->PLL1CFGR, RCC_PLL1CFGR_PLL1RGE, (__PLL1VCIRange__))
3607 
3608 /** @brief  Macro to get the oscillator used as PLL1 clock source.
3609   * @retval The oscillator used as PLL1 clock source. The returned value can be one
3610   *         of the following:
3611   *              - RCC_PLLSOURCE_NONE: No oscillator is used as PLL clock source.
3612   *              - RCC_PLLSOURCE_MSI: MSI oscillator is used as PLL clock source.
3613   *              - RCC_PLLSOURCE_HSI: HSI oscillator is used as PLL clock source.
3614   *              - RCC_PLLSOURCE_HSE: HSE oscillator is used as PLL clock source.
3615   */
3616 #define __HAL_RCC_GET_PLL_OSCSOURCE() ((uint32_t)(RCC->PLL1CFGR & RCC_PLL1CFGR_PLL1SRC))
3617 
3618 /**
3619   * @brief  Macro to configure the system clock source.
3620   * @param  __SYSCLKSOURCE__: specifies the system clock source.
3621   *          This parameter can be one of the following values:
3622   *              - RCC_SYSCLKSOURCE_MSI: MSI oscillator is used as system clock source.
3623   *              - RCC_SYSCLKSOURCE_HSI: HSI oscillator is used as system clock source.
3624   *              - RCC_SYSCLKSOURCE_HSE: HSE oscillator is used as system clock source.
3625   *              - RCC_SYSCLKSOURCE_PLL1CLK: PLL1 output is used as system clock source.
3626   * @retval None
3627   */
3628 #define __HAL_RCC_SYSCLK_CONFIG(__SYSCLKSOURCE__) \
3629   MODIFY_REG(RCC->CFGR1, RCC_CFGR1_SW, (__SYSCLKSOURCE__))
3630 
3631 /** @brief  Macro to get the clock source used as system clock.
3632   * @retval The clock source used as system clock. The returned value can be one
3633   *         of the following:
3634   *              - RCC_SYSCLKSOURCE_STATUS_MSI: MSI used as system clock.
3635   *              - RCC_SYSCLKSOURCE_STATUS_HSI: HSI used as system clock.
3636   *              - RCC_SYSCLKSOURCE_STATUS_HSE: HSE used as system clock.
3637   *              - RCC_SYSCLKSOURCE_STATUS_PLL1CLK: PLL1 used as system clock.
3638   */
3639 #define __HAL_RCC_GET_SYSCLK_SOURCE() ((uint32_t)(RCC->CFGR1 & RCC_CFGR1_SWS))
3640 
3641 /**
3642   * @brief  Macro to configure the External Low Speed oscillator (LSE) drive capability.
3643   * @note   As the LSE is in the Backup domain and write access is denied to
3644   *         this domain after reset, you have to enable write access using
3645   *         HAL_PWR_EnableBkUpAccess() function before to configure the LSE
3646   *         (to be done once after reset).
3647   * @note   The LSE drive can be decreased to the lower drive capability (LSEDRV = 0)
3648   *         when the LSE is ON. However, once LSEDRV is selected, the drive
3649   *         capability can not be increased if LSEON = 1.
3650   * @param  __LSEDRIVE__: specifies the new state of the LSE drive capability.
3651   *          This parameter can be one of the following values:
3652   *            @arg @ref RCC_LSEDRIVE_LOW  LSE oscillator low drive capability.
3653   *            @arg @ref RCC_LSEDRIVE_MEDIUMLOW  LSE oscillator medium low drive capability.
3654   *            @arg @ref RCC_LSEDRIVE_MEDIUMHIGH  LSE oscillator medium high drive capability.
3655   *            @arg @ref RCC_LSEDRIVE_HIGH  LSE oscillator high drive capability.
3656   * @retval None
3657   */
3658 #define __HAL_RCC_LSEDRIVE_CONFIG(__LSEDRIVE__) \
3659   MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, (uint32_t)(__LSEDRIVE__))
3660 
3661 /**
3662   * @brief  Macro to configure the wake up from stop clock.
3663   * @note   The selected clock is also used as emergency clock for the clock security system on HSE.
3664   * @param  __STOPWUCLK__: specifies the clock source used after wake up from stop.
3665   *         This parameter can be one of the following values:
3666   *            @arg @ref RCC_STOP_WAKEUPCLOCK_MSI  MSI selected as system clock source and CSS backup clock
3667   *            @arg @ref RCC_STOP_WAKEUPCLOCK_HSI  HSI selected as system clock source and CSS backup clock
3668   * @retval None
3669   */
3670 #define __HAL_RCC_WAKEUPSTOP_CLK_CONFIG(__STOPWUCLK__) \
3671   MODIFY_REG(RCC->CFGR1, RCC_CFGR1_STOPWUCK, (__STOPWUCLK__))
3672 
3673 /**
3674   * @brief  Macro to configure the Kernel wake up from stop clock.
3675   * @param  __RCC_STOPKERWUCLK__: specifies the Kernel clock source used after wake up from stop
3676   *         This parameter can be one of the following values:
3677   *            @arg RCC_STOP_KERWAKEUPCLOCK_MSI: MSI selected as Kernel clock source
3678   *            @arg RCC_STOP_KERWAKEUPCLOCK_HSI: HSI selected as Kernel clock source
3679   * @retval None
3680   */
3681 #define __HAL_RCC_KERWAKEUPSTOP_CLK_CONFIG(__RCC_STOPKERWUCLK__) \
3682   MODIFY_REG(RCC->CFGR1, RCC_CFGR1_STOPKERWUCK, (__RCC_STOPKERWUCLK__))
3683 
3684 /** @brief  Macro to configure the MCO clock.
3685   * @param  __MCOCLKSOURCE__ specifies the MCO clock source.
3686   *          This parameter can be one of the following values:
3687   *            @arg @ref RCC_MCO1SOURCE_NOCLOCK  MCO output disabled
3688   *            @arg @ref RCC_MCO1SOURCE_SYSCLK  System  clock selected as MCO source
3689   *            @arg @ref RCC_MCO1SOURCE_MSI  MSI clock selected as MCO source
3690   *            @arg @ref RCC_MCO1SOURCE_HSI  HSI clock selected as MCO source
3691   *            @arg @ref RCC_MCO1SOURCE_HSE  HSE clock selected as MCO sourcee
3692   *            @arg @ref RCC_MCO1SOURCE_PLL1CLK  Main PLL clock selected as MCO source
3693   *            @arg @ref RCC_MCO1SOURCE_LSI  LSI clock selected as MCO source
3694   *            @arg @ref RCC_MCO1SOURCE_LSE  LSE clock selected as MCO source
3695   *            @arg @ref RCC_MCO1SOURCE_HSI48  HSI48 clock selected as MCO source for devices with HSI48
3696   * @param  __MCODIV__ specifies the MCO clock prescaler.
3697   *          This parameter can be one of the following values:
3698   *            @arg @ref RCC_MCODIV_1   MCO clock source is divided by 1
3699   *            @arg @ref RCC_MCODIV_2   MCO clock source is divided by 2
3700   *            @arg @ref RCC_MCODIV_4   MCO clock source is divided by 4
3701   *            @arg @ref RCC_MCODIV_8   MCO clock source is divided by 8
3702   *            @arg @ref RCC_MCODIV_16  MCO clock source is divided by 16
3703   */
3704 #define __HAL_RCC_MCO1_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \
3705   MODIFY_REG(RCC->CFGR1, (RCC_CFGR1_MCOSEL | RCC_CFGR1_MCOPRE), ((__MCOCLKSOURCE__) | (__MCODIV__)))
3706 
3707 /** @defgroup RCC_Flags_Interrupts_Management Flags Interrupts Management
3708   * @brief macros to manage the specified RCC Flags and interrupts.
3709   * @{
3710   */
3711 
3712 /** @brief  Enable RCC interrupt (Perform Byte access to RCC_CIR[14:8] bits to enable
3713   *         the selected interrupts).
3714   * @param  __INTERRUPT__: specifies the RCC interrupt sources to be enabled.
3715   *         This parameter can be any combination of the following values:
3716   *            @arg @ref RCC_IT_LSIRDY  LSI ready interrupt
3717   *            @arg @ref RCC_IT_LSERDY  LSE ready interrupt
3718   *            @arg @ref RCC_IT_MSIRDY  HSI ready interrupt
3719   *            @arg @ref RCC_IT_HSIRDY  HSI ready interrupt
3720   *            @arg @ref RCC_IT_HSERDY  HSE ready interrupt
3721   *            @arg @ref RCC_IT_PLLRDY  Main PLL ready interrupt
3722   *            @arg @ref RCC_IT_PLL2RDY  PLL2 ready interrupt
3723   *            @arg @ref RCC_IT_PLL3RDY  PLL3 ready interrupt
3724   *            @arg @ref RCC_IT_HSI48RDY  HSI48 ready interrupt
3725   * @retval None
3726   */
3727 #define __HAL_RCC_ENABLE_IT(__INTERRUPT__) SET_BIT(RCC->CIER, (__INTERRUPT__))
3728 
3729 /** @brief Disable RCC interrupt (Perform Byte access to RCC_CIR[14:8] bits to disable
3730   *        the selected interrupts).
3731   * @param  __INTERRUPT__: specifies the RCC interrupt sources to be disabled.
3732   *         This parameter can be any combination of the following values:
3733   *            @arg @ref RCC_IT_LSIRDY    LSI ready interrupt
3734   *            @arg @ref RCC_IT_LSERDY    LSE ready interrupt
3735   *            @arg @ref RCC_IT_MSIRDY    HSI ready interrupt
3736   *            @arg @ref RCC_IT_HSIRDY    HSI ready interrupt
3737   *            @arg @ref RCC_IT_HSERDY    HSE ready interrupt
3738   *            @arg @ref RCC_IT_PLLRDY    Main PLL ready interrupt
3739   *            @arg @ref RCC_IT_PLL2RDY   PLL2 ready interrupt
3740   *            @arg @ref RCC_IT_PLL3RDY   PLL3 ready interrupt
3741   *            @arg @ref RCC_IT_HSI48RDY  HSI48 ready interrupt
3742   * @retval None
3743   */
3744 #define __HAL_RCC_DISABLE_IT(__INTERRUPT__) CLEAR_BIT(RCC->CIER, (__INTERRUPT__))
3745 
3746 /** @brief  Clear the RCC's interrupt pending bits (Perform Byte access to RCC_CIR[23:16]
3747   *         bits to clear the selected interrupt pending bits.
3748   * @param  __INTERRUPT__: specifies the interrupt pending bit to clear.
3749   *         This parameter can be any combination of the following values:
3750   *            @arg @ref RCC_IT_LSIRDY   LSI ready interrupt
3751   *            @arg @ref RCC_IT_LSERDY   LSE ready interrupt
3752   *            @arg @ref RCC_IT_MSIRDY   MSI ready interrupt
3753   *            @arg @ref RCC_IT_HSIRDY   HSI ready interrupt
3754   *            @arg @ref RCC_IT_HSERDY   HSE ready interrupt
3755   *            @arg @ref RCC_IT_PLLRDY   Main PLL ready interrupt
3756   *            @arg @ref RCC_IT_PLL2RDY  PLL2 ready interrupt
3757   *            @arg @ref RCC_IT_PLL3RDY  PLL3 ready interrupt
3758   *            @arg @ref RCC_IT_CSS      HSE Clock security system interrupt
3759   *            @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt
3760   *            @arg @ref RCC_IT_MSIKRDY  MSIK ready interrupt
3761   *            @arg @ref RCC_IT_SHSIRDY  SHSI ready interrupt
3762   * @retval None
3763   */
3764 #define __HAL_RCC_CLEAR_IT(__INTERRUPT__) WRITE_REG(RCC->CICR, (__INTERRUPT__))
3765 
3766 /** @brief  Check whether the RCC interrupt has occurred or not.
3767   * @param  __INTERRUPT__: specifies the RCC interrupt source to check.
3768   *         This parameter can be one of the following values:
3769   *            @arg @ref RCC_IT_LSIRDY   LSI ready interrupt
3770   *            @arg @ref RCC_IT_LSERDY   LSE ready interrupt
3771   *            @arg @ref RCC_IT_MSIRDY   MSI ready interrupt
3772   *            @arg @ref RCC_IT_HSIRDY   HSI ready interrupt
3773   *            @arg @ref RCC_IT_HSERDY   HSE ready interrupt
3774   *            @arg @ref RCC_IT_PLLRDY   Main PLL ready interrupt
3775   *            @arg @ref RCC_IT_PLL2RDY  PLL2 ready interrupt
3776   *            @arg @ref RCC_IT_PLL3RDY  PLL3 ready interrupt
3777   *            @arg @ref RCC_IT_CSS      HSE Clock security system interrupt
3778   *            @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt
3779   *            @arg @ref RCC_IT_MSIKRDY  MSIK ready interrupt
3780   *            @arg @ref RCC_IT_SHSIRDY  SHSI ready interrupt
3781   * @retval The new state of __INTERRUPT__ (TRUE or FALSE).
3782   */
3783 #define __HAL_RCC_GET_IT(__INTERRUPT__)  ((RCC->CIFR & (__INTERRUPT__)) == (__INTERRUPT__))
3784 
3785 /** @brief Set RMVF bit to clear the reset flags.
3786   *        The reset flags are: RCC_FLAG_FWRRST, RCC_FLAG_OBLRST, RCC_FLAG_PINRST, RCC_FLAG_BORRST,
3787   *        RCC_FLAG_SFTRST, RCC_FLAG_IWDGRST, RCC_FLAG_WWDGRST and RCC_FLAG_LPWRRST.
3788   * @retval None
3789  */
3790 #define __HAL_RCC_CLEAR_RESET_FLAGS() (RCC->CSR |= RCC_CSR_RMVF)
3791 
3792 /** @brief  Check whether the selected RCC flag is set or not.
3793   * @param  __FLAG__: specifies the flag to check.
3794   *         This parameter can be one of the following values:
3795   *            @arg @ref RCC_FLAG_MSIRDY  MSI oscillator clock ready
3796   *            @arg @ref RCC_FLAG_HSIRDY  HSI oscillator clock ready
3797   *            @arg @ref RCC_FLAG_HSERDY  HSE oscillator clock ready
3798   *            @arg @ref RCC_FLAG_PLL1RDY  Main PLL1 clock ready
3799   *            @arg @ref RCC_FLAG_PLL2RDY  PLL2 clock ready
3800   *            @arg @ref RCC_FLAG_PLL3RDY  PLL3 clock ready
3801   *            @arg @ref RCC_FLAG_HSI48RDY  HSI48 clock ready
3802   *            @arg @ref RCC_FLAG_LSERDY  LSE oscillator clock ready
3803   *            @arg @ref RCC_FLAG_LSECSSD  Clock security system failure on LSE oscillator detection
3804   *            @arg @ref RCC_FLAG_LSIRDY  LSI oscillator clock ready
3805   *            @arg @ref RCC_FLAG_BORRST  BOR reset
3806   *            @arg @ref RCC_FLAG_OBLRST  OBLRST reset
3807   *            @arg @ref RCC_FLAG_PINRST  Pin reset
3808   *            @arg @ref RCC_FLAG_RMVF  Remove reset Flag
3809   *            @arg @ref RCC_FLAG_SFTRST  Software reset
3810   *            @arg @ref RCC_FLAG_IWDGRST  Independent Watchdog reset
3811   *            @arg @ref RCC_FLAG_WWDGRST  Window Watchdog reset
3812   *            @arg @ref RCC_FLAG_LPWRRST  Low Power reset
3813   * @retval The new state of __FLAG__ (TRUE or FALSE).
3814   */
3815 #define __HAL_RCC_GET_FLAG(__FLAG__) ((((((((__FLAG__) >> 5U) == 1U) ? RCC->CR :                  \
3816                                           ((((__FLAG__) >> 5U) == 2U) ? RCC->BDCR :                 \
3817                                            ((((__FLAG__) >> 5U) == 3U) ? RCC->CSR : RCC->CIFR)))) &  \
3818                                         (1U << ((__FLAG__) & RCC_FLAG_MASK))) != 0U) ? 1U : 0U)
3819 /**
3820   * @}
3821   */
3822 #define IS_RCC_PLLSOURCE(SOURCE) (((SOURCE) == RCC_PLLSOURCE_MSI)  || \
3823                                   ((SOURCE) == RCC_PLLSOURCE_HSI)  || \
3824                                   ((SOURCE) == RCC_PLLSOURCE_NONE) || \
3825                                   ((SOURCE) == RCC_PLLSOURCE_HSE))
3826 
3827 #define IS_RCC_PLLM_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 16U))
3828 #define IS_RCC_PLLN_VALUE(VALUE) ((4U <= (VALUE)) && ((VALUE) <= 512U))
3829 #define IS_RCC_PLLP_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
3830 #define IS_RCC_PLLQ_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
3831 #define IS_RCC_PLLR_VALUE(VALUE) ((1U <= (VALUE)) && ((VALUE) <= 128U))
3832 #define IS_RCC_STOP_WAKEUPCLOCK(__SOURCE__) (((__SOURCE__) == RCC_STOP_WAKEUPCLOCK_MSI) ||\
3833                                              ((__SOURCE__) == RCC_STOP_WAKEUPCLOCK_HSI))
3834 
3835 #define IS_RCC_STOP_KERWAKEUPCLOCK(SOURCE) (((SOURCE) == RCC_STOP_KERWAKEUPCLOCK_MSI) || \
3836                                             ((SOURCE) == RCC_STOP_KERWAKEUPCLOCK_HSI))
3837 #define IS_RCC_MSI_CLOCK_RANGE(__RANGE__) (((__RANGE__) == RCC_MSIRANGE_0)  || \
3838                                            ((__RANGE__) == RCC_MSIRANGE_1)  || \
3839                                            ((__RANGE__) == RCC_MSIRANGE_2)  || \
3840                                            ((__RANGE__) == RCC_MSIRANGE_3)  || \
3841                                            ((__RANGE__) == RCC_MSIRANGE_4)  || \
3842                                            ((__RANGE__) == RCC_MSIRANGE_5)  || \
3843                                            ((__RANGE__) == RCC_MSIRANGE_6)  || \
3844                                            ((__RANGE__) == RCC_MSIRANGE_7)  || \
3845                                            ((__RANGE__) == RCC_MSIRANGE_8)  || \
3846                                            ((__RANGE__) == RCC_MSIRANGE_9)  || \
3847                                            ((__RANGE__) == RCC_MSIRANGE_10) || \
3848                                            ((__RANGE__) == RCC_MSIRANGE_11) || \
3849                                            ((__RANGE__) == RCC_MSIRANGE_12) || \
3850                                            ((__RANGE__) == RCC_MSIRANGE_13) || \
3851                                            ((__RANGE__) == RCC_MSIRANGE_14) || \
3852                                            ((__RANGE__) == RCC_MSIRANGE_15))
3853 
3854 #define IS_RCC_MSI_STANDBY_CLOCK_RANGE(__RANGE__) (((__RANGE__) == RCC_MSIRANGE_4)  || \
3855                                                    ((__RANGE__) == RCC_MSIRANGE_5)  || \
3856                                                    ((__RANGE__) == RCC_MSIRANGE_6)  || \
3857                                                    ((__RANGE__) == RCC_MSIRANGE_7)  || \
3858                                                    ((__RANGE__) == RCC_MSIRANGE_8))
3859 
3860 #define IS_RCC_MSIK_CLOCK_RANGE(__RANGE__) (((__RANGE__) == RCC_MSIKRANGE_0)  || \
3861                                             ((__RANGE__) == RCC_MSIKRANGE_1)  || \
3862                                             ((__RANGE__) == RCC_MSIKRANGE_2)  || \
3863                                             ((__RANGE__) == RCC_MSIKRANGE_3)  || \
3864                                             ((__RANGE__) == RCC_MSIKRANGE_4)  || \
3865                                             ((__RANGE__) == RCC_MSIKRANGE_5)  || \
3866                                             ((__RANGE__) == RCC_MSIKRANGE_6)  || \
3867                                             ((__RANGE__) == RCC_MSIKRANGE_7)  || \
3868                                             ((__RANGE__) == RCC_MSIKRANGE_8)  || \
3869                                             ((__RANGE__) == RCC_MSIKRANGE_9)  || \
3870                                             ((__RANGE__) == RCC_MSIKRANGE_10) || \
3871                                             ((__RANGE__) == RCC_MSIKRANGE_11) || \
3872                                             ((__RANGE__) == RCC_MSIKRANGE_12) || \
3873                                             ((__RANGE__) == RCC_MSIKRANGE_13) || \
3874                                             ((__RANGE__) == RCC_MSIKRANGE_14) || \
3875                                             ((__RANGE__) == RCC_MSIKRANGE_15))
3876 /**
3877   * @}
3878   */
3879 
3880 /* Include RCC HAL Extended module */
3881 #include "stm32u5xx_hal_rcc_ex.h"
3882 
3883 /* Exported functions --------------------------------------------------------*/
3884 /** @addtogroup RCC_Exported_Functions
3885   * @{
3886   */
3887 
3888 /** @addtogroup RCC_Exported_Functions_Group1
3889   * @{
3890   */
3891 
3892 /* Initialization and de-initialization functions  ******************************/
3893 HAL_StatusTypeDef HAL_RCC_DeInit(void);
3894 HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *pRCC_OscInitStruct);
3895 HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *const pRCC_ClkInitStruct, uint32_t FLatency);
3896 
3897 /**
3898   * @}
3899   */
3900 
3901 /** @addtogroup RCC_Exported_Functions_Group2
3902   * @{
3903   */
3904 
3905 /* Peripheral Control functions  **********************************************/
3906 void              HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv);
3907 void              HAL_RCC_EnableCSS(void);
3908 uint32_t          HAL_RCC_GetSysClockFreq(void);
3909 uint32_t          HAL_RCC_GetHCLKFreq(void);
3910 uint32_t          HAL_RCC_GetPCLK1Freq(void);
3911 uint32_t          HAL_RCC_GetPCLK2Freq(void);
3912 uint32_t          HAL_RCC_GetPCLK3Freq(void);
3913 void              HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *pRCC_OscInitStruct);
3914 void              HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *pRCC_ClkInitStruct, uint32_t *pFLatency);
3915 uint32_t          HAL_RCC_GetResetSource(void);
3916 /* CSS NMI IRQ handler */
3917 void              HAL_RCC_NMI_IRQHandler(void);
3918 /* User Callbacks in non blocking mode (IT mode) */
3919 void              HAL_RCC_CSSCallback(void);
3920 
3921 /**
3922   * @}
3923   */
3924 
3925 /* Attributes management functions ********************************************/
3926 void              HAL_RCC_ConfigAttributes(uint32_t Item, uint32_t Attributes);
3927 HAL_StatusTypeDef HAL_RCC_GetConfigAttributes(uint32_t Item, uint32_t *pAttributes);
3928 
3929 /**
3930   * @}
3931   */
3932 
3933 /**
3934   * @}
3935   */
3936 /**
3937   * @}
3938   */
3939 
3940 #ifdef __cplusplus
3941 }
3942 #endif
3943 
3944 #endif /* STM32U5xx_HAL_RCC_H */
3945