1 /** 2 ****************************************************************************** 3 * @file stm32g0xx_hal_rcc.h 4 * @author MCD Application Team 5 * @brief Header file of RCC HAL module. 6 ****************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2018 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file in 13 * 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 /* Define to prevent recursive inclusion -------------------------------------*/ 19 #ifndef STM32G0xx_HAL_RCC_H 20 #define STM32G0xx_HAL_RCC_H 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 /* Includes ------------------------------------------------------------------*/ 27 #include "stm32g0xx_hal_def.h" 28 #include "stm32g0xx_ll_rcc.h" 29 30 /** @addtogroup STM32G0xx_HAL_Driver 31 * @{ 32 */ 33 34 /** @addtogroup RCC 35 * @{ 36 */ 37 38 /* Private constants ---------------------------------------------------------*/ 39 /** @addtogroup RCC_Private_Constants 40 * @{ 41 */ 42 /* Defines used for Flags */ 43 #define CR_REG_INDEX 1U 44 #define BDCR_REG_INDEX 2U 45 #define CSR_REG_INDEX 3U 46 #if defined(RCC_HSI48_SUPPORT) 47 #define CRRCR_REG_INDEX 4U 48 #endif /* RCC_HSI48_SUPPORT */ 49 50 #define RCC_FLAG_MASK 0x1FU 51 52 /* Define used for IS_RCC_CLOCKTYPE() */ 53 #define RCC_CLOCKTYPE_ALL (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1) /*!< All clocktype to configure */ 54 /** 55 * @} 56 */ 57 58 /* Private macros ------------------------------------------------------------*/ 59 /** @addtogroup RCC_Private_Macros 60 * @{ 61 */ 62 63 #if defined(RCC_HSI48_SUPPORT) 64 #define IS_RCC_OSCILLATORTYPE(__OSCILLATOR__) \ 65 (((__OSCILLATOR__) == RCC_OSCILLATORTYPE_NONE) || \ 66 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) || \ 67 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) || \ 68 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSI48) == RCC_OSCILLATORTYPE_HSI48) || \ 69 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) || \ 70 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)) 71 #else 72 #define IS_RCC_OSCILLATORTYPE(__OSCILLATOR__) \ 73 (((__OSCILLATOR__) == RCC_OSCILLATORTYPE_NONE) || \ 74 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) || \ 75 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) || \ 76 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) || \ 77 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)) 78 #endif /* RCC_HSI48_SUPPORT */ 79 80 #define IS_RCC_HSE(__HSE__) (((__HSE__) == RCC_HSE_OFF) || ((__HSE__) == RCC_HSE_ON) || \ 81 ((__HSE__) == RCC_HSE_BYPASS)) 82 83 #define IS_RCC_LSE(__LSE__) (((__LSE__) == RCC_LSE_OFF) || ((__LSE__) == RCC_LSE_ON) || \ 84 ((__LSE__) == RCC_LSE_BYPASS)) 85 86 #define IS_RCC_HSI(__HSI__) (((__HSI__) == RCC_HSI_OFF) || ((__HSI__) == RCC_HSI_ON)) 87 88 #if defined(RCC_HSI48_SUPPORT) 89 #define IS_RCC_HSI48(__HSI48__) (((__HSI48__) == RCC_HSI48_OFF) || ((__HSI48__) == RCC_HSI48_ON)) 90 #endif /* RCC_HSI48_SUPPORT */ 91 92 #define IS_RCC_HSI_CALIBRATION_VALUE(__VALUE__) ((__VALUE__) <= (uint32_t)127U) 93 94 #define IS_RCC_HSIDIV(__DIV__) (((__DIV__) == RCC_HSI_DIV1) || ((__DIV__) == RCC_HSI_DIV2) || \ 95 ((__DIV__) == RCC_HSI_DIV4) || ((__DIV__) == RCC_HSI_DIV8) || \ 96 ((__DIV__) == RCC_HSI_DIV16) || ((__DIV__) == RCC_HSI_DIV32)|| \ 97 ((__DIV__) == RCC_HSI_DIV64) || ((__DIV__) == RCC_HSI_DIV128)) 98 99 #define IS_RCC_LSI(__LSI__) (((__LSI__) == RCC_LSI_OFF) || ((__LSI__) == RCC_LSI_ON)) 100 101 #define IS_RCC_PLL(__PLL__) (((__PLL__) == RCC_PLL_NONE) ||((__PLL__) == RCC_PLL_OFF) || \ 102 ((__PLL__) == RCC_PLL_ON)) 103 104 #define IS_RCC_PLLSOURCE(__SOURCE__) (((__SOURCE__) == RCC_PLLSOURCE_NONE) || \ 105 ((__SOURCE__) == RCC_PLLSOURCE_HSI) || \ 106 ((__SOURCE__) == RCC_PLLSOURCE_HSE)) 107 108 #define IS_RCC_PLLM_VALUE(__VALUE__) (((__VALUE__) == RCC_PLLM_DIV1) || ((__VALUE__) == RCC_PLLM_DIV2) || \ 109 ((__VALUE__) == RCC_PLLM_DIV3) || ((__VALUE__) == RCC_PLLM_DIV4) || \ 110 ((__VALUE__) == RCC_PLLM_DIV5) || ((__VALUE__) == RCC_PLLM_DIV6) || \ 111 ((__VALUE__) == RCC_PLLM_DIV7) || ((__VALUE__) == RCC_PLLM_DIV8)) 112 113 #define IS_RCC_PLLN_VALUE(__VALUE__) ((8U <= (__VALUE__)) && ((__VALUE__) <= 86U)) 114 115 #define IS_RCC_PLLP_VALUE(__VALUE__) ((RCC_PLLP_DIV2 <= (__VALUE__)) && ((__VALUE__) <= RCC_PLLP_DIV32)) 116 117 #if defined(RCC_PLLQ_SUPPORT) 118 #define IS_RCC_PLLQ_VALUE(__VALUE__) ((RCC_PLLQ_DIV2 <= (__VALUE__)) && ((__VALUE__) <= RCC_PLLQ_DIV8)) 119 #endif /* RCC_PLLQ_SUPPORT */ 120 121 #define IS_RCC_PLLR_VALUE(__VALUE__) ((RCC_PLLR_DIV2 <= (__VALUE__)) && ((__VALUE__) <= RCC_PLLR_DIV8)) 122 123 #define IS_RCC_CLOCKTYPE(__CLK__) ((((__CLK__)\ 124 & RCC_CLOCKTYPE_ALL) != 0x00UL) && (((__CLK__) & ~RCC_CLOCKTYPE_ALL) == 0x00UL)) 125 126 #define IS_RCC_SYSCLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_SYSCLKSOURCE_HSI) || \ 127 ((__SOURCE__) == RCC_SYSCLKSOURCE_HSE) || \ 128 ((__SOURCE__) == RCC_SYSCLKSOURCE_LSE) || \ 129 ((__SOURCE__) == RCC_SYSCLKSOURCE_LSI) || \ 130 ((__SOURCE__) == RCC_SYSCLKSOURCE_PLLCLK)) 131 132 #define IS_RCC_HCLK(__HCLK__) (((__HCLK__) == RCC_SYSCLK_DIV1) || ((__HCLK__) == RCC_SYSCLK_DIV2) || \ 133 ((__HCLK__) == RCC_SYSCLK_DIV4) || ((__HCLK__) == RCC_SYSCLK_DIV8) || \ 134 ((__HCLK__) == RCC_SYSCLK_DIV16) || ((__HCLK__) == RCC_SYSCLK_DIV64) || \ 135 ((__HCLK__) == RCC_SYSCLK_DIV128) || ((__HCLK__) == RCC_SYSCLK_DIV256) || \ 136 ((__HCLK__) == RCC_SYSCLK_DIV512)) 137 138 #define IS_RCC_PCLK(__PCLK__) (((__PCLK__) == RCC_HCLK_DIV1) || ((__PCLK__) == RCC_HCLK_DIV2) || \ 139 ((__PCLK__) == RCC_HCLK_DIV4) || ((__PCLK__) == RCC_HCLK_DIV8) || \ 140 ((__PCLK__) == RCC_HCLK_DIV16)) 141 142 #define IS_RCC_RTCCLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_RTCCLKSOURCE_NONE) || \ 143 ((__SOURCE__) == RCC_RTCCLKSOURCE_LSE) || \ 144 ((__SOURCE__) == RCC_RTCCLKSOURCE_LSI) || \ 145 ((__SOURCE__) == RCC_RTCCLKSOURCE_HSE_DIV32)) 146 147 #if defined(RCC_MCO2_SUPPORT) 148 #define IS_RCC_MCO(__MCOX__) ( ((__MCOX__) == RCC_MCO_PA8) || \ 149 ((__MCOX__) == RCC_MCO_PA9) || \ 150 ((__MCOX__) == RCC_MCO_PD10) || \ 151 ((__MCOX__) == RCC_MCO_PF2) || \ 152 ((__MCOX__) == RCC_MCO_PA10) || \ 153 ((__MCOX__) == RCC_MCO_PA15) || \ 154 ((__MCOX__) == RCC_MCO_PB2) || \ 155 ((__MCOX__) == RCC_MCO_PD7)) 156 #else 157 #define IS_RCC_MCO(__MCOX__) ( ((__MCOX__) == RCC_MCO_PA8) || \ 158 ((__MCOX__) == RCC_MCO_PA9) || \ 159 ((__MCOX__) == RCC_MCO_PD10) || \ 160 ((__MCOX__) == RCC_MCO_PF2)) 161 #endif /* RCC_MCO2_SUPPORT */ 162 163 #if defined(STM32G0C1xx) || defined(STM32G0B1xx) 164 #define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK) || \ 165 ((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK) || \ 166 ((__SOURCE__) == RCC_MCO1SOURCE_HSI) || \ 167 ((__SOURCE__) == RCC_MCO1SOURCE_HSI48) || \ 168 ((__SOURCE__) == RCC_MCO1SOURCE_HSE) || \ 169 ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) || \ 170 ((__SOURCE__) == RCC_MCO1SOURCE_LSI) || \ 171 ((__SOURCE__) == RCC_MCO1SOURCE_LSE) || \ 172 ((__SOURCE__) == RCC_MCO1SOURCE_PLLPCLK) || \ 173 ((__SOURCE__) == RCC_MCO1SOURCE_PLLQCLK) || \ 174 ((__SOURCE__) == RCC_MCO1SOURCE_RTCCLK) || \ 175 ((__SOURCE__) == RCC_MCO1SOURCE_RTC_WKUP)) 176 #elif defined(STM32G0B0xx) 177 #define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK) || \ 178 ((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK) || \ 179 ((__SOURCE__) == RCC_MCO1SOURCE_HSI) || \ 180 ((__SOURCE__) == RCC_MCO1SOURCE_HSE) || \ 181 ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) || \ 182 ((__SOURCE__) == RCC_MCO1SOURCE_LSI) || \ 183 ((__SOURCE__) == RCC_MCO1SOURCE_LSE) || \ 184 ((__SOURCE__) == RCC_MCO1SOURCE_PLLPCLK) || \ 185 ((__SOURCE__) == RCC_MCO1SOURCE_PLLQCLK) || \ 186 ((__SOURCE__) == RCC_MCO1SOURCE_RTCCLK) || \ 187 ((__SOURCE__) == RCC_MCO1SOURCE_RTC_WKUP)) 188 #else 189 #define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK) || \ 190 ((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK) || \ 191 ((__SOURCE__) == RCC_MCO1SOURCE_HSI) || \ 192 ((__SOURCE__) == RCC_MCO1SOURCE_HSE) || \ 193 ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) || \ 194 ((__SOURCE__) == RCC_MCO1SOURCE_LSI) || \ 195 ((__SOURCE__) == RCC_MCO1SOURCE_LSE)) 196 #endif /* STM32G0C1xx || STM32G0B1xx */ 197 198 #if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) 199 #define IS_RCC_MCODIV(__DIV__) (((__DIV__) == RCC_MCODIV_1) || ((__DIV__) == RCC_MCODIV_2) || \ 200 ((__DIV__) == RCC_MCODIV_4) || ((__DIV__) == RCC_MCODIV_8) || \ 201 ((__DIV__) == RCC_MCODIV_16) || ((__DIV__) == RCC_MCODIV_32) || \ 202 ((__DIV__) == RCC_MCODIV_64) || ((__DIV__) == RCC_MCODIV_128) || \ 203 ((__DIV__) == RCC_MCODIV_256)|| ((__DIV__) == RCC_MCODIV_512) || \ 204 ((__DIV__) == RCC_MCODIV_1024)) 205 #else 206 #define IS_RCC_MCODIV(__DIV__) (((__DIV__) == RCC_MCODIV_1) || ((__DIV__) == RCC_MCODIV_2) || \ 207 ((__DIV__) == RCC_MCODIV_4) || ((__DIV__) == RCC_MCODIV_8) || \ 208 ((__DIV__) == RCC_MCODIV_16) || ((__DIV__) == RCC_MCODIV_32) || \ 209 ((__DIV__) == RCC_MCODIV_64) || ((__DIV__) == RCC_MCODIV_128)) 210 #endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ 211 212 #if defined(RCC_MCO2_SUPPORT) 213 #if defined(RCC_HSI48_SUPPORT) 214 #define IS_RCC_MCO2SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO2SOURCE_NOCLOCK) || \ 215 ((__SOURCE__) == RCC_MCO2SOURCE_SYSCLK) || \ 216 ((__SOURCE__) == RCC_MCO2SOURCE_HSI48) || \ 217 ((__SOURCE__) == RCC_MCO2SOURCE_HSI) || \ 218 ((__SOURCE__) == RCC_MCO2SOURCE_HSE) || \ 219 ((__SOURCE__) == RCC_MCO2SOURCE_PLLCLK) || \ 220 ((__SOURCE__) == RCC_MCO2SOURCE_LSI) || \ 221 ((__SOURCE__) == RCC_MCO2SOURCE_LSE) || \ 222 ((__SOURCE__) == RCC_MCO2SOURCE_PLLPCLK) || \ 223 ((__SOURCE__) == RCC_MCO2SOURCE_PLLQCLK) || \ 224 ((__SOURCE__) == RCC_MCO2SOURCE_RTCCLK) || \ 225 ((__SOURCE__) == RCC_MCO2SOURCE_RTC_WKUP)) 226 #else 227 #define IS_RCC_MCO2SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO2SOURCE_NOCLOCK) || \ 228 ((__SOURCE__) == RCC_MCO2SOURCE_SYSCLK) || \ 229 ((__SOURCE__) == RCC_MCO2SOURCE_HSI) || \ 230 ((__SOURCE__) == RCC_MCO2SOURCE_HSE) || \ 231 ((__SOURCE__) == RCC_MCO2SOURCE_PLLCLK) || \ 232 ((__SOURCE__) == RCC_MCO2SOURCE_LSI) || \ 233 ((__SOURCE__) == RCC_MCO2SOURCE_LSE) || \ 234 ((__SOURCE__) == RCC_MCO2SOURCE_PLLPCLK) || \ 235 ((__SOURCE__) == RCC_MCO2SOURCE_PLLQCLK) || \ 236 ((__SOURCE__) == RCC_MCO2SOURCE_RTCCLK) || \ 237 ((__SOURCE__) == RCC_MCO2SOURCE_RTC_WKUP)) 238 #endif /* RCC_HSI48_SUPPORT */ 239 #define IS_RCC_MCO2DIV(__DIV__) (((__DIV__) == RCC_MCO2DIV_1) || ((__DIV__) == RCC_MCO2DIV_2) || \ 240 ((__DIV__) == RCC_MCO2DIV_4) || ((__DIV__) == RCC_MCO2DIV_8) || \ 241 ((__DIV__) == RCC_MCO2DIV_16) || ((__DIV__) == RCC_MCO2DIV_32) || \ 242 ((__DIV__) == RCC_MCO2DIV_64) || ((__DIV__) == RCC_MCO2DIV_128)|| \ 243 ((__DIV__) == RCC_MCO2DIV_256)|| ((__DIV__) == RCC_MCO2DIV_512)|| \ 244 ((__DIV__) == RCC_MCO2DIV_1024)) 245 246 #endif /* RCC_MCO2_SUPPORT */ 247 248 #define IS_RCC_LSE_DRIVE(__DRIVE__) (((__DRIVE__) == RCC_LSEDRIVE_LOW) || \ 249 ((__DRIVE__) == RCC_LSEDRIVE_MEDIUMLOW) || \ 250 ((__DRIVE__) == RCC_LSEDRIVE_MEDIUMHIGH) || \ 251 ((__DRIVE__) == RCC_LSEDRIVE_HIGH)) 252 253 /** 254 * @} 255 */ 256 257 /* Exported types ------------------------------------------------------------*/ 258 /** @defgroup RCC_Exported_Types RCC Exported Types 259 * @{ 260 */ 261 262 /** 263 * @brief RCC PLL configuration structure definition 264 */ 265 typedef struct 266 { 267 uint32_t PLLState; /*!< The new state of the PLL. 268 This parameter can be a value of @ref RCC_PLL_Config */ 269 270 uint32_t PLLSource; /*!< RCC_PLLSource: PLL entry clock source. 271 This parameter must be a value of @ref RCC_PLL_Clock_Source */ 272 273 uint32_t PLLM; /*!< PLLM: Division factor for PLL VCO input clock. 274 This parameter must be a value of @ref RCC_PLLM_Clock_Divider */ 275 276 uint32_t PLLN; /*!< PLLN: Multiplication factor for PLL VCO output clock. 277 This parameter must be a number between Min_Data = 8 and Max_Data = 86 */ 278 279 uint32_t PLLP; /*!< PLLP: PLL Division factor. 280 User have to set the PLLQ parameter correctly to not exceed max frequency 64MHZ. 281 This parameter must be a value of @ref RCC_PLLP_Clock_Divider */ 282 283 #if defined(RCC_PLLQ_SUPPORT) 284 uint32_t PLLQ; /*!< PLLQ: PLL Division factor. 285 User have to set the PLLQ parameter correctly to not exceed max frequency 64MHZ. 286 This parameter must be a value of @ref RCC_PLLQ_Clock_Divider */ 287 #endif /* RCC_PLLQ_SUPPORT */ 288 289 uint32_t PLLR; /*!< PLLR: PLL Division for the main system clock. 290 User have to set the PLLR parameter correctly to not exceed max frequency 64MHZ. 291 This parameter must be a value of @ref RCC_PLLR_Clock_Divider */ 292 293 } RCC_PLLInitTypeDef; 294 295 /** 296 * @brief RCC Internal/External Oscillator (HSE, HSI, LSE and LSI) configuration structure definition 297 */ 298 typedef struct 299 { 300 uint32_t OscillatorType; /*!< The oscillators to be configured. 301 This parameter can be a value of @ref RCC_Oscillator_Type */ 302 303 uint32_t HSEState; /*!< The new state of the HSE. 304 This parameter can be a value of @ref RCC_HSE_Config */ 305 306 uint32_t LSEState; /*!< The new state of the LSE. 307 This parameter can be a value of @ref RCC_LSE_Config */ 308 309 uint32_t HSIState; /*!< The new state of the HSI. 310 This parameter can be a value of @ref RCC_HSI_Config */ 311 312 uint32_t HSIDiv; /*!< The division factor of the HSI16. 313 This parameter can be a value of @ref RCC_HSI_Div */ 314 315 uint32_t HSICalibrationValue; /*!< The calibration trimming value (default is RCC_HSICALIBRATION_DEFAULT). 316 This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7F */ 317 318 uint32_t LSIState; /*!< The new state of the LSI. 319 This parameter can be a value of @ref RCC_LSI_Config */ 320 321 #if defined(RCC_HSI48_SUPPORT) 322 uint32_t HSI48State; /*!< The new state of the HSI48 (only applicable to STM32G0C1xx/STM32G0B1xx/STM32G0B0xx devices). 323 This parameter can be a value of @ref RCC_HSI48_Config */ 324 325 #endif /* RCC_HSI48_SUPPORT */ 326 327 RCC_PLLInitTypeDef PLL; /*!< Main PLL structure parameters */ 328 329 } RCC_OscInitTypeDef; 330 331 /** 332 * @brief RCC System, AHB and APB buses clock configuration structure definition 333 */ 334 typedef struct 335 { 336 uint32_t ClockType; /*!< The clock to be configured. 337 This parameter can be a combination of @ref RCC_System_Clock_Type */ 338 339 uint32_t SYSCLKSource; /*!< The clock source used as system clock (SYSCLK). 340 This parameter can be a value of @ref RCC_System_Clock_Source */ 341 342 uint32_t AHBCLKDivider; /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK). 343 This parameter can be a value of @ref RCC_AHB_Clock_Source */ 344 345 uint32_t APB1CLKDivider; /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK). 346 This parameter can be a value of @ref RCC_APB1_Clock_Source */ 347 348 349 } RCC_ClkInitTypeDef; 350 351 /** 352 * @} 353 */ 354 355 /* Exported constants --------------------------------------------------------*/ 356 /** @defgroup RCC_Exported_Constants RCC Exported Constants 357 * @{ 358 */ 359 360 /** @defgroup RCC_Timeout_Value Timeout Values 361 * @{ 362 */ 363 #define RCC_DBP_TIMEOUT_VALUE 2U /* 2 ms (minimum Tick + 1) */ 364 #define RCC_LSE_TIMEOUT_VALUE LSE_STARTUP_TIMEOUT /* LSE timeout in ms */ 365 /** 366 * @} 367 */ 368 369 /** @defgroup RCC_Oscillator_Type Oscillator Type 370 * @{ 371 */ 372 #define RCC_OSCILLATORTYPE_NONE 0x00000000U /*!< Oscillator configuration unchanged */ 373 #define RCC_OSCILLATORTYPE_HSE 0x00000001U /*!< HSE to configure */ 374 #define RCC_OSCILLATORTYPE_HSI 0x00000002U /*!< HSI to configure */ 375 #define RCC_OSCILLATORTYPE_LSE 0x00000004U /*!< LSE to configure */ 376 #define RCC_OSCILLATORTYPE_LSI 0x00000008U /*!< LSI to configure */ 377 #if defined(RCC_HSI48_SUPPORT) 378 #define RCC_OSCILLATORTYPE_HSI48 0x00000020U /*!< HSI48 to configure */ 379 #endif /* RCC_HSI48_SUPPORT */ 380 381 /** 382 * @} 383 */ 384 385 /** @defgroup RCC_HSE_Config HSE Config 386 * @{ 387 */ 388 #define RCC_HSE_OFF 0x00000000U /*!< HSE clock deactivation */ 389 #define RCC_HSE_ON RCC_CR_HSEON /*!< HSE clock activation */ 390 #define RCC_HSE_BYPASS (RCC_CR_HSEBYP | RCC_CR_HSEON) /*!< External clock source for HSE clock */ 391 /** 392 * @} 393 */ 394 395 /** @defgroup RCC_LSE_Config LSE Config 396 * @{ 397 */ 398 #define RCC_LSE_OFF 0x00000000U /*!< LSE clock deactivation */ 399 #define RCC_LSE_ON RCC_BDCR_LSEON /*!< LSE clock activation */ 400 #define RCC_LSE_BYPASS (RCC_BDCR_LSEBYP | RCC_BDCR_LSEON) /*!< External clock source for LSE clock */ 401 /** 402 * @} 403 */ 404 405 /** @defgroup RCC_HSI_Config HSI Config 406 * @{ 407 */ 408 #define RCC_HSI_OFF 0x00000000U /*!< HSI clock deactivation */ 409 #define RCC_HSI_ON RCC_CR_HSION /*!< HSI clock activation */ 410 411 #define RCC_HSICALIBRATION_DEFAULT 64U /*!< Default HSI calibration trimming value */ 412 /** 413 * @} 414 */ 415 416 /** @defgroup RCC_HSI_Div HSI Div 417 * @{ 418 */ 419 #define RCC_HSI_DIV1 0x00000000U /*!< HSI clock is not divided */ 420 #define RCC_HSI_DIV2 RCC_CR_HSIDIV_0 /*!< HSI clock is divided by 2 */ 421 #define RCC_HSI_DIV4 RCC_CR_HSIDIV_1 /*!< HSI clock is divided by 4 */ 422 #define RCC_HSI_DIV8 (RCC_CR_HSIDIV_1|RCC_CR_HSIDIV_0) /*!< HSI clock is divided by 8 */ 423 #define RCC_HSI_DIV16 RCC_CR_HSIDIV_2 /*!< HSI clock is divided by 16 */ 424 #define RCC_HSI_DIV32 (RCC_CR_HSIDIV_2|RCC_CR_HSIDIV_0) /*!< HSI clock is divided by 32 */ 425 #define RCC_HSI_DIV64 (RCC_CR_HSIDIV_2|RCC_CR_HSIDIV_1) /*!< HSI clock is divided by 64 */ 426 #define RCC_HSI_DIV128 (RCC_CR_HSIDIV_2|RCC_CR_HSIDIV_1|RCC_CR_HSIDIV_0) /*!< HSI clock is divided by 128 */ 427 /** 428 * @} 429 */ 430 431 /** @defgroup RCC_LSI_Config LSI Config 432 * @{ 433 */ 434 #define RCC_LSI_OFF 0x00000000U /*!< LSI clock deactivation */ 435 #define RCC_LSI_ON RCC_CSR_LSION /*!< LSI clock activation */ 436 /** 437 * @} 438 */ 439 440 #if defined(RCC_HSI48_SUPPORT) 441 /** @defgroup RCC_HSI48_Config HSI48 Config 442 * @{ 443 */ 444 #define RCC_HSI48_OFF 0x00000000U /*!< HSI48 clock deactivation */ 445 #define RCC_HSI48_ON RCC_CR_HSI48ON /*!< HSI48 clock activation */ 446 /** 447 * @} 448 */ 449 #endif /* RCC_HSI48_SUPPORT */ 450 451 /** @defgroup RCC_PLL_Config PLL Config 452 * @{ 453 */ 454 #define RCC_PLL_NONE 0x00000000U /*!< PLL configuration unchanged */ 455 #define RCC_PLL_OFF 0x00000001U /*!< PLL deactivation */ 456 #define RCC_PLL_ON 0x00000002U /*!< PLL activation */ 457 /** 458 * @} 459 */ 460 461 /** @defgroup RCC_PLLM_Clock_Divider PLLM Clock Divider 462 * @{ 463 */ 464 #define RCC_PLLM_DIV1 0x00000000U /*!< PLLM division factor = 8 */ 465 #define RCC_PLLM_DIV2 RCC_PLLCFGR_PLLM_0 /*!< PLLM division factor = 2 */ 466 #define RCC_PLLM_DIV3 RCC_PLLCFGR_PLLM_1 /*!< PLLM division factor = 3 */ 467 #define RCC_PLLM_DIV4 (RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLLM division factor = 4 */ 468 #define RCC_PLLM_DIV5 RCC_PLLCFGR_PLLM_2 /*!< PLLM division factor = 5 */ 469 #define RCC_PLLM_DIV6 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0) /*!< PLLM division factor = 6 */ 470 #define RCC_PLLM_DIV7 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1) /*!< PLLM division factor = 7 */ 471 #define RCC_PLLM_DIV8 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1| RCC_PLLCFGR_PLLM_0) /*!< PLLM division factor = 8 */ 472 /** 473 * @} 474 */ 475 476 /** @defgroup RCC_PLLP_Clock_Divider PLLP Clock Divider 477 * @{ 478 */ 479 #define RCC_PLLP_DIV2 RCC_PLLCFGR_PLLP_0 /*!< PLLP division factor = 2 */ 480 #define RCC_PLLP_DIV3 RCC_PLLCFGR_PLLP_1 /*!< PLLP division factor = 3 */ 481 #define RCC_PLLP_DIV4 (RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 4 */ 482 #define RCC_PLLP_DIV5 RCC_PLLCFGR_PLLP_2 /*!< PLLP division factor = 5 */ 483 #define RCC_PLLP_DIV6 (RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 6 */ 484 #define RCC_PLLP_DIV7 (RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1) /*!< PLLP division factor = 7 */ 485 #define RCC_PLLP_DIV8 (RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 8 */ 486 #define RCC_PLLP_DIV9 RCC_PLLCFGR_PLLP_3 /*!< PLLP division factor = 9 */ 487 #define RCC_PLLP_DIV10 (RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 10 */ 488 #define RCC_PLLP_DIV11 (RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_1) /*!< PLLP division factor = 11 */ 489 #define RCC_PLLP_DIV12 (RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 12 */ 490 #define RCC_PLLP_DIV13 (RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2) /*!< PLLP division factor = 13 */ 491 #define RCC_PLLP_DIV14 (RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 14 */ 492 #define RCC_PLLP_DIV15 (RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1) /*!< PLLP division factor = 15 */ 493 #define RCC_PLLP_DIV16 (RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 16 */ 494 #define RCC_PLLP_DIV17 RCC_PLLCFGR_PLLP_4 /*!< PLLP division factor = 17 */ 495 #define RCC_PLLP_DIV18 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 18 */ 496 #define RCC_PLLP_DIV19 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_1) /*!< PLLP division factor = 19 */ 497 #define RCC_PLLP_DIV20 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 20 */ 498 #define RCC_PLLP_DIV21 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_2) /*!< PLLP division factor = 21 */ 499 #define RCC_PLLP_DIV22 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 22 */ 500 #define RCC_PLLP_DIV23 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1) /*!< PLLP division factor = 23 */ 501 #define RCC_PLLP_DIV24 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 24 */ 502 #define RCC_PLLP_DIV25 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3) /*!< PLLP division factor = 25 */ 503 #define RCC_PLLP_DIV26 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 26 */ 504 #define RCC_PLLP_DIV27 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_1) /*!< PLLP division factor = 27 */ 505 #define RCC_PLLP_DIV28 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 28 */ 506 #define RCC_PLLP_DIV29 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2) /*!< PLLP division factor = 29 */ 507 #define RCC_PLLP_DIV30 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 30 */ 508 #define RCC_PLLP_DIV31 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1) /*!< PLLP division factor = 31 */ 509 #define RCC_PLLP_DIV32 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 32 */ 510 /** 511 * @} 512 */ 513 514 #if defined(RCC_PLLQ_SUPPORT) 515 /** @defgroup RCC_PLLQ_Clock_Divider PLLQ Clock Divider 516 * @{ 517 */ 518 #define RCC_PLLQ_DIV2 RCC_PLLCFGR_PLLQ_0 /*!< PLLQ division factor = 2 */ 519 #define RCC_PLLQ_DIV3 RCC_PLLCFGR_PLLQ_1 /*!< PLLQ division factor = 3 */ 520 #define RCC_PLLQ_DIV4 (RCC_PLLCFGR_PLLQ_1 | RCC_PLLCFGR_PLLQ_0) /*!< PLLQ division factor = 4 */ 521 #define RCC_PLLQ_DIV5 RCC_PLLCFGR_PLLQ_2 /*!< PLLQ division factor = 5 */ 522 #define RCC_PLLQ_DIV6 (RCC_PLLCFGR_PLLQ_2 | RCC_PLLCFGR_PLLQ_0) /*!< PLLQ division factor = 6 */ 523 #define RCC_PLLQ_DIV7 (RCC_PLLCFGR_PLLQ_2 | RCC_PLLCFGR_PLLQ_1) /*!< PLLQ division factor = 7 */ 524 #define RCC_PLLQ_DIV8 (RCC_PLLCFGR_PLLQ_2 |RCC_PLLCFGR_PLLQ_1 | RCC_PLLCFGR_PLLQ_0) /*!< PLLQ division factor = 8 */ 525 /** * @} 526 */ 527 #endif /* RCC_PLLQ_SUPPORT */ 528 529 /** @defgroup RCC_PLLR_Clock_Divider PLLR Clock Divider 530 * @{ 531 */ 532 #define RCC_PLLR_DIV2 RCC_PLLCFGR_PLLR_0 /*!< PLLR division factor = 2 */ 533 #define RCC_PLLR_DIV3 RCC_PLLCFGR_PLLR_1 /*!< PLLR division factor = 3 */ 534 #define RCC_PLLR_DIV4 (RCC_PLLCFGR_PLLR_1 | RCC_PLLCFGR_PLLR_0) /*!< PLLR division factor = 4 */ 535 #define RCC_PLLR_DIV5 RCC_PLLCFGR_PLLR_2 /*!< PLLR division factor = 5 */ 536 #define RCC_PLLR_DIV6 (RCC_PLLCFGR_PLLR_2 | RCC_PLLCFGR_PLLR_0) /*!< PLLR division factor = 6 */ 537 #define RCC_PLLR_DIV7 (RCC_PLLCFGR_PLLR_2 | RCC_PLLCFGR_PLLR_1) /*!< PLLR division factor = 7 */ 538 #define RCC_PLLR_DIV8 (RCC_PLLCFGR_PLLR_2 | RCC_PLLCFGR_PLLR_1 | RCC_PLLCFGR_PLLR_0) /*!< PLLR division factor = 8 */ 539 /** * @} 540 */ 541 542 /** @defgroup RCC_PLL_Clock_Source PLL Clock Source 543 * @{ 544 */ 545 #define RCC_PLLSOURCE_NONE 0x00000000U /*!< No clock selected as PLL entry clock source */ 546 #define RCC_PLLSOURCE_HSI RCC_PLLCFGR_PLLSRC_HSI /*!< HSI clock selected as PLL entry clock source */ 547 #define RCC_PLLSOURCE_HSE RCC_PLLCFGR_PLLSRC_HSE /*!< HSE clock selected as PLL entry clock source */ 548 /** 549 * @} 550 */ 551 552 /** @defgroup RCC_PLL_Clock_Output PLL Clock Output 553 * @{ 554 */ 555 #define RCC_PLLPCLK RCC_PLLCFGR_PLLPEN /*!< PLLPCLK selection from main PLL */ 556 #if defined(RCC_PLLQ_SUPPORT) 557 #define RCC_PLLQCLK RCC_PLLCFGR_PLLQEN /*!< PLLQCLK selection from main PLL */ 558 #endif /* RCC_PLLQ_SUPPORT */ 559 #define RCC_PLLRCLK RCC_PLLCFGR_PLLREN /*!< PLLRCLK selection from main PLL */ 560 561 /** 562 * @} 563 */ 564 565 /** @defgroup RCC_System_Clock_Type System Clock Type 566 * @{ 567 */ 568 #define RCC_CLOCKTYPE_SYSCLK 0x00000001U /*!< SYSCLK to configure */ 569 #define RCC_CLOCKTYPE_HCLK 0x00000002U /*!< HCLK to configure */ 570 #define RCC_CLOCKTYPE_PCLK1 0x00000004U /*!< PCLK1 to configure */ 571 /** 572 * @} 573 */ 574 575 /** @defgroup RCC_System_Clock_Source System Clock Source 576 * @{ 577 */ 578 #define RCC_SYSCLKSOURCE_HSI 0x00000000U /*!< HSI selection as system clock */ 579 #define RCC_SYSCLKSOURCE_HSE RCC_CFGR_SW_0 /*!< HSE selection as system clock */ 580 #define RCC_SYSCLKSOURCE_PLLCLK RCC_CFGR_SW_1 /*!< PLL selection as system clock */ 581 #define RCC_SYSCLKSOURCE_LSI (RCC_CFGR_SW_1 | RCC_CFGR_SW_0) /*!< LSI selection as system clock */ 582 #define RCC_SYSCLKSOURCE_LSE RCC_CFGR_SW_2 /*!< LSE selection as system clock */ 583 /** 584 * @} 585 */ 586 587 /** @defgroup RCC_System_Clock_Source_Status System Clock Source Status 588 * @{ 589 */ 590 #define RCC_SYSCLKSOURCE_STATUS_HSI 0x00000000U /*!< HSI used as system clock */ 591 #define RCC_SYSCLKSOURCE_STATUS_HSE RCC_CFGR_SWS_0 /*!< HSE used as system clock */ 592 #define RCC_SYSCLKSOURCE_STATUS_PLLCLK RCC_CFGR_SWS_1 /*!< PLL used as system clock */ 593 #define RCC_SYSCLKSOURCE_STATUS_LSI (RCC_CFGR_SWS_1 | RCC_CFGR_SWS_0) /*!< LSI used as system clock */ 594 #define RCC_SYSCLKSOURCE_STATUS_LSE RCC_CFGR_SWS_2 /*!< LSE used as system clock */ 595 /** 596 * @} 597 */ 598 599 /** @defgroup RCC_AHB_Clock_Source AHB Clock Source 600 * @{ 601 */ 602 #define RCC_SYSCLK_DIV1 0x00000000U /*!< SYSCLK not divided */ 603 #define RCC_SYSCLK_DIV2 RCC_CFGR_HPRE_3 /*!< SYSCLK divided by 2 */ 604 #define RCC_SYSCLK_DIV4 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_0) /*!< SYSCLK divided by 4 */ 605 #define RCC_SYSCLK_DIV8 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_1) /*!< SYSCLK divided by 8 */ 606 #define RCC_SYSCLK_DIV16 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_1 | RCC_CFGR_HPRE_0) /*!< SYSCLK divided by 16 */ 607 #define RCC_SYSCLK_DIV64 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_2) /*!< SYSCLK divided by 64 */ 608 #define RCC_SYSCLK_DIV128 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_2 | RCC_CFGR_HPRE_0) /*!< SYSCLK divided by 128 */ 609 #define RCC_SYSCLK_DIV256 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_2 | RCC_CFGR_HPRE_1) /*!< SYSCLK divided by 256 */ 610 #define RCC_SYSCLK_DIV512 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_2 | RCC_CFGR_HPRE_1 | RCC_CFGR_HPRE_0) /*!< SYSCLK divided by 512 */ 611 /** 612 * @} 613 */ 614 615 /** @defgroup RCC_APB1_Clock_Source APB Clock Source 616 * @{ 617 */ 618 #define RCC_HCLK_DIV1 0x00000000U /*!< HCLK not divided */ 619 #define RCC_HCLK_DIV2 RCC_CFGR_PPRE_2 /*!< HCLK divided by 2 */ 620 #define RCC_HCLK_DIV4 (RCC_CFGR_PPRE_2 | RCC_CFGR_PPRE_0) /*!< HCLK divided by 4 */ 621 #define RCC_HCLK_DIV8 (RCC_CFGR_PPRE_2 | RCC_CFGR_PPRE_1) /*!< HCLK divided by 8 */ 622 #define RCC_HCLK_DIV16 (RCC_CFGR_PPRE_2 | RCC_CFGR_PPRE_1 | RCC_CFGR_PPRE_0) /*!< HCLK divided by 16 */ 623 /** 624 * @} 625 */ 626 627 /** @defgroup RCC_RTC_Clock_Source RTC Clock Source 628 * @{ 629 */ 630 #define RCC_RTCCLKSOURCE_NONE 0x00000000U /*!< No clock configured for RTC */ 631 #define RCC_RTCCLKSOURCE_LSE RCC_BDCR_RTCSEL_0 /*!< LSE oscillator clock used as RTC clock */ 632 #define RCC_RTCCLKSOURCE_LSI RCC_BDCR_RTCSEL_1 /*!< LSI oscillator clock used as RTC clock */ 633 #define RCC_RTCCLKSOURCE_HSE_DIV32 RCC_BDCR_RTCSEL /*!< HSE oscillator clock divided by 32 used as RTC clock */ 634 /** 635 * @} 636 */ 637 638 /** @defgroup RCC_MCO_Index MCO Index 639 * @{ 640 */ 641 642 /* 32 28 20 16 0 643 -------------------------------- 644 | MCO | GPIO | GPIO | GPIO | 645 | Index | AF | Port | Pin | 646 -------------------------------*/ 647 648 #define RCC_MCO_GPIOPORT_POS 16U 649 #define RCC_MCO_GPIOPORT_MASK (0xFUL << RCC_MCO_GPIOPORT_POS) 650 #define RCC_MCO_GPIOAF_POS 20U 651 #define RCC_MCO_GPIOAF_MASK (0xFFUL << RCC_MCO_GPIOAF_POS) 652 #define RCC_MCO_INDEX_POS 28U 653 #define RCC_MCO_INDEX_MASK (0x1UL << RCC_MCO_INDEX_POS) 654 #define RCC_MCO1_INDEX (0x0UL << RCC_MCO_INDEX_POS) /*!< MCO1 index */ 655 #define RCC_MCO_PA8 (RCC_MCO1_INDEX | (GPIO_AF0_MCO << RCC_MCO_GPIOAF_POS) | (GPIO_GET_INDEX(GPIOA) << RCC_MCO_GPIOPORT_POS) | GPIO_PIN_8) 656 #define RCC_MCO_PA9 (RCC_MCO1_INDEX | (GPIO_AF0_MCO << RCC_MCO_GPIOAF_POS) | (GPIO_GET_INDEX(GPIOA) << RCC_MCO_GPIOPORT_POS) | GPIO_PIN_9) 657 #define RCC_MCO_PD10 (RCC_MCO1_INDEX | (GPIO_AF0_MCO << RCC_MCO_GPIOAF_POS) | (GPIO_GET_INDEX(GPIOD) << RCC_MCO_GPIOPORT_POS) | GPIO_PIN_10) /* Not defined for all stm32g0xx family lines */ 658 #define RCC_MCO_PF2 (RCC_MCO1_INDEX | (GPIO_AF0_MCO << RCC_MCO_GPIOAF_POS) | (GPIO_GET_INDEX(GPIOF) << RCC_MCO_GPIOPORT_POS) | GPIO_PIN_2) /* Not defined for all stm32g0xx family lines */ 659 #define RCC_MCO1 RCC_MCO_PA8 660 661 #if defined(RCC_MCO2_SUPPORT) 662 #define RCC_MCO2_INDEX (0x1u << RCC_MCO_INDEX_POS) /*!< MCO2 index */ 663 #define RCC_MCO_PA10 (RCC_MCO2_INDEX | (GPIO_AF3_MCO2 << RCC_MCO_GPIOAF_POS) | (GPIO_GET_INDEX(GPIOA) << RCC_MCO_GPIOPORT_POS) | GPIO_PIN_10) 664 #define RCC_MCO_PA15 (RCC_MCO2_INDEX | (GPIO_AF3_MCO2 << RCC_MCO_GPIOAF_POS) | (GPIO_GET_INDEX(GPIOA) << RCC_MCO_GPIOPORT_POS) | GPIO_PIN_15) 665 #define RCC_MCO_PB2 (RCC_MCO2_INDEX | (GPIO_AF3_MCO2 << RCC_MCO_GPIOAF_POS) | (GPIO_GET_INDEX(GPIOB) << RCC_MCO_GPIOPORT_POS) | GPIO_PIN_2) 666 #define RCC_MCO_PD7 (RCC_MCO2_INDEX | (GPIO_AF3_MCO2 << RCC_MCO_GPIOAF_POS) | (GPIO_GET_INDEX(GPIOD) << RCC_MCO_GPIOPORT_POS) | GPIO_PIN_7) 667 #define RCC_MCO2 RCC_MCO_PA10 668 #endif /* RCC_MCO2_SUPPORT */ 669 670 #define RCC_MCO RCC_MCO1 /*!< MCO1 to be compliant with other families with 2 MCOs*/ 671 /** 672 * @} 673 */ 674 675 /** @defgroup RCC_MCO1_Clock_Source MCO1 Clock Source 676 * @{ 677 */ 678 #define RCC_MCO1SOURCE_NOCLOCK 0x00000000U /*!< MCO1 output disabled, no clock on MCO1 */ 679 #define RCC_MCO1SOURCE_SYSCLK RCC_CFGR_MCOSEL_0 /*!< SYSCLK selection as MCO1 source */ 680 #if defined(RCC_HSI48_SUPPORT) 681 #define RCC_MCO1SOURCE_HSI48 RCC_CFGR_MCOSEL_1 /*!< HSI48 selection as MCO1 source */ 682 #endif /* RCC_HSI48_SUPPORT */ 683 #define RCC_MCO1SOURCE_HSI (RCC_CFGR_MCOSEL_0| RCC_CFGR_MCOSEL_1) /*!< HSI selection as MCO1 source */ 684 #define RCC_MCO1SOURCE_HSE RCC_CFGR_MCOSEL_2 /*!< HSE selection as MCO1 source */ 685 #define RCC_MCO1SOURCE_PLLCLK (RCC_CFGR_MCOSEL_0|RCC_CFGR_MCOSEL_2) /*!< PLLCLK selection as MCO1 source */ 686 #define RCC_MCO1SOURCE_LSI (RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_2) /*!< LSI selection as MCO1 source */ 687 #define RCC_MCO1SOURCE_LSE (RCC_CFGR_MCOSEL_0|RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_2) /*!< LSE selection as MCO1 source */ 688 #if defined(RCC_CFGR_MCOSEL_3) 689 #define RCC_MCO1SOURCE_PLLPCLK RCC_CFGR_MCOSEL_3 /*!< PLLPCLK selection as MCO1 source */ 690 #define RCC_MCO1SOURCE_PLLQCLK (RCC_CFGR_MCOSEL_3|RCC_CFGR_MCOSEL_0) /*!< PLLQCLK selection as MCO1 source */ 691 #define RCC_MCO1SOURCE_RTCCLK (RCC_CFGR_MCOSEL_3|RCC_CFGR_MCOSEL_1) /*!< RTCCLK selection as MCO1 source */ 692 #define RCC_MCO1SOURCE_RTC_WKUP (RCC_CFGR_MCOSEL_3|RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_0) /*!< RTC_Wakeup selection as MCO1 source */ 693 #endif /* RCC_CFGR_MCOSEL_3 */ 694 /** 695 * @} 696 */ 697 698 /** @defgroup RCC_MCO1_Clock_Prescaler MCO1 Clock Prescaler 699 * @{ 700 */ 701 #define RCC_MCODIV_1 0x00000000U /*!< MCO not divided */ 702 #define RCC_MCODIV_2 RCC_CFGR_MCOPRE_0 /*!< MCO divided by 2 */ 703 #define RCC_MCODIV_4 RCC_CFGR_MCOPRE_1 /*!< MCO divided by 4 */ 704 #define RCC_MCODIV_8 (RCC_CFGR_MCOPRE_1 | RCC_CFGR_MCOPRE_0) /*!< MCO divided by 8 */ 705 #define RCC_MCODIV_16 RCC_CFGR_MCOPRE_2 /*!< MCO divided by 16 */ 706 #define RCC_MCODIV_32 (RCC_CFGR_MCOPRE_2 | RCC_CFGR_MCOPRE_0) /*!< MCO divided by 32 */ 707 #define RCC_MCODIV_64 (RCC_CFGR_MCOPRE_2 | RCC_CFGR_MCOPRE_1) /*!< MCO divided by 64 */ 708 #define RCC_MCODIV_128 (RCC_CFGR_MCOPRE_2 | RCC_CFGR_MCOPRE_1 | RCC_CFGR_MCOPRE_0) /*!< MCO divided by 128 */ 709 #if defined(RCC_CFGR_MCOPRE_3) 710 #define RCC_MCODIV_256 RCC_CFGR_MCOPRE_3 /*!< MCO divided by 256 */ 711 #define RCC_MCODIV_512 (RCC_CFGR_MCOPRE_3 | RCC_CFGR_MCOPRE_0) /*!< MCO divided by 512 */ 712 #define RCC_MCODIV_1024 (RCC_CFGR_MCOPRE_3 | RCC_CFGR_MCOPRE_1) /*!< MCO divided by 1024 */ 713 #endif /* RCC_CFGR_MCOSEL_3 */ 714 /** 715 * @} 716 */ 717 718 #if defined(RCC_MCO2_SUPPORT) 719 /** @defgroup RCC_MCO2_Clock_Source MCO2 Clock Source 720 * @{ 721 */ 722 #define RCC_MCO2SOURCE_NOCLOCK 0x00000000U /*!< MCO2 output disabled, no clock on MCO2 */ 723 #define RCC_MCO2SOURCE_SYSCLK RCC_CFGR_MCO2SEL_0 /*!< SYSCLK selection as MCO2 source */ 724 #if defined(RCC_HSI48_SUPPORT) 725 #define RCC_MCO2SOURCE_HSI48 RCC_CFGR_MCO2SEL_1 /*!< HSI48 selection as MCO2 source */ 726 #endif /* RCC_HSI48_SUPPORT */ 727 #define RCC_MCO2SOURCE_HSI (RCC_CFGR_MCO2SEL_1| RCC_CFGR_MCO2SEL_0) /*!< HSI selection as MCO2 source */ 728 #define RCC_MCO2SOURCE_HSE RCC_CFGR_MCO2SEL_2 /*!< HSE selection as MCO2 source */ 729 #define RCC_MCO2SOURCE_PLLCLK (RCC_CFGR_MCO2SEL_2|RCC_CFGR_MCO2SEL_0) /*!< PLLCLK selection as MCO2 source */ 730 #define RCC_MCO2SOURCE_LSI (RCC_CFGR_MCO2SEL_2|RCC_CFGR_MCO2SEL_1) /*!< LSI selection as MCO2 source */ 731 #define RCC_MCO2SOURCE_LSE (RCC_CFGR_MCO2SEL_2|RCC_CFGR_MCO2SEL_1|RCC_CFGR_MCO2SEL_0) /*!< LSE selection as MCO2 source */ 732 #define RCC_MCO2SOURCE_PLLPCLK RCC_CFGR_MCO2SEL_3 /*!< PLLPCLK selection as MCO2 source */ 733 #define RCC_MCO2SOURCE_PLLQCLK (RCC_CFGR_MCO2SEL_3|RCC_CFGR_MCO2SEL_0) /*!< PLLQCLK selection as MCO2 source */ 734 #define RCC_MCO2SOURCE_RTCCLK (RCC_CFGR_MCO2SEL_3|RCC_CFGR_MCO2SEL_1) /*!< RTCCLK selection as MCO2 source */ 735 #define RCC_MCO2SOURCE_RTC_WKUP (RCC_CFGR_MCO2SEL_3|RCC_CFGR_MCO2SEL_1|RCC_CFGR_MCO2SEL_0) /*!< RTC_Wakeup selection as MCO2 source */ 736 /** 737 * @} 738 */ 739 740 /** @defgroup RCC_MCO2_Clock_Prescaler MCO2 Clock Prescaler 741 * @{ 742 */ 743 #define RCC_MCO2DIV_1 0x00000000U /*!< MCO2 not divided */ 744 #define RCC_MCO2DIV_2 RCC_CFGR_MCO2PRE_0 /*!< MCO2 divided by 2 */ 745 #define RCC_MCO2DIV_4 RCC_CFGR_MCO2PRE_1 /*!< MCO2 divided by 4 */ 746 #define RCC_MCO2DIV_8 (RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_0) /*!< MCO2 divided by 8 */ 747 #define RCC_MCO2DIV_16 RCC_CFGR_MCO2PRE_2 /*!< MCO2 divided by 16 */ 748 #define RCC_MCO2DIV_32 (RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_0) /*!< MCO2 divided by 32 */ 749 #define RCC_MCO2DIV_64 (RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_1) /*!< MCO2 divided by 64 */ 750 #define RCC_MCO2DIV_128 (RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_0) /*!< MCO2 divided by 128 */ 751 #define RCC_MCO2DIV_256 RCC_CFGR_MCO2PRE_3 /*!< MCO2 divided by 256 */ 752 #define RCC_MCO2DIV_512 (RCC_CFGR_MCO2PRE_3 | RCC_CFGR_MCO2PRE_0) /*!< MCO2 divided by 512 */ 753 #define RCC_MCO2DIV_1024 (RCC_CFGR_MCO2PRE_3 | RCC_CFGR_MCO2PRE_1) /*!< MCO2 divided by 1024 */ 754 /** 755 * @} 756 */ 757 #endif /* RCC_MCO2_SUPPORT */ 758 759 /** @defgroup RCC_Interrupt Interrupts 760 * @{ 761 */ 762 #define RCC_IT_LSIRDY RCC_CIFR_LSIRDYF /*!< LSI Ready Interrupt flag */ 763 #define RCC_IT_LSERDY RCC_CIFR_LSERDYF /*!< LSE Ready Interrupt flag */ 764 #define RCC_IT_HSIRDY RCC_CIFR_HSIRDYF /*!< HSI Ready Interrupt flag */ 765 #define RCC_IT_HSERDY RCC_CIFR_HSERDYF /*!< HSE Ready Interrupt flag */ 766 #define RCC_IT_PLLRDY RCC_CIFR_PLLRDYF /*!< PLL Ready Interrupt flag */ 767 #define RCC_IT_CSS RCC_CIFR_CSSF /*!< HSE Clock Security System Interrupt flag */ 768 #define RCC_IT_LSECSS RCC_CIFR_LSECSSF /*!< LSE Clock Security System Interrupt flag */ 769 #if defined(RCC_HSI48_SUPPORT) 770 #define RCC_IT_HSI48RDY RCC_CIFR_HSI48RDYF /*!< HSI48 Ready Interrupt flag */ 771 #endif /* RCC_HSI48_SUPPORT */ 772 /** 773 * @} 774 */ 775 776 /** @defgroup RCC_Flag Flags 777 * Elements values convention: XXXYYYYYb 778 * - YYYYY : Flag position in the register 779 * - XXX : Register index 780 * - 001: CR register 781 * - 010: BDCR register 782 * - 011: CSR register 783 * @{ 784 */ 785 /* Flags in the CR register */ 786 #define RCC_FLAG_HSIRDY ((CR_REG_INDEX << 5U) | RCC_CR_HSIRDY_Pos) /*!< HSI Ready flag */ 787 #define RCC_FLAG_HSERDY ((CR_REG_INDEX << 5U) | RCC_CR_HSERDY_Pos) /*!< HSE Ready flag */ 788 #define RCC_FLAG_PLLRDY ((CR_REG_INDEX << 5U) | RCC_CR_PLLRDY_Pos) /*!< PLL Ready flag */ 789 790 #if defined(RCC_HSI48_SUPPORT) 791 /* Flags in the CR register */ 792 #define RCC_FLAG_HSI48RDY ((CR_REG_INDEX << 5U) | RCC_CR_HSI48RDY_Pos) /*!< HSI48 Ready flag */ 793 #endif /* RCC_HSI48_SUPPORT */ 794 795 /* Flags in the BDCR register */ 796 #define RCC_FLAG_LSERDY ((BDCR_REG_INDEX << 5U) | RCC_BDCR_LSERDY_Pos) /*!< LSE Ready flag */ 797 #define RCC_FLAG_LSECSSD ((BDCR_REG_INDEX << 5U) | RCC_BDCR_LSECSSD_Pos) /*!< LSE Clock Security System Interrupt flag */ 798 799 /* Flags in the CSR register */ 800 #define RCC_FLAG_LSIRDY ((CSR_REG_INDEX << 5U) | RCC_CSR_LSIRDY_Pos) /*!< LSI Ready flag */ 801 #define RCC_FLAG_OBLRST ((CSR_REG_INDEX << 5U) | RCC_CSR_OBLRSTF_Pos) /*!< Option Byte Loader reset flag */ 802 #define RCC_FLAG_PINRST ((CSR_REG_INDEX << 5U) | RCC_CSR_PINRSTF_Pos) /*!< PIN reset flag */ 803 #define RCC_FLAG_PWRRST ((CSR_REG_INDEX << 5U) | RCC_CSR_PWRRSTF_Pos) /*!< BOR or POR/PDR reset flag */ 804 #define RCC_FLAG_SFTRST ((CSR_REG_INDEX << 5U) | RCC_CSR_SFTRSTF_Pos) /*!< Software Reset flag */ 805 #define RCC_FLAG_IWDGRST ((CSR_REG_INDEX << 5U) | RCC_CSR_IWDGRSTF_Pos) /*!< Independent Watchdog reset flag */ 806 #define RCC_FLAG_WWDGRST ((CSR_REG_INDEX << 5U) | RCC_CSR_WWDGRSTF_Pos) /*!< Window watchdog reset flag */ 807 #define RCC_FLAG_LPWRRST ((CSR_REG_INDEX << 5U) | RCC_CSR_LPWRRSTF_Pos) /*!< Low-Power reset flag */ 808 809 /** 810 * @} 811 */ 812 813 /** @defgroup RCC_LSEDrive_Config LSE Drive Configuration 814 * @{ 815 */ 816 #define RCC_LSEDRIVE_LOW 0x00000000U /*!< LSE low drive capability */ 817 #define RCC_LSEDRIVE_MEDIUMLOW RCC_BDCR_LSEDRV_0 /*!< LSE medium low drive capability */ 818 #define RCC_LSEDRIVE_MEDIUMHIGH RCC_BDCR_LSEDRV_1 /*!< LSE medium high drive capability */ 819 #define RCC_LSEDRIVE_HIGH RCC_BDCR_LSEDRV /*!< LSE high drive capability */ 820 /** 821 * @} 822 */ 823 824 /** @defgroup RCC_Reset_Flag Reset Flag 825 * @{ 826 */ 827 #define RCC_RESET_FLAG_OBL RCC_CSR_OBLRSTF /*!< Option Byte Loader reset flag */ 828 #define RCC_RESET_FLAG_PIN RCC_CSR_PINRSTF /*!< PIN reset flag */ 829 #define RCC_RESET_FLAG_PWR RCC_CSR_PWRRSTF /*!< BOR or POR/PDR reset flag */ 830 #define RCC_RESET_FLAG_SW RCC_CSR_SFTRSTF /*!< Software Reset flag */ 831 #define RCC_RESET_FLAG_IWDG RCC_CSR_IWDGRSTF /*!< Independent Watchdog reset flag */ 832 #define RCC_RESET_FLAG_WWDG RCC_CSR_WWDGRSTF /*!< Window watchdog reset flag */ 833 #define RCC_RESET_FLAG_LPWR RCC_CSR_LPWRRSTF /*!< Low power reset flag */ 834 #define RCC_RESET_FLAG_ALL (RCC_RESET_FLAG_OBL | RCC_RESET_FLAG_PIN | RCC_RESET_FLAG_PWR | \ 835 RCC_RESET_FLAG_SW | RCC_RESET_FLAG_IWDG | RCC_RESET_FLAG_WWDG | \ 836 RCC_RESET_FLAG_LPWR) 837 /** 838 * @} 839 */ 840 841 /** 842 * @} 843 */ 844 845 /* Exported macros -----------------------------------------------------------*/ 846 847 /** @defgroup RCC_Exported_Macros RCC Exported Macros 848 * @{ 849 */ 850 851 /** @defgroup RCC_AHB_Peripheral_Clock_Enable_Disable AHB Peripheral Clock Enable Disable 852 * @brief Enable or disable the AHB peripheral clock. 853 * @note After reset, the peripheral clock (used for registers read/write access) 854 * is disabled and the application software has to enable this clock before 855 * using it. 856 * @{ 857 */ 858 859 #define __HAL_RCC_DMA1_CLK_ENABLE() do { \ 860 __IO uint32_t tmpreg; \ 861 SET_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN); \ 862 /* Delay after an RCC peripheral clock enabling */ \ 863 tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN); \ 864 UNUSED(tmpreg); \ 865 } while(0U) 866 867 #if defined(DMA2) 868 #define __HAL_RCC_DMA2_CLK_ENABLE() do { \ 869 __IO uint32_t tmpreg; \ 870 SET_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN); \ 871 /* Delay after an RCC peripheral clock enabling */ \ 872 tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN); \ 873 UNUSED(tmpreg); \ 874 } while(0U) 875 876 #endif /* DMA2 */ 877 878 879 #define __HAL_RCC_FLASH_CLK_ENABLE() do { \ 880 __IO uint32_t tmpreg; \ 881 SET_BIT(RCC->AHBENR, RCC_AHBENR_FLASHEN); \ 882 /* Delay after an RCC peripheral clock enabling */ \ 883 tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FLASHEN); \ 884 UNUSED(tmpreg); \ 885 } while(0U) 886 887 #define __HAL_RCC_CRC_CLK_ENABLE() do { \ 888 __IO uint32_t tmpreg; \ 889 SET_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN); \ 890 /* Delay after an RCC peripheral clock enabling */ \ 891 tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN); \ 892 UNUSED(tmpreg); \ 893 } while(0U) 894 895 #if defined(RNG) 896 #define __HAL_RCC_RNG_CLK_ENABLE() do { \ 897 __IO uint32_t tmpreg; \ 898 SET_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN); \ 899 /* Delay after an RCC peripheral clock enabling */ \ 900 tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN); \ 901 UNUSED(tmpreg); \ 902 } while(0U) 903 #endif /* RNG */ 904 905 #if defined(AES) 906 #define __HAL_RCC_AES_CLK_ENABLE() do { \ 907 __IO uint32_t tmpreg; \ 908 SET_BIT(RCC->AHBENR, RCC_AHBENR_AESEN); \ 909 /* Delay after an RCC peripheral clock enabling */ \ 910 tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_AESEN); \ 911 UNUSED(tmpreg); \ 912 } while(0U) 913 #endif /* AES */ 914 915 #define __HAL_RCC_DMA1_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN) 916 #if defined(DMA2) 917 #define __HAL_RCC_DMA2_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN) 918 #endif /* DMA2 */ 919 #define __HAL_RCC_FLASH_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_FLASHEN) 920 #define __HAL_RCC_CRC_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN) 921 #if defined(RNG) 922 #define __HAL_RCC_RNG_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN) 923 #endif /* RNG */ 924 #if defined(AES) 925 #define __HAL_RCC_AES_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_AESEN) 926 #endif /* AES */ 927 /** 928 * @} 929 */ 930 931 /** @defgroup RCC_IOPORT_Clock_Enable_Disable IOPORT Clock Enable Disable 932 * @brief Enable or disable the IO Ports clock. 933 * @note After reset, the IO ports clock (used for registers read/write access) 934 * is disabled and the application software has to enable this clock before 935 * using it. 936 * @{ 937 */ 938 939 #define __HAL_RCC_GPIOA_CLK_ENABLE() do { \ 940 __IO uint32_t tmpreg; \ 941 SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN); \ 942 /* Delay after an RCC peripheral clock enabling */ \ 943 tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN); \ 944 UNUSED(tmpreg); \ 945 } while(0U) 946 947 #define __HAL_RCC_GPIOB_CLK_ENABLE() do { \ 948 __IO uint32_t tmpreg; \ 949 SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN); \ 950 /* Delay after an RCC peripheral clock enabling */ \ 951 tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN); \ 952 UNUSED(tmpreg); \ 953 } while(0U) 954 955 #define __HAL_RCC_GPIOC_CLK_ENABLE() do { \ 956 __IO uint32_t tmpreg; \ 957 SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN); \ 958 /* Delay after an RCC peripheral clock enabling */ \ 959 tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN); \ 960 UNUSED(tmpreg); \ 961 } while(0U) 962 963 #define __HAL_RCC_GPIOD_CLK_ENABLE() do { \ 964 __IO uint32_t tmpreg; \ 965 SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN); \ 966 /* Delay after an RCC peripheral clock enabling */ \ 967 tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN); \ 968 UNUSED(tmpreg); \ 969 } while(0U) 970 971 #if defined(GPIOE) 972 #define __HAL_RCC_GPIOE_CLK_ENABLE() do { \ 973 __IO uint32_t tmpreg; \ 974 SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN); \ 975 /* Delay after an RCC peripheral clock enabling */ \ 976 tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN); \ 977 UNUSED(tmpreg); \ 978 } while(0U) 979 #endif /* GPIOE */ 980 981 #define __HAL_RCC_GPIOF_CLK_ENABLE() do { \ 982 __IO uint32_t tmpreg; \ 983 SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOFEN); \ 984 /* Delay after an RCC peripheral clock enabling */ \ 985 tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOFEN); \ 986 UNUSED(tmpreg); \ 987 } while(0U) 988 989 #define __HAL_RCC_GPIOA_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN) 990 #define __HAL_RCC_GPIOB_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN) 991 #define __HAL_RCC_GPIOC_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN) 992 #define __HAL_RCC_GPIOD_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN) 993 #if defined(GPIOE) 994 #define __HAL_RCC_GPIOE_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN) 995 #endif /* GPIOE */ 996 #define __HAL_RCC_GPIOF_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIOFEN) 997 998 /** 999 * @} 1000 */ 1001 1002 /** @defgroup RCC_APB1_Clock_Enable_Disable APB1 Peripheral Clock Enable Disable 1003 * @brief Enable or disable the APB1 peripheral clock. 1004 * @note After reset, the peripheral clock (used for registers read/write access) 1005 * is disabled and the application software has to enable this clock before 1006 * using it. 1007 * @{ 1008 */ 1009 #if defined(TIM2) 1010 #define __HAL_RCC_TIM2_CLK_ENABLE() do { \ 1011 __IO uint32_t tmpreg; \ 1012 SET_BIT(RCC->APBENR1, RCC_APBENR1_TIM2EN); \ 1013 /* Delay after an RCC peripheral clock enabling */ \ 1014 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM2EN); \ 1015 UNUSED(tmpreg); \ 1016 } while(0U) 1017 #endif /* TIM2 */ 1018 1019 #define __HAL_RCC_TIM3_CLK_ENABLE() do { \ 1020 __IO uint32_t tmpreg; \ 1021 SET_BIT(RCC->APBENR1, RCC_APBENR1_TIM3EN); \ 1022 /* Delay after an RCC peripheral clock enabling */ \ 1023 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM3EN); \ 1024 UNUSED(tmpreg); \ 1025 } while(0U) 1026 1027 #if defined(TIM4) 1028 #define __HAL_RCC_TIM4_CLK_ENABLE() do { \ 1029 __IO uint32_t tmpreg; \ 1030 SET_BIT(RCC->APBENR1, RCC_APBENR1_TIM4EN); \ 1031 /* Delay after an RCC peripheral clock enabling */ \ 1032 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM4EN); \ 1033 UNUSED(tmpreg); \ 1034 } while(0U) 1035 #endif /* TIM4 */ 1036 1037 #define __HAL_RCC_TIM6_CLK_ENABLE() do { \ 1038 __IO uint32_t tmpreg; \ 1039 SET_BIT(RCC->APBENR1, RCC_APBENR1_TIM6EN); \ 1040 /* Delay after an RCC peripheral clock enabling */ \ 1041 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM6EN); \ 1042 UNUSED(tmpreg); \ 1043 } while(0U) 1044 1045 #define __HAL_RCC_TIM7_CLK_ENABLE() do { \ 1046 __IO uint32_t tmpreg; \ 1047 SET_BIT(RCC->APBENR1, RCC_APBENR1_TIM7EN); \ 1048 /* Delay after an RCC peripheral clock enabling */ \ 1049 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM7EN); \ 1050 UNUSED(tmpreg); \ 1051 } while(0U) 1052 1053 #if defined(CRS) 1054 #define __HAL_RCC_CRS_CLK_ENABLE() do { \ 1055 __IO uint32_t tmpreg; \ 1056 SET_BIT(RCC->APBENR1, RCC_APBENR1_CRSEN); \ 1057 /* Delay after an RCC peripheral clock enabling */ \ 1058 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_CRSEN); \ 1059 UNUSED(tmpreg); \ 1060 } while(0) 1061 #endif /* CRS */ 1062 1063 #define __HAL_RCC_RTCAPB_CLK_ENABLE() do { \ 1064 __IO uint32_t tmpreg; \ 1065 SET_BIT(RCC->APBENR1, RCC_APBENR1_RTCAPBEN); \ 1066 /* Delay after an RCC peripheral clock enabling */ \ 1067 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_RTCAPBEN); \ 1068 UNUSED(tmpreg); \ 1069 } while(0U) 1070 1071 #define __HAL_RCC_WWDG_CLK_ENABLE() do { \ 1072 __IO uint32_t tmpreg; \ 1073 SET_BIT(RCC->APBENR1, RCC_APBENR1_WWDGEN); \ 1074 /* Delay after an RCC peripheral clock enabling */ \ 1075 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_WWDGEN); \ 1076 UNUSED(tmpreg); \ 1077 } while(0U) 1078 1079 #define __HAL_RCC_SPI2_CLK_ENABLE() do { \ 1080 __IO uint32_t tmpreg; \ 1081 SET_BIT(RCC->APBENR1, RCC_APBENR1_SPI2EN); \ 1082 /* Delay after an RCC peripheral clock enabling */ \ 1083 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_SPI2EN); \ 1084 UNUSED(tmpreg); \ 1085 } while(0U) 1086 #if defined(SPI3) 1087 #define __HAL_RCC_SPI3_CLK_ENABLE() do { \ 1088 __IO uint32_t tmpreg; \ 1089 SET_BIT(RCC->APBENR1, RCC_APBENR1_SPI3EN); \ 1090 /* Delay after an RCC peripheral clock enabling */ \ 1091 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_SPI3EN); \ 1092 UNUSED(tmpreg); \ 1093 } while(0U) 1094 #endif /* SPI3 */ 1095 1096 #define __HAL_RCC_USART2_CLK_ENABLE() do { \ 1097 __IO uint32_t tmpreg; \ 1098 SET_BIT(RCC->APBENR1, RCC_APBENR1_USART2EN); \ 1099 /* Delay after an RCC peripheral clock enabling */ \ 1100 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_USART2EN); \ 1101 UNUSED(tmpreg); \ 1102 } while(0U) 1103 1104 #define __HAL_RCC_USART3_CLK_ENABLE() do { \ 1105 __IO uint32_t tmpreg; \ 1106 SET_BIT(RCC->APBENR1, RCC_APBENR1_USART3EN); \ 1107 /* Delay after an RCC peripheral clock enabling */ \ 1108 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_USART3EN); \ 1109 UNUSED(tmpreg); \ 1110 } while(0U) 1111 1112 #define __HAL_RCC_USART4_CLK_ENABLE() do { \ 1113 __IO uint32_t tmpreg; \ 1114 SET_BIT(RCC->APBENR1, RCC_APBENR1_USART4EN); \ 1115 /* Delay after an RCC peripheral clock enabling */ \ 1116 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_USART4EN); \ 1117 UNUSED(tmpreg); \ 1118 } while(0U) 1119 1120 #if defined(USART5) 1121 #define __HAL_RCC_USART5_CLK_ENABLE() do { \ 1122 __IO uint32_t tmpreg; \ 1123 SET_BIT(RCC->APBENR1, RCC_APBENR1_USART5EN); \ 1124 /* Delay after an RCC peripheral clock enabling */ \ 1125 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_USART5EN); \ 1126 UNUSED(tmpreg); \ 1127 } while(0U) 1128 #endif /* USART5 */ 1129 1130 #if defined(USART6) 1131 #define __HAL_RCC_USART6_CLK_ENABLE() do { \ 1132 __IO uint32_t tmpreg; \ 1133 SET_BIT(RCC->APBENR1, RCC_APBENR1_USART6EN); \ 1134 /* Delay after an RCC peripheral clock enabling */ \ 1135 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_USART6EN); \ 1136 UNUSED(tmpreg); \ 1137 } while(0U) 1138 #endif /* USART6 */ 1139 1140 #if defined(LPUART1) 1141 #define __HAL_RCC_LPUART1_CLK_ENABLE() do { \ 1142 __IO uint32_t tmpreg; \ 1143 SET_BIT(RCC->APBENR1, RCC_APBENR1_LPUART1EN); \ 1144 /* Delay after an RCC peripheral clock enabling */ \ 1145 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_LPUART1EN); \ 1146 UNUSED(tmpreg); \ 1147 } while(0U) 1148 #endif /* LPUART1 */ 1149 1150 #if defined(LPUART2) 1151 #define __HAL_RCC_LPUART2_CLK_ENABLE() do { \ 1152 __IO uint32_t tmpreg; \ 1153 SET_BIT(RCC->APBENR1, RCC_APBENR1_LPUART2EN); \ 1154 /* Delay after an RCC peripheral clock enabling */ \ 1155 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_LPUART2EN); \ 1156 UNUSED(tmpreg); \ 1157 } while(0U) 1158 #endif /* LPUART2 */ 1159 1160 #define __HAL_RCC_I2C1_CLK_ENABLE() do { \ 1161 __IO uint32_t tmpreg; \ 1162 SET_BIT(RCC->APBENR1, RCC_APBENR1_I2C1EN); \ 1163 /* Delay after an RCC peripheral clock enabling */ \ 1164 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C1EN); \ 1165 UNUSED(tmpreg); \ 1166 } while(0U) 1167 1168 #define __HAL_RCC_I2C2_CLK_ENABLE() do { \ 1169 __IO uint32_t tmpreg; \ 1170 SET_BIT(RCC->APBENR1, RCC_APBENR1_I2C2EN); \ 1171 /* Delay after an RCC peripheral clock enabling */ \ 1172 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C2EN); \ 1173 UNUSED(tmpreg); \ 1174 } while(0U) 1175 1176 #if defined(I2C3) 1177 #define __HAL_RCC_I2C3_CLK_ENABLE() do { \ 1178 __IO uint32_t tmpreg; \ 1179 SET_BIT(RCC->APBENR1, RCC_APBENR1_I2C3EN); \ 1180 /* Delay after an RCC peripheral clock enabling */ \ 1181 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C3EN); \ 1182 UNUSED(tmpreg); \ 1183 } while(0U) 1184 #endif /* I2C3 */ 1185 1186 #if defined(CEC) 1187 #define __HAL_RCC_CEC_CLK_ENABLE() do { \ 1188 __IO uint32_t tmpreg; \ 1189 SET_BIT(RCC->APBENR1, RCC_APBENR1_CECEN); \ 1190 /* Delay after an RCC peripheral clock enabling */ \ 1191 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_CECEN); \ 1192 UNUSED(tmpreg); \ 1193 } while(0U) 1194 #endif /* CEC */ 1195 1196 #if defined(UCPD1) 1197 #define __HAL_RCC_UCPD1_CLK_ENABLE() do { \ 1198 __IO uint32_t tmpreg; \ 1199 SET_BIT(RCC->APBENR1, RCC_APBENR1_UCPD1EN); \ 1200 /* Delay after an RCC peripheral clock enabling */ \ 1201 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_UCPD1EN); \ 1202 UNUSED(tmpreg); \ 1203 } while(0U) 1204 #endif /* UCPD1 */ 1205 1206 #if defined(UCPD2) 1207 #define __HAL_RCC_UCPD2_CLK_ENABLE() do { \ 1208 __IO uint32_t tmpreg; \ 1209 SET_BIT(RCC->APBENR1, RCC_APBENR1_UCPD2EN); \ 1210 /* Delay after an RCC peripheral clock enabling */ \ 1211 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_UCPD2EN); \ 1212 UNUSED(tmpreg); \ 1213 } while(0U) 1214 #endif /* UCPD2 */ 1215 1216 #if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) 1217 #define __HAL_RCC_USB_CLK_ENABLE() do { \ 1218 __IO uint32_t tmpreg; \ 1219 SET_BIT(RCC->APBENR1, RCC_APBENR1_USBEN); \ 1220 /* Delay after an RCC peripheral clock enabling */ \ 1221 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_USBEN); \ 1222 UNUSED(tmpreg); \ 1223 } while(0U) 1224 #endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ 1225 1226 #if defined(FDCAN1) || defined(FDCAN2) 1227 #define __HAL_RCC_FDCAN_CLK_ENABLE() do { \ 1228 __IO uint32_t tmpreg; \ 1229 SET_BIT(RCC->APBENR1, RCC_APBENR1_FDCANEN); \ 1230 /* Delay after an RCC peripheral clock enabling */ \ 1231 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_FDCANEN); \ 1232 UNUSED(tmpreg); \ 1233 } while(0) 1234 #endif /* FDCAN1 || FDCAN2 */ 1235 1236 #define __HAL_RCC_DBGMCU_CLK_ENABLE() do { \ 1237 __IO uint32_t tmpreg; \ 1238 SET_BIT(RCC->APBENR1, RCC_APBENR1_DBGEN); \ 1239 /* Delay after an RCC peripheral clock enabling */ \ 1240 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_DBGEN); \ 1241 UNUSED(tmpreg); \ 1242 } while(0U) 1243 1244 #define __HAL_RCC_PWR_CLK_ENABLE() do { \ 1245 __IO uint32_t tmpreg; \ 1246 SET_BIT(RCC->APBENR1, RCC_APBENR1_PWREN); \ 1247 /* Delay after an RCC peripheral clock enabling */ \ 1248 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_PWREN); \ 1249 UNUSED(tmpreg); \ 1250 } while(0U) 1251 1252 #if defined(DAC1) 1253 #define __HAL_RCC_DAC1_CLK_ENABLE() do { \ 1254 __IO uint32_t tmpreg; \ 1255 SET_BIT(RCC->APBENR1, RCC_APBENR1_DAC1EN); \ 1256 /* Delay after an RCC peripheral clock enabling */ \ 1257 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_DAC1EN); \ 1258 UNUSED(tmpreg); \ 1259 } while(0U) 1260 #endif /* DAC1 */ 1261 1262 #if defined(LPTIM2) 1263 #define __HAL_RCC_LPTIM2_CLK_ENABLE() do { \ 1264 __IO uint32_t tmpreg; \ 1265 SET_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM2EN); \ 1266 /* Delay after an RCC peripheral clock enabling */ \ 1267 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM2EN); \ 1268 UNUSED(tmpreg); \ 1269 } while(0U) 1270 #endif /* LPTIM2 */ 1271 1272 #if defined(LPTIM1) 1273 #define __HAL_RCC_LPTIM1_CLK_ENABLE() do { \ 1274 __IO uint32_t tmpreg; \ 1275 SET_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM1EN); \ 1276 /* Delay after an RCC peripheral clock enabling */ \ 1277 tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM1EN); \ 1278 UNUSED(tmpreg); \ 1279 } while(0U) 1280 #endif /* LPTIM1 */ 1281 1282 /** 1283 * @} 1284 */ 1285 1286 /** @defgroup RCC_APB2_Clock_Enable_Disable APB2 Peripheral Clock Enable Disable 1287 * @brief Enable or disable the APB2 peripheral clock. 1288 * @note After reset, the peripheral clock (used for registers read/write access) 1289 * is disabled and the application software has to enable this clock before 1290 * using it. 1291 * @{ 1292 */ 1293 1294 #define __HAL_RCC_SYSCFG_CLK_ENABLE() do { \ 1295 __IO uint32_t tmpreg; \ 1296 SET_BIT(RCC->APBENR2, RCC_APBENR2_SYSCFGEN); \ 1297 /* Delay after an RCC peripheral clock enabling */ \ 1298 tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_SYSCFGEN); \ 1299 UNUSED(tmpreg); \ 1300 } while(0U) 1301 1302 #define __HAL_RCC_TIM1_CLK_ENABLE() do { \ 1303 __IO uint32_t tmpreg; \ 1304 SET_BIT(RCC->APBENR2, RCC_APBENR2_TIM1EN); \ 1305 /* Delay after an RCC peripheral clock enabling */ \ 1306 tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM1EN); \ 1307 UNUSED(tmpreg); \ 1308 } while(0U) 1309 1310 #define __HAL_RCC_SPI1_CLK_ENABLE() do { \ 1311 __IO uint32_t tmpreg; \ 1312 SET_BIT(RCC->APBENR2, RCC_APBENR2_SPI1EN); \ 1313 /* Delay after an RCC peripheral clock enabling */ \ 1314 tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_SPI1EN); \ 1315 UNUSED(tmpreg); \ 1316 } while(0U) 1317 1318 #define __HAL_RCC_USART1_CLK_ENABLE() do { \ 1319 __IO uint32_t tmpreg; \ 1320 SET_BIT(RCC->APBENR2, RCC_APBENR2_USART1EN); \ 1321 /* Delay after an RCC peripheral clock enabling */ \ 1322 tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_USART1EN); \ 1323 UNUSED(tmpreg); \ 1324 } while(0U) 1325 1326 #define __HAL_RCC_TIM14_CLK_ENABLE() do { \ 1327 __IO uint32_t tmpreg; \ 1328 SET_BIT(RCC->APBENR2, RCC_APBENR2_TIM14EN); \ 1329 /* Delay after an RCC peripheral clock enabling */ \ 1330 tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM14EN); \ 1331 UNUSED(tmpreg); \ 1332 } while(0U) 1333 1334 #if defined(TIM15) 1335 #define __HAL_RCC_TIM15_CLK_ENABLE() do { \ 1336 __IO uint32_t tmpreg; \ 1337 SET_BIT(RCC->APBENR2, RCC_APBENR2_TIM15EN); \ 1338 /* Delay after an RCC peripheral clock enabling */ \ 1339 tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM15EN); \ 1340 UNUSED(tmpreg); \ 1341 } while(0U) 1342 #endif /* TIM15 */ 1343 1344 #define __HAL_RCC_TIM16_CLK_ENABLE() do { \ 1345 __IO uint32_t tmpreg; \ 1346 SET_BIT(RCC->APBENR2, RCC_APBENR2_TIM16EN); \ 1347 /* Delay after an RCC peripheral clock enabling */ \ 1348 tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM16EN); \ 1349 UNUSED(tmpreg); \ 1350 } while(0U) 1351 1352 #define __HAL_RCC_TIM17_CLK_ENABLE() do { \ 1353 __IO uint32_t tmpreg; \ 1354 SET_BIT(RCC->APBENR2, RCC_APBENR2_TIM17EN); \ 1355 /* Delay after an RCC peripheral clock enabling */ \ 1356 tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM17EN); \ 1357 UNUSED(tmpreg); \ 1358 } while(0U) 1359 1360 #define __HAL_RCC_ADC_CLK_ENABLE() do { \ 1361 __IO uint32_t tmpreg; \ 1362 SET_BIT(RCC->APBENR2, RCC_APBENR2_ADCEN); \ 1363 /* Delay after an RCC peripheral clock enabling */ \ 1364 tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_ADCEN); \ 1365 UNUSED(tmpreg); \ 1366 } while(0U) 1367 1368 #if defined(TIM2) 1369 #define __HAL_RCC_TIM2_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_TIM2EN) 1370 #endif /* TIM2 */ 1371 #define __HAL_RCC_TIM3_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_TIM3EN) 1372 #if defined(TIM4) 1373 #define __HAL_RCC_TIM4_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_TIM4EN) 1374 #endif /* TIM4 */ 1375 #if defined(TIM6) 1376 #define __HAL_RCC_TIM6_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_TIM6EN) 1377 #endif /* TIM6 */ 1378 #if defined(TIM7) 1379 #define __HAL_RCC_TIM7_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_TIM7EN) 1380 #endif /* TIM7 */ 1381 #if defined(CRS) 1382 #define __HAL_RCC_CRS_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_CRSEN); 1383 #endif /* CRS */ 1384 #define __HAL_RCC_RTCAPB_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_RTCAPBEN) 1385 #define __HAL_RCC_SPI2_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_SPI2EN) 1386 #if defined(SPI3) 1387 #define __HAL_RCC_SPI3_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_SPI3EN) 1388 #endif /* SPI3 */ 1389 #define __HAL_RCC_USART2_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_USART2EN) 1390 #if defined(USART3) 1391 #define __HAL_RCC_USART3_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_USART3EN) 1392 #endif /* USART3 */ 1393 #if defined(USART4) 1394 #define __HAL_RCC_USART4_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_USART4EN) 1395 #endif /* USART4 */ 1396 #if defined(USART5) 1397 #define __HAL_RCC_USART5_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_USART5EN) 1398 #endif /* USART5 */ 1399 #if defined(USART6) 1400 #define __HAL_RCC_USART6_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_USART6EN) 1401 #endif /* USART6 */ 1402 #if defined(LPUART1) 1403 #define __HAL_RCC_LPUART1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_LPUART1EN) 1404 #endif /* LPUART1 */ 1405 #if defined(LPUART2) 1406 #define __HAL_RCC_LPUART2_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_LPUART2EN) 1407 #endif /* LPUART2 */ 1408 #define __HAL_RCC_I2C1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_I2C1EN) 1409 #define __HAL_RCC_I2C2_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_I2C2EN) 1410 #if defined(I2C3) 1411 #define __HAL_RCC_I2C3_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_I2C3EN) 1412 #endif /* I2C3 */ 1413 #if defined(CEC) 1414 #define __HAL_RCC_CEC_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_CECEN) 1415 #endif /* CEC */ 1416 #if defined(UCPD1) 1417 #define __HAL_RCC_UCPD1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_UCPD1EN) 1418 #endif /* UCPD1 */ 1419 #if defined(UCPD2) 1420 #define __HAL_RCC_UCPD2_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_UCPD2EN) 1421 #endif /* UCPD2 */ 1422 #if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) 1423 #define __HAL_RCC_USB_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_USBEN) 1424 #endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ 1425 #if defined(FDCAN1) || defined(FDCAN2) 1426 #define __HAL_RCC_FDCAN_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_FDCANEN) 1427 #endif /* FDCAN1 || FDCAN2 */ 1428 #define __HAL_RCC_DBGMCU_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_DBGEN) 1429 #define __HAL_RCC_PWR_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_PWREN) 1430 #if defined(DAC1) 1431 #define __HAL_RCC_DAC1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_DAC1EN) 1432 #endif /* DAC1 */ 1433 #if defined(LPTIM1) 1434 #define __HAL_RCC_LPTIM1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM1EN) 1435 #endif /* LPTIM1 */ 1436 #if defined(LPTIM2) 1437 #define __HAL_RCC_LPTIM2_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM2EN) 1438 #endif /* LPTIM2 */ 1439 #define __HAL_RCC_SYSCFG_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_SYSCFGEN) 1440 #define __HAL_RCC_TIM1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_TIM1EN) 1441 #define __HAL_RCC_SPI1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_SPI1EN) 1442 #define __HAL_RCC_USART1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_USART1EN) 1443 #define __HAL_RCC_TIM14_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_TIM14EN) 1444 #if defined(TIM15) 1445 #define __HAL_RCC_TIM15_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_TIM15EN) 1446 #endif /* TIM15 */ 1447 #define __HAL_RCC_TIM16_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_TIM16EN) 1448 #define __HAL_RCC_TIM17_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_TIM17EN) 1449 #define __HAL_RCC_ADC_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_ADCEN) 1450 1451 /** 1452 * @} 1453 */ 1454 1455 /** @defgroup RCC_AHB_Peripheral_Clock_Enabled_Disabled_Status AHB Peripheral Clock Enabled or Disabled Status 1456 * @brief Check whether the AHB peripheral clock is enabled or not. 1457 * @note After reset, the peripheral clock (used for registers read/write access) 1458 * is disabled and the application software has to enable this clock before 1459 * using it. 1460 * @{ 1461 */ 1462 1463 #define __HAL_RCC_DMA1_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN) != RESET) 1464 #if defined(DMA2) 1465 #define __HAL_RCC_DMA2_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN) != RESET) 1466 #endif /* DMA2 */ 1467 #define __HAL_RCC_FLASH_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_FLASHEN) != RESET) 1468 #define __HAL_RCC_CRC_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN) != RESET) 1469 #if defined(RNG) 1470 #define __HAL_RCC_RNG_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN) != RESET) 1471 #endif /* RNG */ 1472 #if defined(AES) 1473 #define __HAL_RCC_AES_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_AESEN) != RESET) 1474 #endif /* AES */ 1475 1476 #define __HAL_RCC_DMA1_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN) == RESET) 1477 #if defined(DMA2) 1478 #define __HAL_RCC_DMA2_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN) == RESET) 1479 #endif /* DMA2 */ 1480 #define __HAL_RCC_FLASH_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_FLASHEN) == RESET) 1481 #define __HAL_RCC_CRC_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN) == RESET) 1482 #if defined(RNG) 1483 #define __HAL_RCC_RNG_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN) == RESET) 1484 #endif /* RNG */ 1485 #if defined(AES) 1486 #define __HAL_RCC_AES_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_AESEN) == RESET) 1487 #endif /* AES */ 1488 /** 1489 * @} 1490 */ 1491 1492 /** @defgroup RCC_IOPORT_Clock_Enabled_Disabled_Status IOPORT Clock Enabled or Disabled Status 1493 * @brief Check whether the IO Port clock is enabled or not. 1494 * @note After reset, the peripheral clock (used for registers read/write access) 1495 * is disabled and the application software has to enable this clock before 1496 * using it. 1497 * @{ 1498 */ 1499 #define __HAL_RCC_GPIOA_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN) != RESET) 1500 #define __HAL_RCC_GPIOB_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN) != RESET) 1501 #define __HAL_RCC_GPIOC_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN) != RESET) 1502 #define __HAL_RCC_GPIOD_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN) != RESET) 1503 #if defined(GPIOE) 1504 #define __HAL_RCC_GPIOE_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN) != RESET) 1505 #endif /* GPIOE */ 1506 #define __HAL_RCC_GPIOF_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOFEN) != RESET) 1507 1508 1509 #define __HAL_RCC_GPIOA_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN) == RESET) 1510 #define __HAL_RCC_GPIOB_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN) == RESET) 1511 #define __HAL_RCC_GPIOC_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN) == RESET) 1512 #define __HAL_RCC_GPIOD_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN) == RESET) 1513 #if defined(GPIOE) 1514 #define __HAL_RCC_GPIOE_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN) == RESET) 1515 #endif /* GPIOE */ 1516 #define __HAL_RCC_GPIOF_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOFEN) == RESET) 1517 1518 /** 1519 * @} 1520 */ 1521 1522 /** @defgroup RCC_APB1_Clock_Enabled_Disabled_Status APB1 Peripheral Clock Enabled or Disabled Status 1523 * @brief Check whether the APB1 peripheral clock is enabled or not. 1524 * @note After reset, the peripheral clock (used for registers read/write access) 1525 * is disabled and the application software has to enable this clock before 1526 * using it. 1527 * @{ 1528 */ 1529 1530 #if defined(TIM2) 1531 #define __HAL_RCC_TIM2_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM2EN) != 0U) 1532 #endif /* TIM2 */ 1533 #define __HAL_RCC_TIM3_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM3EN) != 0U) 1534 #if defined(TIM4) 1535 #define __HAL_RCC_TIM4_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM4EN) != 0U) 1536 #endif /* TIM4 */ 1537 #define __HAL_RCC_TIM6_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM6EN) != 0U) 1538 #define __HAL_RCC_TIM7_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM7EN) != 0U) 1539 #if defined(CRS) 1540 #define __HAL_RCC_CRS_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_CRSEN) != 0U) 1541 #endif /* CRS */ 1542 #define __HAL_RCC_RTCAPB_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_RTCAPBEN) != 0U) 1543 #define __HAL_RCC_WWDG_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_WWDGEN) != 0U) 1544 #if defined(FDCAN1) || defined(FDCAN2) 1545 #define __HAL_RCC_FDCAN_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_FDCANEN) != 0U) 1546 #endif /* FDCAN1 || FDCAN2 */ 1547 #if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) 1548 #define __HAL_RCC_USB_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USBEN) != 0U) 1549 #endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ 1550 #define __HAL_RCC_SPI2_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_SPI2EN) != 0U) 1551 #if defined(SPI3) 1552 #define __HAL_RCC_SPI3_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_SPI3EN) != 0U) 1553 #endif /* SPI3 */ 1554 #define __HAL_RCC_USART2_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART2EN) != 0U) 1555 #define __HAL_RCC_USART3_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART3EN) != 0U) 1556 #define __HAL_RCC_USART4_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART4EN) != 0U) 1557 #if defined(USART5) 1558 #define __HAL_RCC_USART5_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART5EN) != 0U) 1559 #endif /* USART5 */ 1560 #if defined(USART6) 1561 #define __HAL_RCC_USART6_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART6EN) != 0U) 1562 #endif /* USART6 */ 1563 #if defined(LPUART1) 1564 #define __HAL_RCC_LPUART1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPUART1EN)!= 0U) 1565 #endif /* LPUART1 */ 1566 #if defined(LPUART2) 1567 #define __HAL_RCC_LPUART2_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPUART2EN)!= 0U) 1568 #endif /* LPUART2 */ 1569 #define __HAL_RCC_I2C1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C1EN) != 0U) 1570 #define __HAL_RCC_I2C2_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C2EN) != 0U) 1571 #if defined(I2C3) 1572 #define __HAL_RCC_I2C3_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C3EN) != 0U) 1573 #endif /* I2C3 */ 1574 #if defined(CEC) 1575 #define __HAL_RCC_CEC_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_CECEN) != 0U) 1576 #endif /* CEC */ 1577 #if defined(UCPD1) 1578 #define __HAL_RCC_UCPD1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_UCPD1EN) != 0U) 1579 #endif /* UCPD1 */ 1580 #if defined(UCPD2) 1581 #define __HAL_RCC_UCPD2_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_UCPD2EN) != 0U) 1582 #endif /* UCPD2 */ 1583 #define __HAL_RCC_DBGMCU_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_DBGEN) != 0U) 1584 #define __HAL_RCC_PWR_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_PWREN) != 0U) 1585 #if defined(DAC1) 1586 #define __HAL_RCC_DAC1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_DAC1EN) != 0U) 1587 #endif /* DAC1 */ 1588 #if defined(LPTIM2) 1589 #define __HAL_RCC_LPTIM2_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM2EN) != 0U) 1590 #endif /* LPTIM2 */ 1591 #if defined(LPTIM1) 1592 #define __HAL_RCC_LPTIM1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM1EN) != 0U) 1593 #endif /* LPTIM1 */ 1594 #if defined(TIM2) 1595 #define __HAL_RCC_TIM2_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM2EN) == 0U) 1596 #endif /* TIM2 */ 1597 #define __HAL_RCC_TIM3_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM3EN) == 0U) 1598 #if defined(TIM4) 1599 #define __HAL_RCC_TIM4_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM4EN) == 0U) 1600 #endif /* TIM4 */ 1601 #define __HAL_RCC_TIM6_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM6EN) == 0U) 1602 #define __HAL_RCC_TIM7_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM7EN) == 0U) 1603 #if defined(CRS) 1604 #define __HAL_RCC_CRS_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_CRSEN) == 0U) 1605 #endif /* CRS */ 1606 #define __HAL_RCC_RTCAPB_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_RTCAPBEN) == 0U) 1607 #define __HAL_RCC_WWDG_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_WWDGEN) == 0U) 1608 #if defined(FDCAN1) || defined(FDCAN2) 1609 #define __HAL_RCC_FDCAN_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_FDCANEN) == 0U) 1610 #endif /* FDCAN1 || FDCAN2 */ 1611 #if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) 1612 #define __HAL_RCC_USB_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USBEN) == 0U) 1613 #endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ 1614 #define __HAL_RCC_SPI2_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_SPI2EN) == 0U) 1615 #if defined(SPI3) 1616 #define __HAL_RCC_SPI3_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_SPI3EN) == 0U) 1617 #endif /* SPI3 */ 1618 #define __HAL_RCC_USART2_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART2EN) == 0U) 1619 #define __HAL_RCC_USART3_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART3EN) == 0U) 1620 #define __HAL_RCC_USART4_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART4EN) == 0U) 1621 #if defined(USART5) 1622 #define __HAL_RCC_USART5_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART5EN) == 0U) 1623 #endif /* USART5 */ 1624 #if defined(USART6) 1625 #define __HAL_RCC_USART6_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART6EN) == 0U) 1626 #endif /* USART6 */ 1627 #if defined(LPUART1) 1628 #define __HAL_RCC_LPUART1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPUART1EN)== 0U) 1629 #endif /* LPUART1 */ 1630 #if defined(LPUART2) 1631 #define __HAL_RCC_LPUART2_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPUART2EN)== 0U) 1632 #endif /* LPUART2 */ 1633 #define __HAL_RCC_I2C1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C1EN) == 0U) 1634 #define __HAL_RCC_I2C2_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C2EN) == 0U) 1635 #if defined(I2C3) 1636 #define __HAL_RCC_I2C3_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C3EN) == 0U) 1637 #endif /* I2C3 */ 1638 #if defined(CEC) 1639 #define __HAL_RCC_CEC_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_CECEN) == 0U) 1640 #endif /* CEC */ 1641 #if defined(UCPD1) 1642 #define __HAL_RCC_UCPD1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_UCPD1EN) == 0U) 1643 #endif /* UCPD1 */ 1644 #if defined(UCPD2) 1645 #define __HAL_RCC_UCPD2_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_UCPD2EN) == 0U) 1646 #endif /* UCPD2 */ 1647 #define __HAL_RCC_DBGMCU_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_DBGEN) == 0U) 1648 #define __HAL_RCC_PWR_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_PWREN) == 0U) 1649 #if defined(DAC1) 1650 #define __HAL_RCC_DAC1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_DAC1EN) == 0U) 1651 #endif /* DAC1 */ 1652 #if defined(LPTIM2) 1653 #define __HAL_RCC_LPTIM2_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM2EN) == 0U) 1654 #endif /* LPTIM2 */ 1655 #if defined(LPTIM1) 1656 #define __HAL_RCC_LPTIM1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM1EN) == 0U) 1657 #endif /* LPTIM1 */ 1658 1659 /** 1660 * @} 1661 */ 1662 1663 /** @defgroup RCC_APB2_Clock_Enabled_Disabled_Status APB2 Peripheral Clock Enabled or Disabled Status 1664 * @brief Check whether the APB2 peripheral clock is enabled or not. 1665 * @note After reset, the peripheral clock (used for registers read/write access) 1666 * is disabled and the application software has to enable this clock before 1667 * using it. 1668 * @{ 1669 */ 1670 1671 #define __HAL_RCC_SYSCFG_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_SYSCFGEN) != 0U) 1672 #define __HAL_RCC_TIM1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM1EN) != 0U) 1673 #define __HAL_RCC_SPI1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_SPI1EN) != 0U) 1674 #define __HAL_RCC_USART1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_USART1EN) != 0U) 1675 #define __HAL_RCC_TIM14_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM14EN) != 0U) 1676 #if defined(TIM15) 1677 #define __HAL_RCC_TIM15_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM15EN) != 0U) 1678 #endif /* TIM15 */ 1679 #define __HAL_RCC_TIM16_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM16EN) != 0U) 1680 #define __HAL_RCC_TIM17_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM17EN) != 0U) 1681 #define __HAL_RCC_ADC_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_ADCEN) != 0U) 1682 1683 #define __HAL_RCC_SYSCFG_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_SYSCFGEN) == 0U) 1684 #define __HAL_RCC_TIM1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM1EN) == 0U) 1685 #define __HAL_RCC_SPI1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_SPI1EN) == 0U) 1686 #define __HAL_RCC_USART1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_USART1EN) == 0U) 1687 #define __HAL_RCC_TIM14_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM14EN) == 0U) 1688 #if defined(TIM15) 1689 #define __HAL_RCC_TIM15_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM15EN) == 0U) 1690 #endif /* TIM15 */ 1691 #define __HAL_RCC_TIM16_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM16EN) == 0U) 1692 #define __HAL_RCC_TIM17_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM17EN) == 0U) 1693 #define __HAL_RCC_ADC_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_ADCEN) == 0U) 1694 1695 /** 1696 * @} 1697 */ 1698 1699 /** @defgroup RCC_AHB_Force_Release_Reset AHB Peripheral Force Release Reset 1700 * @brief Force or release AHB1 peripheral reset. 1701 * @{ 1702 */ 1703 #define __HAL_RCC_AHB_FORCE_RESET() WRITE_REG(RCC->AHBRSTR, 0xFFFFFFFFU) 1704 #define __HAL_RCC_DMA1_FORCE_RESET() SET_BIT(RCC->AHBRSTR, RCC_AHBRSTR_DMA1RST) 1705 #if defined(DMA2) 1706 #define __HAL_RCC_DMA2_FORCE_RESET() SET_BIT(RCC->AHBRSTR, RCC_AHBRSTR_DMA2RST) 1707 #endif /* DMA2 */ 1708 #define __HAL_RCC_FLASH_FORCE_RESET() SET_BIT(RCC->AHBRSTR, RCC_AHBRSTR_FLASHRST) 1709 #define __HAL_RCC_CRC_FORCE_RESET() SET_BIT(RCC->AHBRSTR, RCC_AHBRSTR_CRCRST) 1710 #if defined(RNG) 1711 #define __HAL_RCC_RNG_FORCE_RESET() SET_BIT(RCC->AHBRSTR, RCC_AHBRSTR_RNGRST) 1712 #endif /* RNG */ 1713 #if defined(AES) 1714 #define __HAL_RCC_AES_FORCE_RESET() SET_BIT(RCC->AHBRSTR, RCC_AHBRSTR_AESRST) 1715 #endif /* AES */ 1716 1717 #define __HAL_RCC_AHB_RELEASE_RESET() WRITE_REG(RCC->AHBRSTR, 0x00000000U) 1718 #define __HAL_RCC_DMA1_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, RCC_AHBRSTR_DMA1RST) 1719 #if defined(DMA2) 1720 #define __HAL_RCC_DMA2_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, RCC_AHBRSTR_DMA2RST) 1721 #endif /* DMA2 */ 1722 #define __HAL_RCC_FLASH_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, RCC_AHBRSTR_FLASHRST) 1723 #define __HAL_RCC_CRC_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, RCC_AHBRSTR_CRCRST) 1724 #if defined(RNG) 1725 #define __HAL_RCC_RNG_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, RCC_AHBRSTR_RNGRST) 1726 #endif /* RNG */ 1727 #if defined(AES) 1728 #define __HAL_RCC_AES_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, RCC_AHBRSTR_AESRST) 1729 #endif /* AES */ 1730 /** 1731 * @} 1732 */ 1733 1734 /** @defgroup RCC_IOPORT_Force_Release_Reset IOPORT Force Release Reset 1735 * @brief Force or release IO Port reset. 1736 * @{ 1737 */ 1738 #define __HAL_RCC_IOP_FORCE_RESET() WRITE_REG(RCC->IOPRSTR, 0xFFFFFFFFU) 1739 #define __HAL_RCC_GPIOA_FORCE_RESET() SET_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOARST) 1740 #define __HAL_RCC_GPIOB_FORCE_RESET() SET_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOBRST) 1741 #define __HAL_RCC_GPIOC_FORCE_RESET() SET_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOCRST) 1742 #define __HAL_RCC_GPIOD_FORCE_RESET() SET_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIODRST) 1743 #if defined(GPIOE) 1744 #define __HAL_RCC_GPIOE_FORCE_RESET() SET_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOERST) 1745 #endif /* GPIOE */ 1746 #define __HAL_RCC_GPIOF_FORCE_RESET() SET_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOFRST) 1747 1748 #define __HAL_RCC_IOP_RELEASE_RESET() WRITE_REG(RCC->IOPRSTR, 0x00000000U) 1749 #define __HAL_RCC_GPIOA_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOARST) 1750 #define __HAL_RCC_GPIOB_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOBRST) 1751 #define __HAL_RCC_GPIOC_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOCRST) 1752 #define __HAL_RCC_GPIOD_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIODRST) 1753 #if defined(GPIOE) 1754 #define __HAL_RCC_GPIOE_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOERST) 1755 #endif /* GPIOE */ 1756 #define __HAL_RCC_GPIOF_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOFRST) 1757 1758 /** 1759 * @} 1760 */ 1761 1762 /** @defgroup RCC_APB1_Force_Release_Reset APB1 Peripheral Force Release Reset 1763 * @brief Force or release APB1 peripheral reset. 1764 * @{ 1765 */ 1766 #define __HAL_RCC_APB1_FORCE_RESET() WRITE_REG(RCC->APBRSTR1, 0xFFFFFFFFU) 1767 1768 #if defined(TIM2) 1769 #define __HAL_RCC_TIM2_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM2RST) 1770 #endif /* TIM2 */ 1771 #define __HAL_RCC_TIM3_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM3RST) 1772 #if defined(TIM4) 1773 #define __HAL_RCC_TIM4_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM4RST) 1774 #endif /* TIM4 */ 1775 #define __HAL_RCC_TIM6_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM6RST) 1776 #define __HAL_RCC_TIM7_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM7RST) 1777 #if defined(CRS) 1778 #define __HAL_RCC_CRS_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_CRSRST) 1779 #endif /* CRS */ 1780 #define __HAL_RCC_SPI2_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_SPI2RST) 1781 #if defined(SPI3) 1782 #define __HAL_RCC_SPI3_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_SPI3RST) 1783 #endif /* SPI3 */ 1784 #define __HAL_RCC_USART2_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART2RST) 1785 #define __HAL_RCC_USART3_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART3RST) 1786 #define __HAL_RCC_USART4_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART4RST) 1787 #if defined(USART5) 1788 #define __HAL_RCC_USART5_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART5RST) 1789 #endif /* USART5 */ 1790 #if defined(USART6) 1791 #define __HAL_RCC_USART6_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART6RST) 1792 #endif /* USART6 */ 1793 #if defined(LPUART1) 1794 #define __HAL_RCC_LPUART1_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPUART1RST) 1795 #endif /* LPUART1 */ 1796 #if defined(LPUART2) 1797 #define __HAL_RCC_LPUART2_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPUART2RST) 1798 #endif /* LPUART2 */ 1799 #define __HAL_RCC_I2C1_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_I2C1RST) 1800 #define __HAL_RCC_I2C2_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_I2C2RST) 1801 #if defined(I2C3) 1802 #define __HAL_RCC_I2C3_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_I2C3RST) 1803 #endif /* I2C3 */ 1804 #if defined(CEC) 1805 #define __HAL_RCC_CEC_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_CECRST) 1806 #endif /* CEC */ 1807 #if defined(UCPD1) 1808 #define __HAL_RCC_UCPD1_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_UCPD1RST) 1809 #endif /* UCPD1 */ 1810 #if defined(UCPD2) 1811 #define __HAL_RCC_UCPD2_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_UCPD2RST) 1812 #endif /* UCPD2 */ 1813 #if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) 1814 #define __HAL_RCC_USB_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USBRST) 1815 #endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ 1816 #if defined(FDCAN1) || defined(FDCAN2) 1817 #define __HAL_RCC_FDCAN_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_FDCANRST) 1818 #endif /* FDCAN1 || FDCAN2 */ 1819 #define __HAL_RCC_DBGMCU_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_DBGRST) 1820 #define __HAL_RCC_PWR_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_PWRRST) 1821 #if defined(DAC1) 1822 #define __HAL_RCC_DAC1_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_DAC1RST) 1823 #endif /* DAC1 */ 1824 #if defined(LPTIM2) 1825 #define __HAL_RCC_LPTIM2_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPTIM2RST) 1826 #endif /* LPTIM2 */ 1827 #if defined(LPTIM1) 1828 #define __HAL_RCC_LPTIM1_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPTIM1RST) 1829 #endif /* LPTIM1 */ 1830 #define __HAL_RCC_APB1_RELEASE_RESET() WRITE_REG(RCC->APBRSTR1, 0x00000000U) 1831 #if defined(TIM2) 1832 #define __HAL_RCC_TIM2_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM2RST) 1833 #endif /* TIM2 */ 1834 #define __HAL_RCC_TIM3_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM3RST) 1835 #if defined(TIM4) 1836 #define __HAL_RCC_TIM4_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM4RST) 1837 #endif /* TIM4 */ 1838 #define __HAL_RCC_TIM6_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM6RST) 1839 #define __HAL_RCC_TIM7_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM7RST) 1840 #if defined(CRS) 1841 #define __HAL_RCC_CRS_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_CRSRST) 1842 #endif /* CRS */ 1843 #define __HAL_RCC_SPI2_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_SPI2RST) 1844 #if defined(SPI3) 1845 #define __HAL_RCC_SPI3_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_SPI3RST) 1846 #endif /* SPI3 */ 1847 #define __HAL_RCC_USART2_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART2RST) 1848 #define __HAL_RCC_USART3_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART3RST) 1849 #define __HAL_RCC_USART4_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART4RST) 1850 #if defined(USART5) 1851 #define __HAL_RCC_USART5_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART5RST) 1852 #endif /* USART5 */ 1853 #if defined(USART6) 1854 #define __HAL_RCC_USART6_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART6RST) 1855 #endif /* USART6 */ 1856 #if defined(LPUART1) 1857 #define __HAL_RCC_LPUART1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPUART1RST) 1858 #endif /* LPUART1 */ 1859 #if defined(LPUART2) 1860 #define __HAL_RCC_LPUART2_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPUART2RST) 1861 #endif /* LPUART2 */ 1862 #define __HAL_RCC_I2C1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_I2C1RST) 1863 #define __HAL_RCC_I2C2_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_I2C2RST) 1864 #if defined(I2C3) 1865 #define __HAL_RCC_I2C3_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_I2C3RST) 1866 #endif /* I2C3 */ 1867 #if defined(CEC) 1868 #define __HAL_RCC_CEC_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_CECRST) 1869 #endif /* CEC */ 1870 #if defined(UCPD1) 1871 #define __HAL_RCC_UCPD1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_UCPD1RST) 1872 #endif /* UCPD1 */ 1873 #if defined(UCPD2) 1874 #define __HAL_RCC_UCPD2_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_UCPD2RST) 1875 #endif /* UCPD2 */ 1876 #if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) 1877 #define __HAL_RCC_USB_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USBRST) 1878 #endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ 1879 #if defined(FDCAN1) || defined(FDCAN2) 1880 #define __HAL_RCC_FDCAN_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_FDCANRST) 1881 #endif /* FDCAN1 || FDCAN2 */ 1882 #define __HAL_RCC_DBGMCU_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_DBGRST) 1883 #define __HAL_RCC_PWR_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_PWRRST) 1884 #if defined(DAC1) 1885 #define __HAL_RCC_DAC1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_DAC1RST) 1886 #endif /* DAC1 */ 1887 #if defined(LPTIM2) 1888 #define __HAL_RCC_LPTIM2_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPTIM2RST) 1889 #endif /* LPTIM2 */ 1890 #if defined(LPTIM1) 1891 #define __HAL_RCC_LPTIM1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPTIM1RST) 1892 #endif /* LPTIM1 */ 1893 /** 1894 * @} 1895 */ 1896 1897 /** @defgroup RCC_APB2_Force_Release_Reset APB2 Peripheral Force Release Reset 1898 * @brief Force or release APB2 peripheral reset. 1899 * @{ 1900 */ 1901 #define __HAL_RCC_APB2_FORCE_RESET() WRITE_REG(RCC->APBRSTR2, 0xFFFFFFFFU) 1902 #define __HAL_RCC_SYSCFG_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_SYSCFGRST) 1903 #define __HAL_RCC_TIM1_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM1RST) 1904 #define __HAL_RCC_SPI1_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_SPI1RST) 1905 #define __HAL_RCC_USART1_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_USART1RST) 1906 #define __HAL_RCC_TIM14_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM14RST) 1907 #if defined(TIM15) 1908 #define __HAL_RCC_TIM15_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM15RST) 1909 #endif /* TIM15 */ 1910 #define __HAL_RCC_TIM16_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM16RST) 1911 #define __HAL_RCC_TIM17_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM17RST) 1912 #define __HAL_RCC_ADC_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_ADCRST) 1913 1914 #define __HAL_RCC_APB2_RELEASE_RESET() WRITE_REG(RCC->APBRSTR2, 0x00U) 1915 #define __HAL_RCC_SYSCFG_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_SYSCFGRST) 1916 #define __HAL_RCC_TIM1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM1RST) 1917 #define __HAL_RCC_SPI1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_SPI1RST) 1918 #define __HAL_RCC_USART1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_USART1RST) 1919 #define __HAL_RCC_TIM14_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM14RST) 1920 #if defined(TIM15) 1921 #define __HAL_RCC_TIM15_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM15RST) 1922 #endif /* TIM15 */ 1923 #define __HAL_RCC_TIM16_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM16RST) 1924 #define __HAL_RCC_TIM17_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM17RST) 1925 #define __HAL_RCC_ADC_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_ADCRST) 1926 1927 /** 1928 * @} 1929 */ 1930 1931 /** @defgroup RCC_AHB_Clock_Sleep_Enable_Disable AHB Peripherals Clock Sleep Enable Disable 1932 * @brief Enable or disable the AHB peripherals clock during Low Power (Sleep) mode. 1933 * @note Peripheral clock gating in SLEEP mode can be used to further reduce 1934 * power consumption. 1935 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. 1936 * @note By default, all peripheral clocks are enabled during SLEEP mode. 1937 * @{ 1938 */ 1939 1940 #define __HAL_RCC_DMA1_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA1SMEN) 1941 #if defined(DMA2) 1942 #define __HAL_RCC_DMA2_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA2SMEN) 1943 #endif /* DMA2 */ 1944 #define __HAL_RCC_FLASH_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, RCC_AHBSMENR_FLASHSMEN) 1945 #define __HAL_RCC_SRAM_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, RCC_AHBSMENR_SRAMSMEN) 1946 #define __HAL_RCC_CRC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, RCC_AHBSMENR_CRCSMEN) 1947 #if defined(RNG) 1948 #define __HAL_RCC_RNG_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, RCC_AHBSMENR_RNGSMEN) 1949 #endif /* RNG */ 1950 #if defined(AES) 1951 #define __HAL_RCC_AES_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, RCC_AHBSMENR_AESSMEN) 1952 #endif /* AES */ 1953 #define __HAL_RCC_DMA1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA1SMEN) 1954 #if defined(DMA2) 1955 #define __HAL_RCC_DMA2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA2SMEN) 1956 #endif /* DMA2 */ 1957 #define __HAL_RCC_FLASH_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, RCC_AHBSMENR_FLASHSMEN) 1958 #define __HAL_RCC_SRAM_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, RCC_AHBSMENR_SRAMSMEN) 1959 #define __HAL_RCC_CRC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, RCC_AHBSMENR_CRCSMEN) 1960 #if defined(RNG) 1961 #define __HAL_RCC_RNG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, RCC_AHBSMENR_RNGSMEN) 1962 #endif /* RNG */ 1963 #if defined(AES) 1964 #define __HAL_RCC_AES_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, RCC_AHBSMENR_AESSMEN) 1965 #endif /* AES */ 1966 1967 /** 1968 * @} 1969 */ 1970 1971 /** @defgroup RCC_IOPORT_Clock_Sleep_Enable_Disable IOPORT Clock Sleep Enable Disable 1972 * @brief Enable or disable the IOPORT clock during Low Power (Sleep) mode. 1973 * @note IOPORT clock gating in SLEEP mode can be used to further reduce 1974 * power consumption. 1975 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. 1976 * @note By default, all peripheral clocks are enabled during SLEEP mode. 1977 * @{ 1978 */ 1979 1980 #define __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOASMEN) 1981 #define __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOBSMEN) 1982 #define __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOCSMEN) 1983 #define __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIODSMEN) 1984 #if defined(GPIOE) 1985 #define __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOESMEN) 1986 #endif /* GPIOE */ 1987 #define __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOFSMEN) 1988 1989 #define __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOASMEN) 1990 #define __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOBSMEN) 1991 #define __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOCSMEN) 1992 #define __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIODSMEN) 1993 #if defined(GPIOE) 1994 #define __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOESMEN) 1995 #endif /* GPIOE */ 1996 #define __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOFSMEN) 1997 /** 1998 * @} 1999 */ 2000 2001 /** @defgroup RCC_APB1_Clock_Sleep_Enable_Disable APB1 Peripheral Clock Sleep Enable Disable 2002 * @brief Enable or disable the APB1 peripheral clock during Low Power (Sleep) mode. 2003 * @note Peripheral clock gating in SLEEP mode can be used to further reduce 2004 * power consumption. 2005 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. 2006 * @note By default, all peripheral clocks are enabled during SLEEP mode. 2007 * @{ 2008 */ 2009 #if defined(TIM2) 2010 #define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM2SMEN) 2011 #endif /* TIM2 */ 2012 #define __HAL_RCC_TIM3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM3SMEN) 2013 #if defined(TIM4) 2014 #define __HAL_RCC_TIM4_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM4SMEN) 2015 #endif /* TIM4 */ 2016 #define __HAL_RCC_TIM6_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM6SMEN) 2017 #define __HAL_RCC_TIM7_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM7SMEN) 2018 #if defined(CRS) 2019 #define __HAL_RCC_CRS_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CRSSMEN) 2020 #endif /* CRS */ 2021 #define __HAL_RCC_RTCAPB_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_RTCAPBSMEN) 2022 #define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_WWDGSMEN) 2023 #define __HAL_RCC_SPI2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI2SMEN) 2024 #if defined(SPI3) 2025 #define __HAL_RCC_SPI3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI3SMEN) 2026 #endif /* SPI3 */ 2027 #define __HAL_RCC_USART2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART2SMEN) 2028 #define __HAL_RCC_USART3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART3SMEN) 2029 #define __HAL_RCC_USART4_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART4SMEN) 2030 #if defined(USART5) 2031 #define __HAL_RCC_USART5_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART5SMEN) 2032 #endif /* USART5 */ 2033 #if defined(USART6) 2034 #define __HAL_RCC_USART6_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART6SMEN) 2035 #endif /* USART6 */ 2036 #if defined(LPUART1) 2037 #define __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART1SMEN) 2038 #endif /* LPUART1 */ 2039 #if defined(LPUART2) 2040 #define __HAL_RCC_LPUART2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART2SMEN) 2041 #endif /* LPUART2 */ 2042 #define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C1SMEN) 2043 #define __HAL_RCC_I2C2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C2SMEN) 2044 #if defined(I2C3) 2045 #define __HAL_RCC_I2C3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C3SMEN) 2046 #endif /* I2C3 */ 2047 #if defined(CEC) 2048 #define __HAL_RCC_CEC_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CECSMEN) 2049 #endif /* CEC */ 2050 #if defined(UCPD1) 2051 #define __HAL_RCC_UCPD1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD1SMEN) 2052 #endif /* UCPD1 */ 2053 #if defined(UCPD2) 2054 #define __HAL_RCC_UCPD2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD2SMEN) 2055 #endif /* UCPD2 */ 2056 #if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) 2057 #define __HAL_RCC_USB_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USBSMEN) 2058 #endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ 2059 #if defined(FDCAN1) || defined(FDCAN2) 2060 #define __HAL_RCC_FDCAN_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_FDCANSMEN) 2061 #endif /* FDCAN1 || FDCAN2 */ 2062 #define __HAL_RCC_DBGMCU_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DBGSMEN) 2063 #define __HAL_RCC_PWR_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_PWRSMEN) 2064 #if defined(DAC1) 2065 #define __HAL_RCC_DAC1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DAC1SMEN) 2066 #endif /* DAC1 */ 2067 #if defined(LPTIM2) 2068 #define __HAL_RCC_LPTIM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM2SMEN) 2069 #endif /* LPTIM2 */ 2070 #if defined(LPTIM1) 2071 #define __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM1SMEN) 2072 #endif /* LPTIM1 */ 2073 #if defined(TIM2) 2074 #define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM2SMEN) 2075 #endif /* TIM2 */ 2076 #define __HAL_RCC_TIM3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM3SMEN) 2077 #if defined(TIM4) 2078 #define __HAL_RCC_TIM4_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM4SMEN) 2079 #endif /* TIM4 */ 2080 #define __HAL_RCC_TIM6_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM6SMEN) 2081 #define __HAL_RCC_TIM7_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM7SMEN) 2082 #if defined(CRS) 2083 #define __HAL_RCC_CRS_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CRSSMEN) 2084 #endif /* CRS */ 2085 #define __HAL_RCC_RTCAPB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_RTCAPBSMEN) 2086 #define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_WWDGSMEN) 2087 #define __HAL_RCC_SPI2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI2SMEN) 2088 #if defined(SPI3) 2089 #define __HAL_RCC_SPI3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI3SMEN) 2090 #endif /* TIM2 */ 2091 #define __HAL_RCC_USART2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART2SMEN) 2092 #define __HAL_RCC_USART3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART3SMEN) 2093 #define __HAL_RCC_USART4_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART4SMEN) 2094 #if defined(USART5) 2095 #define __HAL_RCC_USART5_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART5SMEN) 2096 #endif /* USART5 */ 2097 #if defined(USART6) 2098 #define __HAL_RCC_USART6_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART6SMEN) 2099 #endif /* USART6 */ 2100 #if defined(LPUART1) 2101 #define __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART1SMEN) 2102 #endif /* LPUART1 */ 2103 #if defined(LPUART2) 2104 #define __HAL_RCC_LPUART2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART2SMEN) 2105 #endif /* LPUART2 */ 2106 #define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C1SMEN) 2107 #define __HAL_RCC_I2C2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C2SMEN) 2108 #if defined(I2C3) 2109 #define __HAL_RCC_I2C3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C3SMEN) 2110 #endif /* I2C3 */ 2111 #if defined(CEC) 2112 #define __HAL_RCC_CEC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CECSMEN) 2113 #endif /* CEC */ 2114 #if defined(UCPD1) 2115 #define __HAL_RCC_UCPD1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD1SMEN) 2116 #endif /* UCPD1 */ 2117 #if defined(UCPD2) 2118 #define __HAL_RCC_UCPD2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD2SMEN) 2119 #endif /* UCPD2 */ 2120 #if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) 2121 #define __HAL_RCC_USB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USBSMEN) 2122 #endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ 2123 #if defined(FDCAN1) || defined(FDCAN2) 2124 #define __HAL_RCC_FDCAN_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_FDCANSMEN) 2125 #endif /* FDCAN1) || FDCAN2 */ 2126 #define __HAL_RCC_DBGMCU_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DBGSMEN) 2127 #define __HAL_RCC_PWR_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_PWRSMEN) 2128 #if defined(DAC1) 2129 #define __HAL_RCC_DAC1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DAC1SMEN) 2130 #endif /* DAC1 */ 2131 #if defined(LPTIM2) 2132 #define __HAL_RCC_LPTIM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM2SMEN) 2133 #endif /* LPTIM2 */ 2134 #if defined(LPTIM1) 2135 #define __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM1SMEN) 2136 #endif /* LPTIM1 */ 2137 /** 2138 * @} 2139 */ 2140 2141 /** @defgroup RCC_APB2_Clock_Sleep_Enable_Disable APB2 Peripheral Clock Sleep Enable Disable 2142 * @brief Enable or disable the APB2 peripheral clock during Low Power (Sleep) mode. 2143 * @note Peripheral clock gating in SLEEP mode can be used to further reduce 2144 * power consumption. 2145 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. 2146 * @note By default, all peripheral clocks are enabled during SLEEP mode. 2147 * @{ 2148 */ 2149 2150 #define __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SYSCFGSMEN) 2151 #define __HAL_RCC_TIM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM1SMEN) 2152 #define __HAL_RCC_SPI1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SPI1SMEN) 2153 #define __HAL_RCC_USART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_USART1SMEN) 2154 #define __HAL_RCC_TIM14_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM14SMEN) 2155 #if defined(TIM15) 2156 #define __HAL_RCC_TIM15_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM15SMEN) 2157 #endif /* TIM15 */ 2158 #define __HAL_RCC_TIM16_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM16SMEN) 2159 #define __HAL_RCC_TIM17_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM17SMEN) 2160 #define __HAL_RCC_ADC_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_ADCSMEN) 2161 2162 #define __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SYSCFGSMEN) 2163 #define __HAL_RCC_TIM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM1SMEN) 2164 #define __HAL_RCC_SPI1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SPI1SMEN) 2165 #define __HAL_RCC_USART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_USART1SMEN) 2166 #define __HAL_RCC_TIM14_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM14SMEN) 2167 #if defined(TIM15) 2168 #define __HAL_RCC_TIM15_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM15SMEN) 2169 #endif /* TIM15 */ 2170 #define __HAL_RCC_TIM16_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM16SMEN) 2171 #define __HAL_RCC_TIM17_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM17SMEN) 2172 #define __HAL_RCC_ADC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_ADCSMEN) 2173 2174 /** 2175 * @} 2176 */ 2177 2178 /** @defgroup RCC_AHB_Clock_Sleep_Enabled_Disabled_Status AHB Peripheral Clock Sleep Enabled or Disabled Status 2179 * @brief Check whether the AHB peripheral clock during Low Power (Sleep) mode is enabled or not. 2180 * @note Peripheral clock gating in SLEEP mode can be used to further reduce 2181 * power consumption. 2182 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. 2183 * @note By default, all peripheral clocks are enabled during SLEEP mode. 2184 * @{ 2185 */ 2186 2187 #define __HAL_RCC_DMA1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA1SMEN) != RESET) 2188 #if defined(DMA2) 2189 #define __HAL_RCC_DMA2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA2SMEN) != RESET) 2190 #endif /* DMA2 */ 2191 #define __HAL_RCC_FLASH_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_FLASHSMEN)!= RESET) 2192 #define __HAL_RCC_SRAM_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_SRAMSMEN) != RESET) 2193 #define __HAL_RCC_CRC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_CRCSMEN) != RESET) 2194 #if defined(RNG) 2195 #define __HAL_RCC_RNG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_RNGSMEN) != RESET) 2196 #endif /* RNG */ 2197 #if defined(AES) 2198 #define __HAL_RCC_AES_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_AESSMEN) != RESET) 2199 #endif /* AES */ 2200 #define __HAL_RCC_DMA1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA1SMEN) == RESET) 2201 #if defined(DMA2) 2202 #define __HAL_RCC_DMA2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA2SMEN) == RESET) 2203 #endif /* DMA2 */ 2204 #define __HAL_RCC_FLASH_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_FLASHSMEN) == RESET) 2205 #define __HAL_RCC_SRAM_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_SRAMSMEN) == RESET) 2206 #define __HAL_RCC_CRC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_CRCSMEN) == RESET) 2207 #if defined(RNG) 2208 #define __HAL_RCC_RNG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_RNGSMEN) == RESET) 2209 #endif /* RNG */ 2210 #if defined(AES) 2211 #define __HAL_RCC_AES_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_AESSMEN) == RESET) 2212 #endif /* AES */ 2213 2214 /** 2215 * @} 2216 */ 2217 2218 /** @defgroup RCC_IOPORT_Clock_Sleep_Enabled_Disabled_Status IOPORT Clock Sleep Enabled or Disabled Status 2219 * @brief Check whether the IOPORT clock during Low Power (Sleep) mode is enabled or not. 2220 * @note Peripheral clock gating in SLEEP mode can be used to further reduce 2221 * power consumption. 2222 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. 2223 * @note By default, all peripheral clocks are enabled during SLEEP mode. 2224 * @{ 2225 */ 2226 2227 2228 #define __HAL_RCC_GPIOA_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOASMEN)!= RESET) 2229 #define __HAL_RCC_GPIOB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOBSMEN)!= RESET) 2230 #define __HAL_RCC_GPIOC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOCSMEN)!= RESET) 2231 #define __HAL_RCC_GPIOD_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIODSMEN)!= RESET) 2232 #if defined(GPIOE) 2233 #define __HAL_RCC_GPIOE_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOESMEN)!= RESET) 2234 #endif /* GPIOE */ 2235 #define __HAL_RCC_GPIOF_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOFSMEN)!= RESET) 2236 2237 2238 2239 #define __HAL_RCC_GPIOA_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOASMEN) == RESET) 2240 #define __HAL_RCC_GPIOB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOBSMEN) == RESET) 2241 #define __HAL_RCC_GPIOC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOCSMEN) == RESET) 2242 #define __HAL_RCC_GPIOD_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIODSMEN) == RESET) 2243 #if defined(GPIOE) 2244 #define __HAL_RCC_GPIOE_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOESMEN) == RESET) 2245 #endif /* GPIOE */ 2246 #define __HAL_RCC_GPIOF_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOFSMEN) == RESET) 2247 2248 /** 2249 * @} 2250 */ 2251 2252 /** @defgroup RCC_APB1_Clock_Sleep_Enabled_Disabled_Status APB1 Peripheral Clock Sleep Enabled or Disabled Status 2253 * @brief Check whether the APB1 peripheral clock during Low Power (Sleep) mode is enabled or not. 2254 * @note Peripheral clock gating in SLEEP mode can be used to further reduce 2255 * power consumption. 2256 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. 2257 * @note By default, all peripheral clocks are enabled during SLEEP mode. 2258 * @{ 2259 */ 2260 #if defined(TIM2) 2261 #define __HAL_RCC_TIM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM2SMEN) != RESET) 2262 #endif /* TIM2 */ 2263 #define __HAL_RCC_TIM3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM3SMEN) != RESET) 2264 #if defined(TIM4) 2265 #define __HAL_RCC_TIM4_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM4SMEN) != RESET) 2266 #endif /* TIM4 */ 2267 #if defined(TIM6) 2268 #define __HAL_RCC_TIM6_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM6SMEN) != RESET) 2269 #endif /* TIM6 */ 2270 #if defined(TIM7) 2271 #define __HAL_RCC_TIM7_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM7SMEN) != RESET) 2272 #endif /* TIM7 */ 2273 #if defined(CRS) 2274 #define __HAL_RCC_CRS_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CRSSMEN) != RESET) 2275 #endif /* CRS */ 2276 #define __HAL_RCC_RTCAPB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_RTCAPBSMEN) != RESET) 2277 #define __HAL_RCC_WWDG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_WWDGSMEN) != RESET) 2278 #define __HAL_RCC_SPI2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI2SMEN) != RESET) 2279 #if defined(SPI3) 2280 #define __HAL_RCC_SPI3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI3SMEN) != RESET) 2281 #endif /* SPI3 */ 2282 #define __HAL_RCC_USART2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART2SMEN) != RESET) 2283 #if defined(USART3) 2284 #define __HAL_RCC_USART3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART3SMEN) != RESET) 2285 #endif /* USART3 */ 2286 #if defined(USART4) 2287 #define __HAL_RCC_USART4_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART4SMEN) != RESET) 2288 #endif /* USART4 */ 2289 #if defined(USART5) 2290 #define __HAL_RCC_USART5_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART5SMEN) != RESET) 2291 #endif /* USART5 */ 2292 #if defined(USART6) 2293 #define __HAL_RCC_USART6_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART6SMEN) != RESET) 2294 #endif /* USART6 */ 2295 #if defined(LPUART1) 2296 #define __HAL_RCC_LPUART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART1SMEN)!= RESET) 2297 #endif /* LPUART1 */ 2298 #if defined(LPUART2) 2299 #define __HAL_RCC_LPUART2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART2SMEN)!= RESET) 2300 #endif /* LPUART2 */ 2301 #define __HAL_RCC_I2C1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C1SMEN) != RESET) 2302 #define __HAL_RCC_I2C2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C2SMEN) != RESET) 2303 #if defined(I2C3) 2304 #define __HAL_RCC_I2C3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C3SMEN) != RESET) 2305 #endif /* I2C3 */ 2306 #if defined(CEC) 2307 #define __HAL_RCC_CEC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CECSMEN) != RESET) 2308 #endif /* CEC */ 2309 #if defined(UCPD1) 2310 #define __HAL_RCC_UCPD1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD1SMEN) != RESET) 2311 #endif /* UCPD1 */ 2312 #if defined(UCPD2) 2313 #define __HAL_RCC_UCPD2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD2SMEN) != RESET) 2314 #endif /* UCPD2 */ 2315 #if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) 2316 #define __HAL_RCC_USB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USBSMEN) != RESET) 2317 #endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ 2318 #if defined(FDCAN1) || defined(FDCAN2) 2319 #define __HAL_RCC_FDCAN_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_FDCANSMEN) != RESET) 2320 #endif /* FDCAN1 || FDCAN2 */ 2321 #define __HAL_RCC_DBGMCU_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DBGSMEN) != RESET) 2322 #define __HAL_RCC_PWR_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_PWRSMEN) != RESET) 2323 #if defined(DAC1) 2324 #define __HAL_RCC_DAC1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DAC1SMEN) != RESET) 2325 #endif /* DAC1 */ 2326 #if defined(LPTIM2) 2327 #define __HAL_RCC_LPTIM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM2SMEN) != RESET) 2328 #endif /* LPTIM2 */ 2329 #if defined(LPTIM1) 2330 #define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM1SMEN) != RESET) 2331 #endif /* LPTIM1 */ 2332 #if defined(TIM2) 2333 #define __HAL_RCC_TIM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM2SMEN) == RESET) 2334 #endif /* TIM2 */ 2335 #define __HAL_RCC_TIM3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM3SMEN) == RESET) 2336 #if defined(TIM4) 2337 #define __HAL_RCC_TIM4_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM4SMEN) == RESET) 2338 #endif /* TIM4 */ 2339 #if defined(TIM6) 2340 #define __HAL_RCC_TIM6_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM6SMEN) == RESET) 2341 #endif /* TIM6 */ 2342 #if defined(TIM7) 2343 #define __HAL_RCC_TIM7_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM7SMEN) == RESET) 2344 #endif /* TIM7 */ 2345 #if defined(CRS) 2346 #define __HAL_RCC_CRS_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CRSSMEN) == RESET) 2347 #endif /* CRS */ 2348 #define __HAL_RCC_RTCAPB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_RTCAPBSMEN) == RESET) 2349 #define __HAL_RCC_WWDG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_WWDGSMEN) == RESET) 2350 #define __HAL_RCC_SPI2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI2SMEN) == RESET) 2351 #if defined(SPI3) 2352 #define __HAL_RCC_SPI3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI3SMEN) == RESET) 2353 #endif /* SPI3 */ 2354 #define __HAL_RCC_USART2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART2SMEN) == RESET) 2355 #if defined(USART3) 2356 #define __HAL_RCC_USART3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART3SMEN) == RESET) 2357 #endif /* USART3 */ 2358 #if defined(USART4) 2359 #define __HAL_RCC_USART4_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART4SMEN) == RESET) 2360 #endif /* USART4 */ 2361 #if defined(USART5) 2362 #define __HAL_RCC_USART5_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART5SMEN) == RESET) 2363 #endif /* USART5 */ 2364 #if defined(USART6) 2365 #define __HAL_RCC_USART6_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART6SMEN) == RESET) 2366 #endif /* USART6 */ 2367 #if defined(LPUART1) 2368 #define __HAL_RCC_LPUART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART1SMEN)== RESET) 2369 #endif /* LPUART1 */ 2370 #if defined(LPUART2) 2371 #define __HAL_RCC_LPUART2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART2SMEN)== RESET) 2372 #endif /* LPUART2 */ 2373 #define __HAL_RCC_I2C1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C1SMEN) == RESET) 2374 #define __HAL_RCC_I2C2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C2SMEN) == RESET) 2375 #if defined(I2C3) 2376 #define __HAL_RCC_I2C3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C3SMEN) == RESET) 2377 #endif /* I2C3 */ 2378 #if defined(CEC) 2379 #define __HAL_RCC_CEC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CECSMEN) == RESET) 2380 #endif /* CEC */ 2381 #if defined(UCPD1) 2382 #define __HAL_RCC_UCPD1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD1SMEN) == RESET) 2383 #endif /* UCPD1 */ 2384 #if defined(UCPD2) 2385 #define __HAL_RCC_UCPD2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD2SMEN) == RESET) 2386 #endif /* UCPD2 */ 2387 #if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) 2388 #define __HAL_RCC_USB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USBSMEN) == RESET) 2389 #endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ 2390 #if defined(FDCAN1) || defined(FDCAN2) 2391 #define __HAL_RCC_FDCAN_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_FDCANSMEN) == RESET) 2392 #endif /* FDCAN1 || FDCAN2 */ 2393 #define __HAL_RCC_DBGMCU_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DBGSMEN) == RESET) 2394 #define __HAL_RCC_PWR_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_PWRSMEN) == RESET) 2395 #if defined(DAC1) 2396 #define __HAL_RCC_DAC1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DAC1SMEN) == RESET) 2397 #endif /* DAC1 */ 2398 #if defined(LPTIM2) 2399 #define __HAL_RCC_LPTIM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM2SMEN) == RESET) 2400 #endif /* LPTIM2 */ 2401 #if defined(LPTIM1) 2402 #define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM1SMEN) == RESET) 2403 #endif /* LPTIM1 */ 2404 2405 /** 2406 * @} 2407 */ 2408 2409 /** @defgroup RCC_APB2_Clock_Sleep_Enabled_Disabled_Status APB2 Peripheral Clock Sleep Enabled or Disabled Status 2410 * @brief Check whether the APB2 peripheral clock during Low Power (Sleep) mode is enabled or not. 2411 * @note Peripheral clock gating in SLEEP mode can be used to further reduce 2412 * power consumption. 2413 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. 2414 * @note By default, all peripheral clocks are enabled during SLEEP mode. 2415 * @{ 2416 */ 2417 2418 #define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SYSCFGSMEN) != RESET) 2419 #define __HAL_RCC_TIM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM1SMEN) != RESET) 2420 #define __HAL_RCC_SPI1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SPI1SMEN) != RESET) 2421 #define __HAL_RCC_USART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_USART1SMEN) != RESET) 2422 #define __HAL_RCC_TIM14_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM14SMEN) != RESET) 2423 #if defined(TIM15) 2424 #define __HAL_RCC_TIM15_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM15SMEN) != RESET) 2425 #endif /* TIM15 */ 2426 #define __HAL_RCC_TIM16_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM16SMEN) != RESET) 2427 #define __HAL_RCC_TIM17_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM17SMEN) != RESET) 2428 #define __HAL_RCC_ADC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_ADCSMEN) != RESET) 2429 2430 2431 #define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SYSCFGSMEN) == RESET) 2432 #define __HAL_RCC_TIM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM1SMEN) == RESET) 2433 #define __HAL_RCC_SPI1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SPI1SMEN) == RESET) 2434 #define __HAL_RCC_USART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_USART1SMEN) == RESET) 2435 #define __HAL_RCC_TIM14_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM14SMEN) == RESET) 2436 #if defined(TIM15) 2437 #define __HAL_RCC_TIM15_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM15SMEN) == RESET) 2438 #endif /* TIM15 */ 2439 #define __HAL_RCC_TIM16_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM16SMEN) == RESET) 2440 #define __HAL_RCC_TIM17_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM17SMEN) == RESET) 2441 #define __HAL_RCC_ADC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_ADCSMEN) == RESET) 2442 2443 2444 /** 2445 * @} 2446 */ 2447 2448 /** @defgroup RCC_Backup_Domain_Reset RCC Backup Domain Reset 2449 * @{ 2450 */ 2451 2452 /** @brief Macros to force or release the Backup domain reset. 2453 * @note This function resets the RTC peripheral (including the backup registers) 2454 * and the RTC clock source selection in RCC_CSR register. 2455 * @note The BKPSRAM is not affected by this reset. 2456 * @retval None 2457 */ 2458 #define __HAL_RCC_BACKUPRESET_FORCE() SET_BIT(RCC->BDCR, RCC_BDCR_BDRST) 2459 2460 #define __HAL_RCC_BACKUPRESET_RELEASE() CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST) 2461 2462 /** 2463 * @} 2464 */ 2465 2466 /** @defgroup RCC_RTC_Clock_Configuration RCC RTC Clock Configuration 2467 * @{ 2468 */ 2469 2470 /** @brief Macros to enable or disable the RTC clock. 2471 * @note As the RTC is in the Backup domain and write access is denied to 2472 * this domain after reset, you have to enable write access using 2473 * HAL_PWR_EnableBkUpAccess() function before to configure the RTC 2474 * (to be done once after reset). 2475 * @note These macros must be used after the RTC clock source was selected. 2476 * @retval None 2477 */ 2478 #define __HAL_RCC_RTC_ENABLE() SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN) 2479 2480 #define __HAL_RCC_RTC_DISABLE() CLEAR_BIT(RCC->BDCR, RCC_BDCR_RTCEN) 2481 2482 /** 2483 * @} 2484 */ 2485 2486 /** @defgroup RCC_Clock_Configuration RCC Clock Configuration 2487 * @{ 2488 */ 2489 2490 /** @brief Macros to enable the Internal High Speed oscillator (HSI). 2491 * @note The HSI is stopped by hardware when entering STOP and STANDBY modes. 2492 * It is used (enabled by hardware) as system clock source after startup 2493 * from Reset, wakeup from STOP and STANDBY mode, or in case of failure 2494 * of the HSE used directly or indirectly as system clock (if the Clock 2495 * Security System CSS is enabled). 2496 * @note After enabling the HSI, the application software should wait on HSIRDY 2497 * flag to be set indicating that HSI clock is stable and can be used as 2498 * system clock source. 2499 * This parameter can be: ENABLE or DISABLE. 2500 * @retval None 2501 */ 2502 #define __HAL_RCC_HSI_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSION) 2503 2504 /** @brief Macros to disable the Internal High Speed oscillator (HSI). 2505 * @note HSI can not be stopped if it is used as system clock source. In this case, 2506 * you have to select another source of the system clock then stop the HSI. 2507 * @note When the HSI is stopped, HSIRDY flag goes low after 6 HSI oscillator 2508 * clock cycles. 2509 * @retval None 2510 */ 2511 #define __HAL_RCC_HSI_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSION) 2512 2513 /** @brief Macro to adjust the Internal High Speed oscillator (HSI) calibration value. 2514 * @note The calibration is used to compensate for the variations in voltage 2515 * and temperature that influence the frequency of the internal HSI RC. 2516 * @param __HSICALIBRATIONVALUE__ specifies the calibration trimming value 2517 * (default is RCC_HSICALIBRATION_DEFAULT). 2518 * This parameter must be a number between 0 and 127. 2519 * @retval None 2520 */ 2521 #define __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(__HSICALIBRATIONVALUE__) \ 2522 MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSITRIM, (uint32_t)(__HSICALIBRATIONVALUE__) << RCC_ICSCR_HSITRIM_Pos) 2523 2524 /** 2525 * @brief Macros to enable or disable the force of the Internal High Speed oscillator (HSI) 2526 * in STOP mode to be quickly available as kernel clock for USARTs and I2Cs. 2527 * @note Keeping the HSI ON in STOP mode allows to avoid slowing down the communication 2528 * speed because of the HSI startup time. 2529 * @note The enable of this function has not effect on the HSION bit. 2530 * This parameter can be: ENABLE or DISABLE. 2531 * @retval None 2532 */ 2533 #define __HAL_RCC_HSISTOP_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSIKERON) 2534 2535 #define __HAL_RCC_HSISTOP_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSIKERON) 2536 2537 /** @brief Macro to configure the HSISYS clock. 2538 * @param __HSIDIV__ specifies the HSI16 division factor. 2539 * This parameter can be one of the following values: 2540 * @arg @ref RCC_HSI_DIV1 HSI clock source is divided by 1 2541 * @arg @ref RCC_HSI_DIV2 HSI clock source is divided by 2 2542 * @arg @ref RCC_HSI_DIV4 HSI clock source is divided by 4 2543 * @arg @ref RCC_HSI_DIV8 HSI clock source is divided by 8 2544 * @arg @ref RCC_HSI_DIV16 HSI clock source is divided by 16 2545 * @arg @ref RCC_HSI_DIV32 HSI clock source is divided by 32 2546 * @arg @ref RCC_HSI_DIV64 HSI clock source is divided by 64 2547 * @arg @ref RCC_HSI_DIV128 HSI clock source is divided by 128 2548 */ 2549 #define __HAL_RCC_HSI_CONFIG(__HSIDIV__) \ 2550 MODIFY_REG(RCC->CR, RCC_CR_HSIDIV, (__HSIDIV__)) 2551 2552 /** @brief Macros to enable or disable the Internal Low Speed oscillator (LSI). 2553 * @note After enabling the LSI, the application software should wait on 2554 * LSIRDY flag to be set indicating that LSI clock is stable and can 2555 * be used to clock the IWDG and/or the RTC. 2556 * @note LSI can not be disabled if the IWDG is running. 2557 * @note When the LSI is stopped, LSIRDY flag goes low after 6 LSI oscillator 2558 * clock cycles. 2559 * @retval None 2560 */ 2561 #define __HAL_RCC_LSI_ENABLE() SET_BIT(RCC->CSR, RCC_CSR_LSION) 2562 2563 #define __HAL_RCC_LSI_DISABLE() CLEAR_BIT(RCC->CSR, RCC_CSR_LSION) 2564 2565 /** 2566 * @brief Macro to configure the External High Speed oscillator (HSE). 2567 * @note Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not 2568 * supported by this macro. User should request a transition to HSE Off 2569 * first and then HSE On or HSE Bypass. 2570 * @note After enabling the HSE (RCC_HSE_ON or RCC_HSE_Bypass), the application 2571 * software should wait on HSERDY flag to be set indicating that HSE clock 2572 * is stable and can be used to clock the PLL and/or system clock. 2573 * @note HSE state can not be changed if it is used directly or through the 2574 * PLL as system clock. In this case, you have to select another source 2575 * of the system clock then change the HSE state (ex. disable it). 2576 * @note The HSE is stopped by hardware when entering STOP and STANDBY modes. 2577 * @note This function reset the CSSON bit, so if the clock security system(CSS) 2578 * was previously enabled you have to enable it again after calling this 2579 * function. 2580 * @param __STATE__ specifies the new state of the HSE. 2581 * This parameter can be one of the following values: 2582 * @arg @ref RCC_HSE_OFF Turn OFF the HSE oscillator, HSERDY flag goes low after 2583 * 6 HSE oscillator clock cycles. 2584 * @arg @ref RCC_HSE_ON Turn ON the HSE oscillator. 2585 * @arg @ref RCC_HSE_BYPASS HSE oscillator bypassed with external clock. 2586 * @retval None 2587 */ 2588 #define __HAL_RCC_HSE_CONFIG(__STATE__) do { \ 2589 if((__STATE__) == RCC_HSE_ON) \ 2590 { \ 2591 SET_BIT(RCC->CR, RCC_CR_HSEON); \ 2592 } \ 2593 else if((__STATE__) == RCC_HSE_BYPASS) \ 2594 { \ 2595 SET_BIT(RCC->CR, RCC_CR_HSEBYP); \ 2596 SET_BIT(RCC->CR, RCC_CR_HSEON); \ 2597 } \ 2598 else \ 2599 { \ 2600 CLEAR_BIT(RCC->CR, RCC_CR_HSEON); \ 2601 CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); \ 2602 } \ 2603 } while(0U) 2604 2605 /** 2606 * @brief Macro to configure the External Low Speed oscillator (LSE). 2607 * @note Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not 2608 * supported by this macro. User should request a transition to LSE Off 2609 * first and then LSE On or LSE Bypass. 2610 * @note As the LSE is in the Backup domain and write access is denied to 2611 * this domain after reset, you have to enable write access using 2612 * HAL_PWR_EnableBkUpAccess() function before to configure the LSE 2613 * (to be done once after reset). 2614 * @note After enabling the LSE (RCC_LSE_ON or RCC_LSE_BYPASS), the application 2615 * software should wait on LSERDY flag to be set indicating that LSE clock 2616 * is stable and can be used to clock the RTC. 2617 * @param __STATE__ specifies the new state of the LSE. 2618 * This parameter can be one of the following values: 2619 * @arg @ref RCC_LSE_OFF Turn OFF the LSE oscillator, LSERDY flag goes low after 2620 * 6 LSE oscillator clock cycles. 2621 * @arg @ref RCC_LSE_ON Turn ON the LSE oscillator. 2622 * @arg @ref RCC_LSE_BYPASS LSE oscillator bypassed with external clock. 2623 * @retval None 2624 */ 2625 #define __HAL_RCC_LSE_CONFIG(__STATE__) do { \ 2626 if((__STATE__) == RCC_LSE_ON) \ 2627 { \ 2628 SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); \ 2629 } \ 2630 else if((__STATE__) == RCC_LSE_BYPASS) \ 2631 { \ 2632 SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \ 2633 SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); \ 2634 } \ 2635 else \ 2636 { \ 2637 CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); \ 2638 CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \ 2639 } \ 2640 } while(0U) 2641 2642 #if defined(RCC_HSI48_SUPPORT) 2643 /** @brief Macros to enable or disable the Internal High Speed 48MHz oscillator (HSI48). 2644 * @note The HSI48 is stopped by hardware when entering STOP and STANDBY modes. 2645 * @note After enabling the HSI48, the application software should wait on HSI48RDY 2646 * flag to be set indicating that HSI48 clock is stable. 2647 * This parameter can be: ENABLE or DISABLE. 2648 * @retval None 2649 */ 2650 #define __HAL_RCC_HSI48_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSI48ON) 2651 2652 #define __HAL_RCC_HSI48_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSI48ON) 2653 2654 #endif /* RCC_HSI48_SUPPORT */ 2655 2656 /** 2657 * @} 2658 */ 2659 2660 /** @addtogroup RCC_RTC_Clock_Configuration 2661 * @{ 2662 */ 2663 2664 /** @brief Macros to configure the RTC clock (RTCCLK). 2665 * @note As the RTC clock configuration bits are in the Backup domain and write 2666 * access is denied to this domain after reset, you have to enable write 2667 * access using the Power Backup Access macro before to configure 2668 * the RTC clock source (to be done once after reset). 2669 * @note Once the RTC clock is configured it cannot be changed unless the 2670 * Backup domain is reset using __HAL_RCC_BACKUPRESET_FORCE() macro, or by 2671 * a Power On Reset (POR). 2672 * 2673 * @param __RTC_CLKSOURCE__ specifies the RTC clock source. 2674 * This parameter can be one of the following values: 2675 * @arg @ref RCC_RTCCLKSOURCE_NONE No clock selected as RTC clock. 2676 * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as RTC clock. 2677 * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as RTC clock. 2678 * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV32 HSE clock divided by 32 selected 2679 * 2680 * @note If the LSE or LSI is used as RTC clock source, the RTC continues to 2681 * work in STOP and STANDBY modes, and can be used as wakeup source. 2682 * However, when the HSE clock is used as RTC clock source, the RTC 2683 * cannot be used in STOP and STANDBY modes. 2684 * @note The maximum input clock frequency for RTC is 1MHz (when using HSE as 2685 * RTC clock source). 2686 * @retval None 2687 */ 2688 #define __HAL_RCC_RTC_CONFIG(__RTC_CLKSOURCE__) \ 2689 MODIFY_REG( RCC->BDCR, RCC_BDCR_RTCSEL, (__RTC_CLKSOURCE__)) 2690 2691 2692 /** @brief Macro to get the RTC clock source. 2693 * @retval The returned value can be one of the following: 2694 * @arg @ref RCC_RTCCLKSOURCE_NONE No clock selected as RTC clock. 2695 * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as RTC clock. 2696 * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as RTC clock. 2697 * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV32 HSE clock divided by 32 selected 2698 */ 2699 #define __HAL_RCC_GET_RTC_SOURCE() ((uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL))) 2700 2701 /** @brief Macros to enable or disable the main PLL. 2702 * @note After enabling the main PLL, the application software should wait on 2703 * PLLRDY flag to be set indicating that PLL clock is stable and can 2704 * be used as system clock source. 2705 * @note The main PLL can not be disabled if it is used as system clock source 2706 * @note The main PLL is disabled by hardware when entering STOP and STANDBY modes. 2707 * @retval None 2708 */ 2709 2710 /** 2711 * @} 2712 */ 2713 2714 /** @addtogroup RCC_Clock_Configuration 2715 * @{ 2716 */ 2717 2718 #define __HAL_RCC_PLL_ENABLE() SET_BIT(RCC->CR, RCC_CR_PLLON) 2719 2720 #define __HAL_RCC_PLL_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_PLLON) 2721 2722 /** @brief Macro to configure the PLL clock source. 2723 * @note This function must be used only when the main PLL is disabled. 2724 * @param __PLLSOURCE__ specifies the PLL entry clock source. 2725 * This parameter can be one of the following values: 2726 * @arg @ref RCC_PLLSOURCE_NONE No clock selected as PLL clock entry 2727 * @arg @ref RCC_PLLSOURCE_HSI HSI oscillator clock selected as PLL clock entry 2728 * @arg @ref RCC_PLLSOURCE_HSE HSE oscillator clock selected as PLL clock entry 2729 * @retval None 2730 * 2731 */ 2732 #define __HAL_RCC_PLL_PLLSOURCE_CONFIG(__PLLSOURCE__) \ 2733 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, (__PLLSOURCE__)) 2734 2735 /** @brief Macro to configure the PLL multiplication factor. 2736 * @note This function must be used only when the main PLL is disabled. 2737 * @param __PLLM__ specifies the division factor for PLL VCO input clock 2738 * This parameter must be a value of RCC_PLLM_Clock_Divider. 2739 * @note You have to set the PLLM parameter correctly to ensure that the VCO input 2740 * frequency ranges from 4 to 16 MHz. It is recommended to select a frequency 2741 * of 16 MHz to limit PLL jitter. 2742 * @retval None 2743 * 2744 */ 2745 #define __HAL_RCC_PLL_PLLM_CONFIG(__PLLM__) \ 2746 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLM, (__PLLM__)) 2747 2748 /** 2749 * @brief Macro to configure the main PLL clock source, multiplication and division factors. 2750 * @note This function must be used only when the main PLL is disabled. 2751 * 2752 * @param __PLLSOURCE__ specifies the PLL entry clock source. 2753 * This parameter can be one of the following values: 2754 * @arg @ref RCC_PLLSOURCE_NONE No clock selected as PLL clock entry 2755 * @arg @ref RCC_PLLSOURCE_HSI HSI oscillator clock selected as PLL clock entry 2756 * @arg @ref RCC_PLLSOURCE_HSE HSE oscillator clock selected as PLL clock entry 2757 * 2758 * @param __PLLM__ specifies the division factor for PLL VCO input clock. 2759 * This parameter must be a value of RCC_PLLM_Clock_Divider. 2760 * @note You have to set the PLLM parameter correctly to ensure that the VCO input 2761 * frequency ranges from 4 to 16 MHz. It is recommended to select a frequency 2762 * of 16 MHz to limit PLL jitter. 2763 * 2764 * @param __PLLN__ specifies the multiplication factor for PLL VCO output clock. 2765 * This parameter must be a number between 8 and 86. 2766 * @note You have to set the PLLN parameter correctly to ensure that the VCO 2767 * output frequency is between 64 and 344 MHz. 2768 * 2769 * @param __PLLP__ specifies the division factor for ADC clock. 2770 * This parameter must be a value of @ref RCC_PLLP_Clock_Divider. 2771 * 2772 * @param __PLLQ__ specifies the division factor for RBG & HS Timers clocks.(1) 2773 * This parameter must be a value of @ref RCC_PLLQ_Clock_Divider 2774 * @note (1)__PLLQ__ parameter availability depends on devices 2775 * @note If the USB FS is used in your application, you have to set the 2776 * PLLQ parameter correctly to have 48 MHz clock for the USB. However, 2777 * the RNG needs a frequency lower than or equal to 48 MHz to work 2778 * correctly. 2779 * 2780 * @param __PLLR__ specifies the division factor for the main system clock. 2781 * This parameter must be a value of RCC_PLLR_Clock_Divider 2782 * @note You have to set the PLL parameters correctly to not exceed 64MHZ. 2783 * @retval None 2784 */ 2785 #if defined(RCC_PLLQ_SUPPORT) 2786 #define __HAL_RCC_PLL_CONFIG(__PLLSOURCE__, __PLLM__, __PLLN__, __PLLP__, __PLLQ__,__PLLR__ ) \ 2787 MODIFY_REG(RCC->PLLCFGR, \ 2788 (RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | \ 2789 RCC_PLLCFGR_PLLP | RCC_PLLCFGR_PLLQ | RCC_PLLCFGR_PLLR), \ 2790 ((uint32_t) (__PLLSOURCE__) | \ 2791 (uint32_t) (__PLLM__) | \ 2792 (uint32_t) ((__PLLN__) << RCC_PLLCFGR_PLLN_Pos) | \ 2793 (uint32_t) (__PLLP__) | \ 2794 (uint32_t) (__PLLQ__) | \ 2795 (uint32_t) (__PLLR__))) 2796 #else 2797 #define __HAL_RCC_PLL_CONFIG(__PLLSOURCE__, __PLLM__, __PLLN__, __PLLP__, __PLLR__ ) \ 2798 MODIFY_REG(RCC->PLLCFGR, \ 2799 (RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | \ 2800 RCC_PLLCFGR_PLLP | RCC_PLLCFGR_PLLR), \ 2801 ((uint32_t) (__PLLSOURCE__) | \ 2802 (uint32_t) (__PLLM__) | \ 2803 (uint32_t) ((__PLLN__) << RCC_PLLCFGR_PLLN_Pos) | \ 2804 (uint32_t) (__PLLP__) | \ 2805 (uint32_t) (__PLLR__))) 2806 #endif /* RCC_PLLQ_SUPPORT */ 2807 /** @brief Macro to get the oscillator used as PLL clock source. 2808 * @retval The oscillator used as PLL clock source. The returned value can be one 2809 * of the following: 2810 * @arg @ref RCC_PLLSOURCE_NONE No oscillator is used as PLL clock source. 2811 * @arg @ref RCC_PLLSOURCE_HSI HSI oscillator is used as PLL clock source. 2812 * @arg @ref RCC_PLLSOURCE_HSE HSE oscillator is used as PLL clock source. 2813 */ 2814 #define __HAL_RCC_GET_PLL_OSCSOURCE() ((uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC)) 2815 2816 /** 2817 * @brief Enable each clock output (RCC_PLLRCLK, RCC_PLLQCLK(*), RCC_PLLPCLK) 2818 * @note Enabling clock outputs RCC_PLLPCLK and RCC_PLLQCLK(*) can be done at anytime 2819 * without the need to stop the PLL in order to save power. But RCC_PLLRCLK cannot 2820 * be stopped if used as System Clock. 2821 * @note (*) RCC_PLLQCLK availability depends on devices 2822 * @param __PLLCLOCKOUT__ specifies the PLL clock to be output. 2823 * This parameter can be one or a combination of the following values: 2824 * @arg @ref RCC_PLLPCLK This clock is used to generate the clock for the ADC. 2825 * @if defined(STM32G081xx) 2826 * @arg @ref RCC_PLLQCLK This Clock is used to generate the clock for the High Speed Timers, 2827 * and the random analog generator (<=48 MHz). 2828 * @endif 2829 * @arg @ref RCC_PLLRCLK This Clock is used to generate the high speed system clock (up to 64MHz) 2830 * @retval None 2831 */ 2832 #define __HAL_RCC_PLLCLKOUT_ENABLE(__PLLCLOCKOUT__) SET_BIT(RCC->PLLCFGR, (__PLLCLOCKOUT__)) 2833 2834 /** 2835 * @brief Disable each clock output (RCC_PLLRCLK, RCC_PLLQCLK(*), RCC_PLLPCLK) 2836 * @note Disabling clock outputs RCC_PLLPCLK and RCC_PLLQCLK(*) can be done at anytime 2837 * without the need to stop the PLL in order to save power. But RCC_PLLRCLK cannot 2838 * be stopped if used as System Clock. 2839 * @note (*) RCC_PLLQCLK availability depends on devices 2840 * @param __PLLCLOCKOUT__ specifies the PLL clock to be output. 2841 * This parameter can be one or a combination of the following values: 2842 * @arg @ref RCC_PLLPCLK This clock may be used to generate the clock for the ADC, I2S1. 2843 * @if defined(STM32G081xx) 2844 * @arg @ref RCC_PLLQCLK This Clock may be used to generate the clock for the High Speed Timers, 2845 * and RNG (<=48 MHz). 2846 * @endif 2847 * @arg @ref RCC_PLLRCLK This Clock is used to generate the high speed system clock (up to 64MHz) 2848 * @retval None 2849 */ 2850 #define __HAL_RCC_PLLCLKOUT_DISABLE(__PLLCLOCKOUT__) CLEAR_BIT(RCC->PLLCFGR, (__PLLCLOCKOUT__)) 2851 2852 /** 2853 * @brief Get clock output enable status (RCC_PLLRCLK, RCC_PLLQCLK(*), RCC_PLLPCLK) 2854 * @param __PLLCLOCKOUT__ specifies the output PLL clock to be checked. 2855 * This parameter can be one of the following values: 2856 * @arg RCC_PLLPCLK This clock may be used to generate the clock for ADC, I2S1. 2857 * @if defined(STM32G081xx) 2858 * @arg RCC_PLLQCLK This Clock may be used to generate the clock for the HS Timers, 2859 * the RNG (<=48 MHz). 2860 * @endif 2861 * @arg @ref RCC_PLLRCLK This Clock is used to generate the high speed system clock (up to 64MHz) 2862 * @retval SET / RESET 2863 * @note (*) RCC_PLLQCLK availability depends on devices 2864 */ 2865 #define __HAL_RCC_GET_PLLCLKOUT_CONFIG(__PLLCLOCKOUT__) READ_BIT(RCC->PLLCFGR, (__PLLCLOCKOUT__)) 2866 2867 /** 2868 * @brief Macro to configure the system clock source. 2869 * @param __SYSCLKSOURCE__ specifies the system clock source. 2870 * This parameter can be one of the following values: 2871 * @arg @ref RCC_SYSCLKSOURCE_HSI HSI oscillator is used as system clock source. 2872 * @arg @ref RCC_SYSCLKSOURCE_HSE HSE oscillator is used as system clock source. 2873 * @arg @ref RCC_SYSCLKSOURCE_PLLCLK PLL output is used as system clock source. 2874 * @arg @ref RCC_SYSCLKSOURCE_LSI LSI oscillator is used as system clock source. 2875 * @arg @ref RCC_SYSCLKSOURCE_LSE LSE oscillator is used as system clock source. 2876 * @retval None 2877 */ 2878 #define __HAL_RCC_SYSCLK_CONFIG(__SYSCLKSOURCE__) \ 2879 MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, (__SYSCLKSOURCE__)) 2880 2881 /** @brief Macro to get the clock source used as system clock. 2882 * @retval The clock source used as system clock. The returned value can be one 2883 * of the following: 2884 * @arg @ref RCC_SYSCLKSOURCE_STATUS_HSI HSI used as system clock. 2885 * @arg @ref RCC_SYSCLKSOURCE_STATUS_HSE HSE used as system clock. 2886 * @arg @ref RCC_SYSCLKSOURCE_STATUS_PLLCLK PLL used as system clock. 2887 * @arg @ref RCC_SYSCLKSOURCE_STATUS_LSI LSI used as system clock source. 2888 * @arg @ref RCC_SYSCLKSOURCE_STATUS_LSE LSE used as system clock source. 2889 */ 2890 #define __HAL_RCC_GET_SYSCLK_SOURCE() (RCC->CFGR & RCC_CFGR_SWS) 2891 2892 /** 2893 * @brief Macro to configure the External Low Speed oscillator (LSE) drive capability. 2894 * @note As the LSE is in the Backup domain and write access is denied to 2895 * this domain after reset, you have to enable write access using 2896 * HAL_PWR_EnableBkUpAccess() function before to configure the LSE 2897 * (to be done once after reset). 2898 * @param __LSEDRIVE__ specifies the new state of the LSE drive capability. 2899 * This parameter can be one of the following values: 2900 * @arg @ref RCC_LSEDRIVE_LOW LSE oscillator low drive capability. 2901 * @arg @ref RCC_LSEDRIVE_MEDIUMLOW LSE oscillator medium low drive capability. 2902 * @arg @ref RCC_LSEDRIVE_MEDIUMHIGH LSE oscillator medium high drive capability. 2903 * @arg @ref RCC_LSEDRIVE_HIGH LSE oscillator high drive capability. 2904 * @retval None 2905 */ 2906 #define __HAL_RCC_LSEDRIVE_CONFIG(__LSEDRIVE__) \ 2907 MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, (uint32_t)(__LSEDRIVE__)) 2908 2909 /** @brief Macro to configure the Microcontroller output clock. 2910 * @param __MCOCLKSOURCE__ specifies the MCO clock source. 2911 * This parameter can be one of the following values: 2912 * @arg @ref RCC_MCO1SOURCE_NOCLOCK MCO output disabled 2913 * @arg @ref RCC_MCO1SOURCE_SYSCLK System clock selected as MCO source 2914 * @arg @ref RCC_MCO1SOURCE_HSI HSI clock selected as MCO source 2915 * @arg @ref RCC_MCO1SOURCE_HSE HSE clock selected as MCO source 2916 * @arg @ref RCC_MCO1SOURCE_PLLCLK Main PLL clock selected as MCO source 2917 * @arg @ref RCC_MCO1SOURCE_LSI LSI clock selected as MCO source 2918 * @arg @ref RCC_MCO1SOURCE_LSE LSE clock selected as MCO source 2919 * @arg @ref RCC_MCO1SOURCE_PLLPCLK PLLP output clock selected as MCO source 2920 * @arg @ref RCC_MCO1SOURCE_PLLQCLK PLLQ output clock selected as MCO source 2921 * @arg @ref RCC_MCO1SOURCE_RTCCLK RTC clock selected as MCO source 2922 * @arg @ref RCC_MCO1SOURCE_RTC_WKUP RTC_WKUP clock selected as MCO source 2923 @if STM32G0C1xx 2924 * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO source for devices with HSI48 2925 @endif 2926 * @param __MCODIV__ specifies the MCO clock prescaler. 2927 * This parameter can be one of the following values: 2928 * @arg @ref RCC_MCODIV_1 MCO clock source is divided by 1 2929 * @arg @ref RCC_MCODIV_2 MCO clock source is divided by 2 2930 * @arg @ref RCC_MCODIV_4 MCO clock source is divided by 4 2931 * @arg @ref RCC_MCODIV_8 MCO clock source is divided by 8 2932 * @arg @ref RCC_MCODIV_16 MCO clock source is divided by 16 2933 * @arg @ref RCC_MCODIV_32 MCO clock source is divided by 32 2934 * @arg @ref RCC_MCODIV_64 MCO clock source is divided by 64 2935 * @arg @ref RCC_MCODIV_128 MCO clock source is divided by 128 2936 @if STM32G0C1xx 2937 * @arg @ref RCC_MCODIV_256 MCO clock source is divided by 256 2938 * @arg @ref RCC_MCODIV_512 MCO clock source is divided by 512 2939 * @arg @ref RCC_MCODIV_1024 MCO clock source is divided by 1024 2940 @endif 2941 */ 2942 #define __HAL_RCC_MCO1_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \ 2943 MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCOSEL | RCC_CFGR_MCOPRE), ((__MCOCLKSOURCE__) | (__MCODIV__))) 2944 2945 #if defined(RCC_MCO2_SUPPORT) 2946 /** @brief Macro to configure the Microcontroller output clock 2. 2947 * @param __MCOCLKSOURCE__ specifies the MCO2 clock source. 2948 * This parameter can be one of the following values: 2949 * @arg @ref RCC_MCO2SOURCE_NOCLOCK MCO2 output disabled 2950 * @arg @ref RCC_MCO2SOURCE_SYSCLK System clock selected as MCO source 2951 * @arg @ref RCC_MCO2SOURCE_HSI HSI clock selected as MCO2 source 2952 * @arg @ref RCC_MCO2SOURCE_HSE HSE clock selected as MCO2 source 2953 * @arg @ref RCC_MCO2SOURCE_PLLCLK Main PLL clock selected as MCO2 source 2954 * @arg @ref RCC_MCO2SOURCE_LSI LSI clock selected as MCO2 source 2955 * @arg @ref RCC_MCO2SOURCE_LSE LSE clock selected as MCO2 source 2956 * @arg @ref RCC_MCO2SOURCE_PLLPCLK PLLP output clock selected as MCO2 source 2957 * @arg @ref RCC_MCO2SOURCE_PLLQCLK PLLQ output clock selected as MCO2 source 2958 * @arg @ref RCC_MCO2SOURCE_RTCCLK RTC clock selected as MCO2 source 2959 * @arg @ref RCC_MCO2SOURCE_RTC_WKUP RTC_WKUP clock selected as MCO2 source 2960 @if STM32G0C1xx 2961 * @arg @ref RCC_MCO2SOURCE_HSI48 HSI48 clock selected as MCO2 source for devices with HSI48 2962 @endif 2963 * @param __MCODIV__ specifies the MCO clock prescaler. 2964 * This parameter can be one of the following values: 2965 * @arg @ref RCC_MCO2DIV_1 MCO2 clock source is divided by 1 2966 * @arg @ref RCC_MCO2DIV_2 MCO2 clock source is divided by 2 2967 * @arg @ref RCC_MCO2DIV_4 MCO2 clock source is divided by 4 2968 * @arg @ref RCC_MCO2DIV_8 MCO2 clock source is divided by 8 2969 * @arg @ref RCC_MCO2DIV_16 MCO2 clock source is divided by 16 2970 * @arg @ref RCC_MCO2DIV_32 MCO2 clock source is divided by 32 2971 * @arg @ref RCC_MCO2DIV_64 MCO2 clock source is divided by 64 2972 * @arg @ref RCC_MCO2DIV_128 MCO2 clock source is divided by 128 2973 * @arg @ref RCC_MCO2DIV_256 MCO2 clock source is divided by 256 2974 * @arg @ref RCC_MCO2DIV_512 MCO2 clock source is divided by 512 2975 * @arg @ref RCC_MCO2DIV_1024 MCO2 clock source is divided by 1024 2976 */ 2977 #define __HAL_RCC_MCO2_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \ 2978 MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO2SEL | RCC_CFGR_MCO2PRE), ((__MCOCLKSOURCE__) | (__MCODIV__))) 2979 #endif /* RCC_MCO2_SUPPORT */ 2980 2981 /** 2982 * @} 2983 */ 2984 2985 /** @defgroup RCC_Flags_Interrupts_Management Flags Interrupts Management 2986 * @brief macros to manage the specified RCC Flags and interrupts. 2987 * @{ 2988 */ 2989 2990 /** @brief Enable RCC interrupt. 2991 * @param __INTERRUPT__ specifies the RCC interrupt sources to be enabled. 2992 * This parameter can be any combination of the following values: 2993 * @arg @ref RCC_IT_LSIRDY LSI ready interrupt 2994 * @arg @ref RCC_IT_LSERDY LSE ready interrupt 2995 * @arg @ref RCC_IT_HSIRDY HSI ready interrupt 2996 * @arg @ref RCC_IT_HSERDY HSE ready interrupt 2997 * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt 2998 @if STM32G0C1xx 2999 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 3000 @endif 3001 * @retval None 3002 */ 3003 #define __HAL_RCC_ENABLE_IT(__INTERRUPT__) SET_BIT(RCC->CIER, (__INTERRUPT__)) 3004 3005 /** @brief Disable RCC interrupt. 3006 * @param __INTERRUPT__ specifies the RCC interrupt sources to be disabled. 3007 * This parameter can be any combination of the following values: 3008 * @arg @ref RCC_IT_LSIRDY LSI ready interrupt 3009 * @arg @ref RCC_IT_LSERDY LSE ready interrupt 3010 * @arg @ref RCC_IT_HSIRDY HSI ready interrupt 3011 * @arg @ref RCC_IT_HSERDY HSE ready interrupt 3012 * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt 3013 @if STM32G0C1xx 3014 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 3015 @endif 3016 * @retval None 3017 */ 3018 #define __HAL_RCC_DISABLE_IT(__INTERRUPT__) CLEAR_BIT(RCC->CIER, (__INTERRUPT__)) 3019 3020 /** @brief Clear RCC interrupt pending bits. 3021 * @param __INTERRUPT__ specifies the interrupt pending bit to clear. 3022 * This parameter can be any combination of the following values: 3023 * @arg @ref RCC_IT_LSIRDY LSI ready interrupt 3024 * @arg @ref RCC_IT_LSERDY LSE ready interrupt 3025 * @arg @ref RCC_IT_HSIRDY HSI ready interrupt 3026 * @arg @ref RCC_IT_HSERDY HSE ready interrupt 3027 * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt 3028 * @arg @ref RCC_IT_CSS HSE Clock security system interrupt 3029 * @arg @ref RCC_IT_LSECSS LSE Clock security system interrupt 3030 @if STM32G0C1xx 3031 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 3032 @endif 3033 * @retval None 3034 */ 3035 #define __HAL_RCC_CLEAR_IT(__INTERRUPT__) (RCC->CICR = (__INTERRUPT__)) 3036 3037 /** @brief Check whether the RCC interrupt has occurred or not. 3038 * @param __INTERRUPT__ specifies the RCC interrupt source to check. 3039 * This parameter can be one of the following values: 3040 * @arg @ref RCC_IT_LSIRDY LSI ready interrupt 3041 * @arg @ref RCC_IT_LSERDY LSE ready interrupt 3042 * @arg @ref RCC_IT_HSIRDY HSI ready interrupt 3043 * @arg @ref RCC_IT_HSERDY HSE ready interrupt 3044 * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt 3045 * @arg @ref RCC_IT_CSS HSE Clock security system interrupt 3046 * @arg @ref RCC_IT_LSECSS LSE Clock security system interrupt 3047 @if STM32G0C1xx 3048 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 3049 @endif 3050 * @retval The new state of __INTERRUPT__ (TRUE or FALSE). 3051 */ 3052 #define __HAL_RCC_GET_IT(__INTERRUPT__) ((RCC->CIFR & (__INTERRUPT__)) == (__INTERRUPT__)) 3053 3054 /** @brief Set RMVF bit to clear the reset flags. 3055 * The reset flags are: RCC_FLAG_OBLRST, RCC_FLAG_PINRST, RCC_FLAG_PWRRST, 3056 * RCC_FLAG_SFTRST, RCC_FLAG_IWDGRST, RCC_FLAG_WWDGRST and RCC_FLAG_LPWRRST. 3057 * @retval None 3058 */ 3059 #define __HAL_RCC_CLEAR_RESET_FLAGS() (RCC->CSR |= RCC_CSR_RMVF) 3060 3061 /** @brief Check whether the selected RCC flag is set or not. 3062 * @param __FLAG__ specifies the flag to check. 3063 * This parameter can be one of the following values: 3064 * @arg @ref RCC_FLAG_HSIRDY HSI oscillator clock ready 3065 * @arg @ref RCC_FLAG_HSERDY HSE oscillator clock ready 3066 * @arg @ref RCC_FLAG_PLLRDY Main PLL clock ready 3067 * @arg @ref RCC_FLAG_LSERDY LSE oscillator clock ready 3068 * @arg @ref RCC_FLAG_LSECSSD Clock security system failure on LSE oscillator detection 3069 * @arg @ref RCC_FLAG_LSIRDY LSI oscillator clock ready 3070 @if STM32G0C1xx 3071 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 3072 @endif 3073 * @arg @ref RCC_FLAG_PWRRST BOR or POR/PDR reset 3074 * @arg @ref RCC_FLAG_OBLRST OBLRST reset 3075 * @arg @ref RCC_FLAG_PINRST Pin reset 3076 * @arg @ref RCC_FLAG_SFTRST Software reset 3077 * @arg @ref RCC_FLAG_IWDGRST Independent Watchdog reset 3078 * @arg @ref RCC_FLAG_WWDGRST Window Watchdog reset 3079 * @arg @ref RCC_FLAG_LPWRRST Low Power reset 3080 * @retval The new state of __FLAG__ (TRUE or FALSE). 3081 */ 3082 #if defined(RCC_HSI48_SUPPORT) 3083 #define __HAL_RCC_GET_FLAG(__FLAG__) \ 3084 (((((((__FLAG__) >> 5U) == CR_REG_INDEX) ? RCC->CR : \ 3085 ((((__FLAG__) >> 5U) == CRRCR_REG_INDEX) ? RCC->CRRCR : \ 3086 ((((__FLAG__) >> 5U) == BDCR_REG_INDEX) ? RCC->BDCR : \ 3087 ((((__FLAG__) >> 5U) == CSR_REG_INDEX) ? RCC->CSR : RCC->CIFR)))) & \ 3088 (1U << ((__FLAG__) & RCC_FLAG_MASK))) != RESET) ? 1U : 0U) 3089 #else 3090 #define __HAL_RCC_GET_FLAG(__FLAG__) \ 3091 (((((((__FLAG__) >> 5U) == CR_REG_INDEX) ? RCC->CR : \ 3092 ((((__FLAG__) >> 5U) == BDCR_REG_INDEX) ? RCC->BDCR : \ 3093 ((((__FLAG__) >> 5U) == CSR_REG_INDEX) ? RCC->CSR : RCC->CIFR))) & \ 3094 (1U << ((__FLAG__) & RCC_FLAG_MASK))) != RESET) ? 1U : 0U) 3095 #endif /* RCC_HSI48_SUPPORT */ 3096 3097 /** 3098 * @} 3099 */ 3100 3101 /** 3102 * @} 3103 */ 3104 3105 /* Include RCC HAL Extended module */ 3106 #include "stm32g0xx_hal_rcc_ex.h" 3107 3108 /* Exported functions --------------------------------------------------------*/ 3109 /** @addtogroup RCC_Exported_Functions 3110 * @{ 3111 */ 3112 3113 3114 /** @addtogroup RCC_Exported_Functions_Group1 3115 * @{ 3116 */ 3117 3118 /* Initialization and de-initialization functions ******************************/ 3119 HAL_StatusTypeDef HAL_RCC_DeInit(void); 3120 HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct); 3121 HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency); 3122 3123 /** 3124 * @} 3125 */ 3126 3127 /** @addtogroup RCC_Exported_Functions_Group2 3128 * @{ 3129 */ 3130 3131 /* Peripheral Control functions ************************************************/ 3132 void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv); 3133 void HAL_RCC_EnableCSS(void); 3134 void HAL_RCC_EnableLSECSS(void); 3135 void HAL_RCC_DisableLSECSS(void); 3136 uint32_t HAL_RCC_GetSysClockFreq(void); 3137 uint32_t HAL_RCC_GetHCLKFreq(void); 3138 uint32_t HAL_RCC_GetPCLK1Freq(void); 3139 void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct); 3140 void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency); 3141 uint32_t HAL_RCC_GetResetSource(void); 3142 /* LSE & HSE CSS NMI IRQ handler */ 3143 void HAL_RCC_NMI_IRQHandler(void); 3144 /* User Callbacks in non blocking mode (IT mode) */ 3145 void HAL_RCC_CSSCallback(void); 3146 void HAL_RCC_LSECSSCallback(void); 3147 3148 /** 3149 * @} 3150 */ 3151 3152 /** 3153 * @} 3154 */ 3155 3156 /** 3157 * @} 3158 */ 3159 3160 /** 3161 * @} 3162 */ 3163 3164 #ifdef __cplusplus 3165 } 3166 #endif 3167 3168 #endif /* STM32G0xx_HAL_RCC_H */ 3169 3170