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