You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

2022 lines
108 KiB

  1. /**
  2. ******************************************************************************
  3. * @file stm32l0xx_hal_rcc_ex.h
  4. * @author MCD Application Team
  5. * @brief Header file of RCC HAL Extension module.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * <h2><center>&copy; Copyright(c) 2016 STMicroelectronics.
  10. * All rights reserved.</center></h2>
  11. *
  12. * This software component is licensed by ST under BSD 3-Clause license,
  13. * the "License"; You may not use this file except in compliance with the
  14. * License. You may obtain a copy of the License at:
  15. * opensource.org/licenses/BSD-3-Clause
  16. *
  17. ******************************************************************************
  18. */
  19. /* Define to prevent recursive inclusion -------------------------------------*/
  20. #ifndef __STM32L0xx_HAL_RCC_EX_H
  21. #define __STM32L0xx_HAL_RCC_EX_H
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. /* Includes ------------------------------------------------------------------*/
  26. #include "stm32l0xx_hal_def.h"
  27. /** @addtogroup STM32L0xx_HAL_Driver
  28. * @{
  29. */
  30. /** @addtogroup RCCEx
  31. * @{
  32. */
  33. /** @addtogroup RCCEx_Private_Constants
  34. * @{
  35. */
  36. #if defined(CRS)
  37. /* CRS IT Error Mask */
  38. #define RCC_CRS_IT_ERROR_MASK ((uint32_t)(RCC_CRS_IT_TRIMOVF | RCC_CRS_IT_SYNCERR | RCC_CRS_IT_SYNCMISS))
  39. /* CRS Flag Error Mask */
  40. #define RCC_CRS_FLAG_ERROR_MASK ((uint32_t)(RCC_CRS_FLAG_TRIMOVF | RCC_CRS_FLAG_SYNCERR | RCC_CRS_FLAG_SYNCMISS))
  41. #endif /* CRS */
  42. /**
  43. * @}
  44. */
  45. /** @addtogroup RCCEx_Private_Macros
  46. * @{
  47. */
  48. #if defined (STM32L052xx) || defined(STM32L062xx)
  49. #define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) <= (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \
  50. RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_RTC | \
  51. RCC_PERIPHCLK_USB | RCC_PERIPHCLK_LPTIM1))
  52. #elif defined (STM32L053xx) || defined(STM32L063xx)
  53. #define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) <= (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \
  54. RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_RTC | \
  55. RCC_PERIPHCLK_USB | RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LCD))
  56. #elif defined (STM32L072xx) || defined(STM32L082xx)
  57. #define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) <= (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \
  58. RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_RTC | \
  59. RCC_PERIPHCLK_USB | RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_I2C3 ))
  60. #elif defined (STM32L073xx) || defined(STM32L083xx)
  61. #define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) <= (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \
  62. RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_RTC | \
  63. RCC_PERIPHCLK_USB | RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_I2C3 | \
  64. RCC_PERIPHCLK_LCD))
  65. #endif
  66. #if defined(STM32L011xx) || defined(STM32L021xx) || defined(STM32L031xx) || defined(STM32L041xx) || \
  67. defined(STM32L010xB) || defined(STM32L010x8) || defined(STM32L010x6) || defined(STM32L010x4)
  68. #define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) <= ( RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \
  69. RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_RTC | \
  70. RCC_PERIPHCLK_LPTIM1))
  71. #elif defined(STM32L051xx) || defined(STM32L061xx)
  72. #define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) <= (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \
  73. RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_RTC | \
  74. RCC_PERIPHCLK_LPTIM1))
  75. #elif defined(STM32L071xx) || defined(STM32L081xx)
  76. #define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) <= (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \
  77. RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_RTC | \
  78. RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_I2C3))
  79. #endif
  80. #if defined (RCC_CCIPR_USART1SEL)
  81. #define IS_RCC_USART1CLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_USART1CLKSOURCE_PCLK2) || \
  82. ((__SOURCE__) == RCC_USART1CLKSOURCE_SYSCLK) || \
  83. ((__SOURCE__) == RCC_USART1CLKSOURCE_LSE) || \
  84. ((__SOURCE__) == RCC_USART1CLKSOURCE_HSI))
  85. #endif /* RCC_CCIPR_USART1SEL */
  86. #define IS_RCC_USART2CLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_USART2CLKSOURCE_PCLK1) || \
  87. ((__SOURCE__) == RCC_USART2CLKSOURCE_SYSCLK) || \
  88. ((__SOURCE__) == RCC_USART2CLKSOURCE_LSE) || \
  89. ((__SOURCE__) == RCC_USART2CLKSOURCE_HSI))
  90. #define IS_RCC_LPUART1CLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_LPUART1CLKSOURCE_PCLK1) || \
  91. ((__SOURCE__) == RCC_LPUART1CLKSOURCE_SYSCLK) || \
  92. ((__SOURCE__) == RCC_LPUART1CLKSOURCE_LSE) || \
  93. ((__SOURCE__) == RCC_LPUART1CLKSOURCE_HSI))
  94. #define IS_RCC_I2C1CLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_I2C1CLKSOURCE_PCLK1) || \
  95. ((__SOURCE__) == RCC_I2C1CLKSOURCE_SYSCLK)|| \
  96. ((__SOURCE__) == RCC_I2C1CLKSOURCE_HSI))
  97. #if defined(RCC_CCIPR_I2C3SEL)
  98. #define IS_RCC_I2C3CLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_I2C3CLKSOURCE_PCLK1) || \
  99. ((__SOURCE__) == RCC_I2C3CLKSOURCE_SYSCLK)|| \
  100. ((__SOURCE__) == RCC_I2C3CLKSOURCE_HSI))
  101. #endif /* RCC_CCIPR_I2C3SEL */
  102. #if defined(USB)
  103. #define IS_RCC_USBCLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_USBCLKSOURCE_HSI48) || \
  104. ((__SOURCE__) == RCC_USBCLKSOURCE_PLL))
  105. #endif /* USB */
  106. #if defined(RNG)
  107. #define IS_RCC_RNGCLKSOURCE(_SOURCE_) (((_SOURCE_) == RCC_RNGCLKSOURCE_HSI48) || \
  108. ((_SOURCE_) == RCC_RNGCLKSOURCE_PLLCLK))
  109. #endif /* RNG */
  110. #if defined(RCC_CCIPR_HSI48SEL)
  111. #define IS_RCC_HSI48MCLKSOURCE(__HSI48MCLK__) (((__HSI48MCLK__) == RCC_HSI48M_PLL) || ((__HSI48MCLK__) == RCC_HSI48M_HSI48))
  112. #endif /* RCC_CCIPR_HSI48SEL */
  113. #define IS_RCC_LPTIMCLK(__LPTIMCLK_) (((__LPTIMCLK_) == RCC_LPTIM1CLKSOURCE_PCLK1) || \
  114. ((__LPTIMCLK_) == RCC_LPTIM1CLKSOURCE_LSI) || \
  115. ((__LPTIMCLK_) == RCC_LPTIM1CLKSOURCE_HSI) || \
  116. ((__LPTIMCLK_) == RCC_LPTIM1CLKSOURCE_LSE))
  117. #define IS_RCC_STOPWAKEUP_CLOCK(__SOURCE__) (((__SOURCE__) == RCC_STOP_WAKEUPCLOCK_MSI) || \
  118. ((__SOURCE__) == RCC_STOP_WAKEUPCLOCK_HSI))
  119. #define IS_RCC_LSE_DRIVE(__DRIVE__) (((__DRIVE__) == RCC_LSEDRIVE_LOW) || ((__SOURCE__) == RCC_LSEDRIVE_MEDIUMLOW) || \
  120. ((__DRIVE__) == RCC_LSEDRIVE_MEDIUMHIGH) || ((__SOURCE__) == RCC_LSEDRIVE_HIGH))
  121. #if defined(CRS)
  122. #define IS_RCC_CRS_SYNC_SOURCE(_SOURCE_) (((_SOURCE_) == RCC_CRS_SYNC_SOURCE_GPIO) || \
  123. ((_SOURCE_) == RCC_CRS_SYNC_SOURCE_LSE) || \
  124. ((_SOURCE_) == RCC_CRS_SYNC_SOURCE_USB))
  125. #define IS_RCC_CRS_SYNC_DIV(_DIV_) (((_DIV_) == RCC_CRS_SYNC_DIV1) || ((_DIV_) == RCC_CRS_SYNC_DIV2) || \
  126. ((_DIV_) == RCC_CRS_SYNC_DIV4) || ((_DIV_) == RCC_CRS_SYNC_DIV8) || \
  127. ((_DIV_) == RCC_CRS_SYNC_DIV16) || ((_DIV_) == RCC_CRS_SYNC_DIV32) || \
  128. ((_DIV_) == RCC_CRS_SYNC_DIV64) || ((_DIV_) == RCC_CRS_SYNC_DIV128))
  129. #define IS_RCC_CRS_SYNC_POLARITY(_POLARITY_) (((_POLARITY_) == RCC_CRS_SYNC_POLARITY_RISING) || \
  130. ((_POLARITY_) == RCC_CRS_SYNC_POLARITY_FALLING))
  131. #define IS_RCC_CRS_RELOADVALUE(_VALUE_) (((_VALUE_) <= 0xFFFFU))
  132. #define IS_RCC_CRS_ERRORLIMIT(_VALUE_) (((_VALUE_) <= 0xFFU))
  133. #define IS_RCC_CRS_HSI48CALIBRATION(_VALUE_) (((_VALUE_) <= 0x3FU))
  134. #define IS_RCC_CRS_FREQERRORDIR(_DIR_) (((_DIR_) == RCC_CRS_FREQERRORDIR_UP) || \
  135. ((_DIR_) == RCC_CRS_FREQERRORDIR_DOWN))
  136. #endif /* CRS */
  137. /**
  138. * @}
  139. */
  140. /* Exported types ------------------------------------------------------------*/
  141. /** @defgroup RCCEx_Exported_Types RCCEx Exported Types
  142. * @{
  143. */
  144. /**
  145. * @brief RCC extended clocks structure definition
  146. */
  147. typedef struct
  148. {
  149. uint32_t PeriphClockSelection; /*!< The Extended Clock to be configured.
  150. This parameter can be a value of @ref RCCEx_Periph_Clock_Selection */
  151. uint32_t RTCClockSelection; /*!< specifies the RTC clock source.
  152. This parameter can be a value of @ref RCC_RTC_LCD_Clock_Source */
  153. #if defined(LCD)
  154. uint32_t LCDClockSelection; /*!< specifies the LCD clock source.
  155. This parameter can be a value of @ref RCC_RTC_LCD_Clock_Source */
  156. #endif /* LCD */
  157. #if defined(RCC_CCIPR_USART1SEL)
  158. uint32_t Usart1ClockSelection; /*!< USART1 clock source
  159. This parameter can be a value of @ref RCCEx_USART1_Clock_Source */
  160. #endif /* RCC_CCIPR_USART1SEL */
  161. uint32_t Usart2ClockSelection; /*!< USART2 clock source
  162. This parameter can be a value of @ref RCCEx_USART2_Clock_Source */
  163. uint32_t Lpuart1ClockSelection; /*!< LPUART1 clock source
  164. This parameter can be a value of @ref RCCEx_LPUART1_Clock_Source */
  165. uint32_t I2c1ClockSelection; /*!< I2C1 clock source
  166. This parameter can be a value of @ref RCCEx_I2C1_Clock_Source */
  167. #if defined(RCC_CCIPR_I2C3SEL)
  168. uint32_t I2c3ClockSelection; /*!< I2C3 clock source
  169. This parameter can be a value of @ref RCCEx_I2C3_Clock_Source */
  170. #endif /* RCC_CCIPR_I2C3SEL */
  171. uint32_t LptimClockSelection; /*!< LPTIM1 clock source
  172. This parameter can be a value of @ref RCCEx_LPTIM1_Clock_Source */
  173. #if defined(USB)
  174. uint32_t UsbClockSelection; /*!< Specifies USB and RNG Clock Selection
  175. This parameter can be a value of @ref RCCEx_USB_Clock_Source */
  176. #endif /* USB */
  177. } RCC_PeriphCLKInitTypeDef;
  178. #if defined (CRS)
  179. /**
  180. * @brief RCC_CRS Init structure definition
  181. */
  182. typedef struct
  183. {
  184. uint32_t Prescaler; /*!< Specifies the division factor of the SYNC signal.
  185. This parameter can be a value of @ref RCCEx_CRS_SynchroDivider */
  186. uint32_t Source; /*!< Specifies the SYNC signal source.
  187. This parameter can be a value of @ref RCCEx_CRS_SynchroSource */
  188. uint32_t Polarity; /*!< Specifies the input polarity for the SYNC signal source.
  189. This parameter can be a value of @ref RCCEx_CRS_SynchroPolarity */
  190. uint32_t ReloadValue; /*!< Specifies the value to be loaded in the frequency error counter with each SYNC event.
  191. It can be calculated in using macro @ref __HAL_RCC_CRS_RELOADVALUE_CALCULATE(__FTARGET__, __FSYNC__)
  192. This parameter must be a number between 0 and 0xFFFF or a value of @ref RCCEx_CRS_ReloadValueDefault .*/
  193. uint32_t ErrorLimitValue; /*!< Specifies the value to be used to evaluate the captured frequency error value.
  194. This parameter must be a number between 0 and 0xFF or a value of @ref RCCEx_CRS_ErrorLimitDefault */
  195. uint32_t HSI48CalibrationValue; /*!< Specifies a user-programmable trimming value to the HSI48 oscillator.
  196. This parameter must be a number between 0 and 0x3F or a value of @ref RCCEx_CRS_HSI48CalibrationDefault */
  197. }RCC_CRSInitTypeDef;
  198. /**
  199. * @brief RCC_CRS Synchronization structure definition
  200. */
  201. typedef struct
  202. {
  203. uint32_t ReloadValue; /*!< Specifies the value loaded in the Counter reload value.
  204. This parameter must be a number between 0 and 0xFFFF */
  205. uint32_t HSI48CalibrationValue; /*!< Specifies value loaded in HSI48 oscillator smooth trimming.
  206. This parameter must be a number between 0 and 0x3F */
  207. uint32_t FreqErrorCapture; /*!< Specifies the value loaded in the .FECAP, the frequency error counter
  208. value latched in the time of the last SYNC event.
  209. This parameter must be a number between 0 and 0xFFFF */
  210. uint32_t FreqErrorDirection; /*!< Specifies the value loaded in the .FEDIR, the counting direction of the
  211. frequency error counter latched in the time of the last SYNC event.
  212. It shows whether the actual frequency is below or above the target.
  213. This parameter must be a value of @ref RCCEx_CRS_FreqErrorDirection*/
  214. }RCC_CRSSynchroInfoTypeDef;
  215. #endif /* CRS */
  216. /**
  217. * @}
  218. */
  219. /* Exported constants --------------------------------------------------------*/
  220. /** @defgroup RCCEx_Exported_Constants RCCEx Exported Constants
  221. * @{
  222. */
  223. /** @defgroup RCCEx_EXTI_LINE_LSECSS RCC LSE CSS external interrupt line
  224. * @{
  225. */
  226. #define RCC_EXTI_LINE_LSECSS (EXTI_IMR_IM19) /*!< External interrupt line 19 connected to the LSE CSS EXTI Line */
  227. /**
  228. * @}
  229. */
  230. /** @defgroup RCCEx_Periph_Clock_Selection RCCEx Periph Clock Selection
  231. * @{
  232. */
  233. #if defined(RCC_CCIPR_USART1SEL)
  234. #define RCC_PERIPHCLK_USART1 ((uint32_t)0x00000001)
  235. #endif /* RCC_CCIPR_USART1SEL */
  236. #define RCC_PERIPHCLK_USART2 ((uint32_t)0x00000002)
  237. #define RCC_PERIPHCLK_LPUART1 ((uint32_t)0x00000004)
  238. #define RCC_PERIPHCLK_I2C1 ((uint32_t)0x00000008)
  239. #define RCC_PERIPHCLK_I2C2 ((uint32_t)0x00000010)
  240. #define RCC_PERIPHCLK_RTC ((uint32_t)0x00000020)
  241. #if defined(USB)
  242. #define RCC_PERIPHCLK_USB ((uint32_t)0x00000040)
  243. #endif /* USB */
  244. #define RCC_PERIPHCLK_LPTIM1 ((uint32_t)0x00000080)
  245. #if defined(LCD)
  246. #define RCC_PERIPHCLK_LCD ((uint32_t)0x00000800)
  247. #endif /* LCD */
  248. #if defined(RCC_CCIPR_I2C3SEL)
  249. #define RCC_PERIPHCLK_I2C3 ((uint32_t)0x00000100)
  250. #endif /* RCC_CCIPR_I2C3SEL */
  251. /**
  252. * @}
  253. */
  254. #if defined (RCC_CCIPR_USART1SEL)
  255. /** @defgroup RCCEx_USART1_Clock_Source RCCEx USART1 Clock Source
  256. * @{
  257. */
  258. #define RCC_USART1CLKSOURCE_PCLK2 (0x00000000U)
  259. #define RCC_USART1CLKSOURCE_SYSCLK RCC_CCIPR_USART1SEL_0
  260. #define RCC_USART1CLKSOURCE_HSI RCC_CCIPR_USART1SEL_1
  261. #define RCC_USART1CLKSOURCE_LSE (RCC_CCIPR_USART1SEL_0 | RCC_CCIPR_USART1SEL_1)
  262. /**
  263. * @}
  264. */
  265. #endif /* RCC_CCIPR_USART1SEL */
  266. /** @defgroup RCCEx_USART2_Clock_Source RCCEx USART2 Clock Source
  267. * @{
  268. */
  269. #define RCC_USART2CLKSOURCE_PCLK1 (0x00000000U)
  270. #define RCC_USART2CLKSOURCE_SYSCLK RCC_CCIPR_USART2SEL_0
  271. #define RCC_USART2CLKSOURCE_HSI RCC_CCIPR_USART2SEL_1
  272. #define RCC_USART2CLKSOURCE_LSE (RCC_CCIPR_USART2SEL_0 | RCC_CCIPR_USART2SEL_1)
  273. /**
  274. * @}
  275. */
  276. /** @defgroup RCCEx_LPUART1_Clock_Source RCCEx LPUART1 Clock Source
  277. * @{
  278. */
  279. #define RCC_LPUART1CLKSOURCE_PCLK1 (0x00000000U)
  280. #define RCC_LPUART1CLKSOURCE_SYSCLK RCC_CCIPR_LPUART1SEL_0
  281. #define RCC_LPUART1CLKSOURCE_HSI RCC_CCIPR_LPUART1SEL_1
  282. #define RCC_LPUART1CLKSOURCE_LSE (RCC_CCIPR_LPUART1SEL_0 | RCC_CCIPR_LPUART1SEL_1)
  283. /**
  284. * @}
  285. */
  286. /** @defgroup RCCEx_I2C1_Clock_Source RCCEx I2C1 Clock Source
  287. * @{
  288. */
  289. #define RCC_I2C1CLKSOURCE_PCLK1 (0x00000000U)
  290. #define RCC_I2C1CLKSOURCE_SYSCLK RCC_CCIPR_I2C1SEL_0
  291. #define RCC_I2C1CLKSOURCE_HSI RCC_CCIPR_I2C1SEL_1
  292. /**
  293. * @}
  294. */
  295. #if defined(RCC_CCIPR_I2C3SEL)
  296. /** @defgroup RCCEx_I2C3_Clock_Source RCCEx I2C3 Clock Source
  297. * @{
  298. */
  299. #define RCC_I2C3CLKSOURCE_PCLK1 (0x00000000U)
  300. #define RCC_I2C3CLKSOURCE_SYSCLK RCC_CCIPR_I2C3SEL_0
  301. #define RCC_I2C3CLKSOURCE_HSI RCC_CCIPR_I2C3SEL_1
  302. /**
  303. * @}
  304. */
  305. #endif /* RCC_CCIPR_I2C3SEL */
  306. /** @defgroup RCCEx_TIM_PRescaler_Selection RCCEx TIM Prescaler Selection
  307. * @{
  308. */
  309. #define RCC_TIMPRES_DESACTIVATED ((uint8_t)0x00)
  310. #define RCC_TIMPRES_ACTIVATED ((uint8_t)0x01)
  311. /**
  312. * @}
  313. */
  314. #if defined(USB)
  315. /** @defgroup RCCEx_USB_Clock_Source RCCEx USB Clock Source
  316. * @{
  317. */
  318. #define RCC_USBCLKSOURCE_HSI48 RCC_CCIPR_HSI48SEL
  319. #define RCC_USBCLKSOURCE_PLL (0x00000000U)
  320. /**
  321. * @}
  322. */
  323. #endif /* USB */
  324. #if defined(RNG)
  325. /** @defgroup RCCEx_RNG_Clock_Source RCCEx RNG Clock Source
  326. * @{
  327. */
  328. #define RCC_RNGCLKSOURCE_HSI48 RCC_CCIPR_HSI48SEL
  329. #define RCC_RNGCLKSOURCE_PLLCLK (0x00000000U)
  330. /**
  331. * @}
  332. */
  333. #endif /* RNG */
  334. #if defined(RCC_CCIPR_HSI48SEL)
  335. /** @defgroup RCCEx_HSI48M_Clock_Source RCCEx HSI48M Clock Source
  336. * @{
  337. */
  338. #define RCC_FLAG_HSI48 SYSCFG_CFGR3_VREFINT_RDYF
  339. #define RCC_HSI48M_PLL (0x00000000U)
  340. #define RCC_HSI48M_HSI48 RCC_CCIPR_HSI48SEL
  341. /**
  342. * @}
  343. */
  344. #endif /* RCC_CCIPR_HSI48SEL */
  345. /** @defgroup RCCEx_LPTIM1_Clock_Source RCCEx LPTIM1 Clock Source
  346. * @{
  347. */
  348. #define RCC_LPTIM1CLKSOURCE_PCLK1 (0x00000000U)
  349. #define RCC_LPTIM1CLKSOURCE_LSI RCC_CCIPR_LPTIM1SEL_0
  350. #define RCC_LPTIM1CLKSOURCE_HSI RCC_CCIPR_LPTIM1SEL_1
  351. #define RCC_LPTIM1CLKSOURCE_LSE RCC_CCIPR_LPTIM1SEL
  352. /**
  353. * @}
  354. */
  355. /** @defgroup RCCEx_StopWakeUp_Clock RCCEx StopWakeUp Clock
  356. * @{
  357. */
  358. #define RCC_STOP_WAKEUPCLOCK_MSI (0x00000000U)
  359. #define RCC_STOP_WAKEUPCLOCK_HSI RCC_CFGR_STOPWUCK
  360. /**
  361. * @}
  362. */
  363. /** @defgroup RCCEx_LSEDrive_Configuration RCCEx LSE Drive Configuration
  364. * @{
  365. */
  366. #define RCC_LSEDRIVE_LOW (0x00000000U)
  367. #define RCC_LSEDRIVE_MEDIUMLOW RCC_CSR_LSEDRV_0
  368. #define RCC_LSEDRIVE_MEDIUMHIGH RCC_CSR_LSEDRV_1
  369. #define RCC_LSEDRIVE_HIGH RCC_CSR_LSEDRV
  370. /**
  371. * @}
  372. */
  373. #if defined(CRS)
  374. /** @defgroup RCCEx_CRS_Status RCCEx CRS Status
  375. * @{
  376. */
  377. #define RCC_CRS_NONE (0x00000000U)
  378. #define RCC_CRS_TIMEOUT ((uint32_t)0x00000001)
  379. #define RCC_CRS_SYNCOK ((uint32_t)0x00000002)
  380. #define RCC_CRS_SYNCWARN ((uint32_t)0x00000004)
  381. #define RCC_CRS_SYNCERR ((uint32_t)0x00000008)
  382. #define RCC_CRS_SYNCMISS ((uint32_t)0x00000010)
  383. #define RCC_CRS_TRIMOVF ((uint32_t)0x00000020)
  384. /**
  385. * @}
  386. */
  387. /** @defgroup RCCEx_CRS_SynchroSource RCCEx CRS Synchronization Source
  388. * @{
  389. */
  390. #define RCC_CRS_SYNC_SOURCE_GPIO ((uint32_t)0x00000000U) /*!< Synchro Signal source GPIO */
  391. #define RCC_CRS_SYNC_SOURCE_LSE CRS_CFGR_SYNCSRC_0 /*!< Synchro Signal source LSE */
  392. #define RCC_CRS_SYNC_SOURCE_USB CRS_CFGR_SYNCSRC_1 /*!< Synchro Signal source USB SOF (default)*/
  393. /**
  394. * @}
  395. */
  396. /** @defgroup RCCEx_CRS_SynchroDivider RCCEx CRS Synchronization Divider
  397. * @{
  398. */
  399. #define RCC_CRS_SYNC_DIV1 ((uint32_t)0x00000000U) /*!< Synchro Signal not divided (default) */
  400. #define RCC_CRS_SYNC_DIV2 CRS_CFGR_SYNCDIV_0 /*!< Synchro Signal divided by 2 */
  401. #define RCC_CRS_SYNC_DIV4 CRS_CFGR_SYNCDIV_1 /*!< Synchro Signal divided by 4 */
  402. #define RCC_CRS_SYNC_DIV8 (CRS_CFGR_SYNCDIV_1 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 8 */
  403. #define RCC_CRS_SYNC_DIV16 CRS_CFGR_SYNCDIV_2 /*!< Synchro Signal divided by 16 */
  404. #define RCC_CRS_SYNC_DIV32 (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 32 */
  405. #define RCC_CRS_SYNC_DIV64 (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_1) /*!< Synchro Signal divided by 64 */
  406. #define RCC_CRS_SYNC_DIV128 CRS_CFGR_SYNCDIV /*!< Synchro Signal divided by 128 */
  407. /**
  408. * @}
  409. */
  410. /** @defgroup RCCEx_CRS_SynchroPolarity RCCEx CRS Synchronization Polarity
  411. * @{
  412. */
  413. #define RCC_CRS_SYNC_POLARITY_RISING ((uint32_t)0x00000000U) /*!< Synchro Active on rising edge (default) */
  414. #define RCC_CRS_SYNC_POLARITY_FALLING CRS_CFGR_SYNCPOL /*!< Synchro Active on falling edge */
  415. /**
  416. * @}
  417. */
  418. /** @defgroup RCCEx_CRS_ReloadValueDefault RCCEx CRS Default Reload Value
  419. * @{
  420. */
  421. #define RCC_CRS_RELOADVALUE_DEFAULT ((uint32_t)0x0000BB7FU) /*!< The reset value of the RELOAD field corresponds
  422. to a target frequency of 48 MHz and a synchronization signal frequency of 1 kHz (SOF signal from USB). */
  423. /**
  424. * @}
  425. */
  426. /** @defgroup RCCEx_CRS_ErrorLimitDefault RCCEx CRS Default Error Limit Value
  427. * @{
  428. */
  429. #define RCC_CRS_ERRORLIMIT_DEFAULT ((uint32_t)0x00000022U) /*!< Default Frequency error limit */
  430. /**
  431. * @}
  432. */
  433. /** @defgroup RCCEx_CRS_HSI48CalibrationDefault RCCEx CRS Default HSI48 Calibration vakye
  434. * @{
  435. */
  436. #define RCC_CRS_HSI48CALIBRATION_DEFAULT ((uint32_t)0x00000020U) /*!< The default value is 32, which corresponds to the middle of the trimming interval.
  437. The trimming step is around 67 kHz between two consecutive TRIM steps. A higher TRIM value
  438. corresponds to a higher output frequency */
  439. /**
  440. * @}
  441. */
  442. /** @defgroup RCCEx_CRS_FreqErrorDirection RCCEx CRS Frequency Error Direction
  443. * @{
  444. */
  445. #define RCC_CRS_FREQERRORDIR_UP ((uint32_t)0x00000000U) /*!< Upcounting direction, the actual frequency is above the target */
  446. #define RCC_CRS_FREQERRORDIR_DOWN ((uint32_t)CRS_ISR_FEDIR) /*!< Downcounting direction, the actual frequency is below the target */
  447. /**
  448. * @}
  449. */
  450. /** @defgroup RCCEx_CRS_Interrupt_Sources RCCEx CRS Interrupt Sources
  451. * @{
  452. */
  453. #define RCC_CRS_IT_SYNCOK CRS_CR_SYNCOKIE /*!< SYNC event OK */
  454. #define RCC_CRS_IT_SYNCWARN CRS_CR_SYNCWARNIE /*!< SYNC warning */
  455. #define RCC_CRS_IT_ERR CRS_CR_ERRIE /*!< Error */
  456. #define RCC_CRS_IT_ESYNC CRS_CR_ESYNCIE /*!< Expected SYNC */
  457. #define RCC_CRS_IT_SYNCERR CRS_CR_ERRIE /*!< SYNC error */
  458. #define RCC_CRS_IT_SYNCMISS CRS_CR_ERRIE /*!< SYNC missed */
  459. #define RCC_CRS_IT_TRIMOVF CRS_CR_ERRIE /*!< Trimming overflow or underflow */
  460. /**
  461. * @}
  462. */
  463. /** @defgroup RCCEx_CRS_Flags RCCEx CRS Flags
  464. * @{
  465. */
  466. #define RCC_CRS_FLAG_SYNCOK CRS_ISR_SYNCOKF /*!< SYNC event OK flag */
  467. #define RCC_CRS_FLAG_SYNCWARN CRS_ISR_SYNCWARNF /*!< SYNC warning flag */
  468. #define RCC_CRS_FLAG_ERR CRS_ISR_ERRF /*!< Error flag */
  469. #define RCC_CRS_FLAG_ESYNC CRS_ISR_ESYNCF /*!< Expected SYNC flag */
  470. #define RCC_CRS_FLAG_SYNCERR CRS_ISR_SYNCERR /*!< SYNC error */
  471. #define RCC_CRS_FLAG_SYNCMISS CRS_ISR_SYNCMISS /*!< SYNC missed*/
  472. #define RCC_CRS_FLAG_TRIMOVF CRS_ISR_TRIMOVF /*!< Trimming overflow or underflow */
  473. /**
  474. * @}
  475. */
  476. #endif /* CRS */
  477. /**
  478. * @}
  479. */
  480. /* Exported macro ------------------------------------------------------------*/
  481. /** @defgroup RCCEx_Exported_Macros RCCEx Exported Macros
  482. * @{
  483. */
  484. /** @defgroup RCCEx_Peripheral_Clock_Enable_Disable AHB Peripheral Clock Enable Disable
  485. * @brief Enable or disable the AHB peripheral clock.
  486. * @note After reset, the peripheral clock (used for registers read/write access)
  487. * is disabled and the application software has to enable this clock before
  488. * using it.
  489. * @{
  490. */
  491. #if defined(STM32L062xx) || defined(STM32L063xx)|| defined(STM32L082xx) || defined(STM32L083xx) || defined(STM32L041xx) || defined(STM32L021xx)
  492. #define __HAL_RCC_AES_CLK_ENABLE() do { \
  493. __IO uint32_t tmpreg; \
  494. SET_BIT(RCC->AHBENR, RCC_AHBENR_CRYPEN);\
  495. /* Delay after an RCC peripheral clock enabling */ \
  496. tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_CRYPEN);\
  497. UNUSED(tmpreg); \
  498. } while(0)
  499. #define __HAL_RCC_AES_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, (RCC_AHBENR_CRYPEN))
  500. #define __HAL_RCC_AES_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_CRYPEN) != 0U)
  501. #define __HAL_RCC_AES_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_CRYPEN) == 0U)
  502. #endif /* STM32L062xx || STM32L063xx || STM32L072xx || STM32L073xx || STM32L082xx || STM32L083xx || STM32L041xx || STM32L021xx */
  503. #if !defined(STM32L010xB) && !defined(STM32L010x8) && !defined(STM32L010x6) && !defined(STM32L010x4) && !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) && !defined(STM32L051xx) && !defined(STM32L061xx) && !defined(STM32L071xx) && !defined(STM32L081xx)
  504. #define __HAL_RCC_TSC_CLK_ENABLE() do { \
  505. __IO uint32_t tmpreg; \
  506. SET_BIT(RCC->AHBENR, RCC_AHBENR_TSCEN);\
  507. /* Delay after an RCC peripheral clock enabling */ \
  508. tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_TSCEN);\
  509. UNUSED(tmpreg); \
  510. } while(0)
  511. #define __HAL_RCC_TSC_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, (RCC_AHBENR_TSCEN))
  512. #define __HAL_RCC_TSC_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_TSCEN) != 0U)
  513. #define __HAL_RCC_TSC_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_TSCEN) == 0U)
  514. #define __HAL_RCC_RNG_CLK_ENABLE() do { \
  515. __IO uint32_t tmpreg; \
  516. SET_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN);\
  517. /* Delay after an RCC peripheral clock enabling */ \
  518. tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN);\
  519. UNUSED(tmpreg); \
  520. } while(0)
  521. #define __HAL_RCC_RNG_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, (RCC_AHBENR_RNGEN))
  522. #define __HAL_RCC_RNG_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN) != 0U)
  523. #define __HAL_RCC_RNG_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN) == 0U)
  524. #endif /* !(STM32L010xB) && !(STM32L010x8) && !(STM32L010x6) && !(STM32L010x4) && !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx ) && !(STM32L041xx ) && !(STM32L051xx ) && !(STM32L061xx ) && !(STM32L071xx ) && !(STM32L081xx ) */
  525. /**
  526. * @}
  527. */
  528. /** @defgroup RCCEx_IOPORT_Clock_Enable_Disable IOPORT Peripheral Clock Enable Disable
  529. * @brief Enable or disable the IOPORT peripheral clock.
  530. * @note After reset, the peripheral clock (used for registers read/write access)
  531. * is disabled and the application software has to enable this clock before
  532. * using it.
  533. * @{
  534. */
  535. #if defined(GPIOE)
  536. #define __HAL_RCC_GPIOE_CLK_ENABLE() do { \
  537. __IO uint32_t tmpreg; \
  538. SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN);\
  539. /* Delay after an RCC peripheral clock enabling */ \
  540. tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN);\
  541. UNUSED(tmpreg); \
  542. } while(0)
  543. #define __HAL_RCC_GPIOE_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR,(RCC_IOPENR_GPIOEEN))
  544. #define __HAL_RCC_GPIOE_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN) != 0U)
  545. #define __HAL_RCC_GPIOE_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN) == 0U)
  546. #endif /* GPIOE */
  547. #if defined(GPIOD)
  548. #define __HAL_RCC_GPIOD_CLK_ENABLE() do { \
  549. __IO uint32_t tmpreg; \
  550. SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN);\
  551. /* Delay after an RCC peripheral clock enabling */ \
  552. tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN);\
  553. UNUSED(tmpreg); \
  554. } while(0)
  555. #define __HAL_RCC_GPIOD_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR,(RCC_IOPENR_GPIODEN))
  556. #define __HAL_RCC_GPIOD_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN) != 0U)
  557. #define __HAL_RCC_GPIOD_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN) == 0U)
  558. #endif /* GPIOD */
  559. /**
  560. * @}
  561. */
  562. /** @defgroup RCCEx_APB1_Clock_Enable_Disable APB1 Peripheral Clock Enable Disable
  563. * @brief Enable or disable the APB1 peripheral clock.
  564. * @note After reset, the peripheral clock (used for registers read/write access)
  565. * is disabled and the application software has to enable this clock before
  566. * using it.
  567. * @{
  568. */
  569. #if !defined(STM32L010xB) && !defined(STM32L010x8) && !defined(STM32L010x6) && !defined(STM32L010x4) && !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) && !defined(STM32L051xx) && !defined(STM32L061xx) && !defined(STM32L071xx) && !defined(STM32L081xx)
  570. #define __HAL_RCC_USB_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_USBEN))
  571. #define __HAL_RCC_USB_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_USBEN))
  572. #define __HAL_RCC_USB_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USBEN) != 0U)
  573. #define __HAL_RCC_USB_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USBEN) == 0U)
  574. #define __HAL_RCC_CRS_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_CRSEN))
  575. #define __HAL_RCC_CRS_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR,(RCC_APB1ENR_CRSEN))
  576. #define __HAL_RCC_CRS_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CRSEN) != 0U)
  577. #define __HAL_RCC_CRS_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CRSEN) == 0U)
  578. #endif /* !(STM32L010xB) && !(STM32L010x8) && !(STM32L010x6) && !(STM32L010x4) && !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx ) && !(STM32L041xx ) && !(STM32L051xx ) && !(STM32L061xx ) && !(STM32L071xx ) && !(STM32L081xx ) */
  579. #if defined(STM32L053xx) || defined(STM32L063xx) || defined(STM32L073xx) || defined(STM32L083xx)
  580. #define __HAL_RCC_LCD_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_LCDEN))
  581. #define __HAL_RCC_LCD_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_LCDEN))
  582. #define __HAL_RCC_LCD_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LCDEN) != 0U)
  583. #define __HAL_RCC_LCD_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LCDEN) == 0U)
  584. #endif /* STM32L053xx || STM32L063xx || STM32L073xx || STM32L083xx */
  585. #if defined(STM32L053xx) || defined(STM32L063xx) \
  586. || defined(STM32L052xx) || defined(STM32L062xx) \
  587. || defined(STM32L051xx) || defined(STM32L061xx)
  588. #define __HAL_RCC_TIM2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM2EN))
  589. #define __HAL_RCC_TIM6_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM6EN))
  590. #define __HAL_RCC_SPI2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_SPI2EN))
  591. #define __HAL_RCC_USART2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART2EN))
  592. #define __HAL_RCC_LPUART1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPUART1EN))
  593. #define __HAL_RCC_I2C1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C1EN))
  594. #define __HAL_RCC_I2C2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C2EN))
  595. #define __HAL_RCC_DAC_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_DACEN))
  596. #define __HAL_RCC_LPTIM1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPTIM1EN))
  597. #define __HAL_RCC_TIM2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM2EN))
  598. #define __HAL_RCC_TIM6_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM6EN))
  599. #define __HAL_RCC_SPI2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_SPI2EN))
  600. #define __HAL_RCC_USART2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART2EN))
  601. #define __HAL_RCC_LPUART1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPUART1EN))
  602. #define __HAL_RCC_I2C1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C1EN))
  603. #define __HAL_RCC_I2C2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C2EN))
  604. #define __HAL_RCC_DAC_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_DACEN))
  605. #define __HAL_RCC_LPTIM1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPTIM1EN))
  606. #define __HAL_RCC_TIM2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN) != 0U)
  607. #define __HAL_RCC_TIM6_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN) != 0U)
  608. #define __HAL_RCC_SPI2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN) != 0U)
  609. #define __HAL_RCC_USART2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN) != 0U)
  610. #define __HAL_RCC_LPUART1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPUART1EN) != 0U)
  611. #define __HAL_RCC_I2C1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN) != 0U)
  612. #define __HAL_RCC_I2C2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN) != 0U)
  613. #define __HAL_RCC_DAC_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN) != 0U)
  614. #define __HAL_RCC_LPTIM1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN) != 0U)
  615. #define __HAL_RCC_TIM2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN) == 0U)
  616. #define __HAL_RCC_TIM6_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN) == 0U)
  617. #define __HAL_RCC_SPI2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN) == 0U)
  618. #define __HAL_RCC_USART2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN) == 0U)
  619. #define __HAL_RCC_LPUART1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPUART1EN) == 0U)
  620. #define __HAL_RCC_I2C1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN) == 0U)
  621. #define __HAL_RCC_I2C2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN) == 0U)
  622. #define __HAL_RCC_DAC_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN) == 0U)
  623. #define __HAL_RCC_LPTIM1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN) == 0U)
  624. #endif /* STM32L051xx || STM32L061xx || */
  625. /* STM32L052xx || STM32L062xx || */
  626. /* STM32L053xx || STM32L063xx || */
  627. #if defined(STM32L010xB) || defined(STM32L010x8) || defined(STM32L010x6) || defined(STM32L010x4) || \
  628. defined(STM32L011xx) || defined(STM32L021xx) || defined(STM32L031xx) || defined(STM32L041xx)
  629. #define __HAL_RCC_TIM2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM2EN))
  630. #define __HAL_RCC_USART2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART2EN))
  631. #define __HAL_RCC_LPUART1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPUART1EN))
  632. #define __HAL_RCC_I2C1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C1EN))
  633. #define __HAL_RCC_LPTIM1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPTIM1EN))
  634. #define __HAL_RCC_TIM2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM2EN))
  635. #define __HAL_RCC_USART2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART2EN))
  636. #define __HAL_RCC_LPUART1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPUART1EN))
  637. #define __HAL_RCC_I2C1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C1EN))
  638. #define __HAL_RCC_LPTIM1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPTIM1EN))
  639. #define __HAL_RCC_TIM2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN) != 0U)
  640. #define __HAL_RCC_USART2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN) != 0U)
  641. #define __HAL_RCC_LPUART1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPUART1EN) != 0U)
  642. #define __HAL_RCC_I2C1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN) != 0U)
  643. #define __HAL_RCC_LPTIM1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN) != 0U)
  644. #define __HAL_RCC_TIM2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN) == 0U)
  645. #define __HAL_RCC_USART2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN) == 0U)
  646. #define __HAL_RCC_LPUART1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPUART1EN) == 0U)
  647. #define __HAL_RCC_I2C1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN) == 0U)
  648. #define __HAL_RCC_LPTIM1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN) == 0U)
  649. #endif /* STM32L010xB || STM32L010x8 || STM32L010x6 || STM32L010x4 || */
  650. /* STM32L011xx || STM32L021xx || STM32L031xx || STM32L041xx */
  651. #if defined(STM32L073xx) || defined(STM32L083xx) \
  652. || defined(STM32L072xx) || defined(STM32L082xx) \
  653. || defined(STM32L071xx) || defined(STM32L081xx)
  654. #define __HAL_RCC_TIM2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM2EN))
  655. #define __HAL_RCC_TIM3_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM3EN))
  656. #define __HAL_RCC_TIM6_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM6EN))
  657. #define __HAL_RCC_TIM7_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM7EN))
  658. #define __HAL_RCC_SPI2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_SPI2EN))
  659. #define __HAL_RCC_USART2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART2EN))
  660. #define __HAL_RCC_USART4_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART4EN))
  661. #define __HAL_RCC_USART5_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART5EN))
  662. #define __HAL_RCC_LPUART1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPUART1EN))
  663. #define __HAL_RCC_I2C1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C1EN))
  664. #define __HAL_RCC_I2C2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C2EN))
  665. #define __HAL_RCC_I2C3_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C3EN))
  666. #define __HAL_RCC_DAC_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_DACEN))
  667. #define __HAL_RCC_LPTIM1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPTIM1EN))
  668. #define __HAL_RCC_TIM2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM2EN))
  669. #define __HAL_RCC_TIM3_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM3EN))
  670. #define __HAL_RCC_TIM6_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM6EN))
  671. #define __HAL_RCC_TIM7_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM7EN))
  672. #define __HAL_RCC_SPI2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_SPI2EN))
  673. #define __HAL_RCC_USART2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART2EN))
  674. #define __HAL_RCC_USART4_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART4EN))
  675. #define __HAL_RCC_USART5_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART5EN))
  676. #define __HAL_RCC_LPUART1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPUART1EN))
  677. #define __HAL_RCC_I2C1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C1EN))
  678. #define __HAL_RCC_I2C2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C2EN))
  679. #define __HAL_RCC_I2C3_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C3EN))
  680. #define __HAL_RCC_DAC_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_DACEN))
  681. #define __HAL_RCC_LPTIM1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPTIM1EN))
  682. #define __HAL_RCC_TIM2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN) != 0U)
  683. #define __HAL_RCC_TIM3_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN) != 0U)
  684. #define __HAL_RCC_TIM6_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN) != 0U)
  685. #define __HAL_RCC_TIM7_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM7EN) != 0U)
  686. #define __HAL_RCC_SPI2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN) != 0U)
  687. #define __HAL_RCC_USART2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN) != 0U)
  688. #define __HAL_RCC_USART4_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART4EN) != 0U)
  689. #define __HAL_RCC_USART5_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART5EN) != 0U)
  690. #define __HAL_RCC_LPUART1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPUART1EN) != 0U)
  691. #define __HAL_RCC_I2C1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN) != 0U)
  692. #define __HAL_RCC_I2C2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN) != 0U)
  693. #define __HAL_RCC_I2C3_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C3EN) != 0U)
  694. #define __HAL_RCC_DAC_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN) != 0U)
  695. #define __HAL_RCC_LPTIM1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN) != 0U)
  696. #define __HAL_RCC_TIM2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN) == 0U)
  697. #define __HAL_RCC_TIM3_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN) == 0U)
  698. #define __HAL_RCC_TIM6_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN) == 0U)
  699. #define __HAL_RCC_TIM7_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM7EN) == 0U)
  700. #define __HAL_RCC_SPI2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN) == 0U)
  701. #define __HAL_RCC_USART2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN) == 0U)
  702. #define __HAL_RCC_USART4_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART4EN) == 0U)
  703. #define __HAL_RCC_USART5_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART5EN) == 0U)
  704. #define __HAL_RCC_LPUART1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPUART1EN) == 0U)
  705. #define __HAL_RCC_I2C1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN) == 0U)
  706. #define __HAL_RCC_I2C2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN) == 0U)
  707. #define __HAL_RCC_I2C3_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C3EN) == 0U)
  708. #define __HAL_RCC_DAC_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN) == 0U)
  709. #define __HAL_RCC_LPTIM1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN) == 0U)
  710. #endif /* STM32L071xx || STM32L081xx || */
  711. /* STM32L072xx || STM32L082xx || */
  712. /* STM32L073xx || STM32L083xx */
  713. /**
  714. * @}
  715. */
  716. #if defined(STM32L053xx) || defined(STM32L063xx) || defined(STM32L073xx) || defined(STM32L083xx) \
  717. || defined(STM32L052xx) || defined(STM32L062xx) || defined(STM32L072xx) || defined(STM32L082xx) \
  718. || defined(STM32L051xx) || defined(STM32L061xx) || defined(STM32L071xx) || defined(STM32L081xx) \
  719. || defined(STM32L031xx) || defined(STM32L041xx) || defined(STM32L011xx) || defined(STM32L021xx) \
  720. || defined(STM32L010xB) || defined(STM32L010x8) || defined(STM32L010x6) || defined(STM32L010x4)
  721. /** @defgroup RCCEx_APB2_Clock_Enable_Disable APB2 Peripheral Clock Enable Disable
  722. * @brief Enable or disable the APB2 peripheral clock.
  723. * @note After reset, the peripheral clock (used for registers read/write access)
  724. * is disabled and the application software has to enable this clock before
  725. * using it.
  726. * @{
  727. */
  728. #define __HAL_RCC_TIM21_CLK_ENABLE() SET_BIT(RCC->APB2ENR, (RCC_APB2ENR_TIM21EN))
  729. #if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx)
  730. #define __HAL_RCC_TIM22_CLK_ENABLE() SET_BIT(RCC->APB2ENR, (RCC_APB2ENR_TIM22EN))
  731. #endif
  732. #define __HAL_RCC_ADC1_CLK_ENABLE() SET_BIT(RCC->APB2ENR, (RCC_APB2ENR_ADC1EN))
  733. #define __HAL_RCC_SPI1_CLK_ENABLE() SET_BIT(RCC->APB2ENR, (RCC_APB2ENR_SPI1EN))
  734. #define __HAL_RCC_USART1_CLK_ENABLE() SET_BIT(RCC->APB2ENR, (RCC_APB2ENR_USART1EN))
  735. #define __HAL_RCC_TIM21_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, (RCC_APB2ENR_TIM21EN))
  736. #if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx)
  737. #define __HAL_RCC_TIM22_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, (RCC_APB2ENR_TIM22EN))
  738. #endif
  739. #define __HAL_RCC_ADC1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, (RCC_APB2ENR_ADC1EN))
  740. #define __HAL_RCC_SPI1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, (RCC_APB2ENR_SPI1EN))
  741. #define __HAL_RCC_USART1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, (RCC_APB2ENR_USART1EN))
  742. #if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L010xB) && !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx)
  743. #define __HAL_RCC_FIREWALL_CLK_ENABLE() SET_BIT(RCC->APB2ENR, (RCC_APB2ENR_MIFIEN))
  744. #define __HAL_RCC_FIREWALL_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, (RCC_APB2ENR_MIFIEN))
  745. #endif /* !(STM32L010x4) && !(STM32L010x6) && !(STM32L010x8) && !(STM32L010xB) && !(STM32L011xx) && !(STM32L021xx) && !STM32L031xx && !STM32L041xx */
  746. #define __HAL_RCC_TIM21_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM21EN) != 0U)
  747. #if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx)
  748. #define __HAL_RCC_TIM22_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM22EN) != 0U)
  749. #endif
  750. #define __HAL_RCC_ADC1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC1EN) != 0U)
  751. #define __HAL_RCC_SPI1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN) != 0U)
  752. #define __HAL_RCC_USART1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN) != 0U)
  753. #define __HAL_RCC_TIM21_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, (RCC_APB2ENR_TIM21EN) == 0U)
  754. #if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx)
  755. #define __HAL_RCC_TIM22_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, (RCC_APB2ENR_TIM22EN) == 0U)
  756. #endif
  757. #define __HAL_RCC_ADC1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, (RCC_APB2ENR_ADC1EN) == 0U)
  758. #define __HAL_RCC_SPI1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, (RCC_APB2ENR_SPI1EN) == 0U)
  759. #define __HAL_RCC_USART1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, (RCC_APB2ENR_USART1EN) == 0U)
  760. #if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L010xB) && !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx)
  761. #define __HAL_RCC_FIREWALL_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_MIFIEN) != 0U)
  762. #define __HAL_RCC_FIREWALL_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, (RCC_APB2ENR_MIFIEN) == 0U)
  763. #endif /* !(STM32L010x4) && !(STM32L010x6) && !(STM32L010x8) && !(STM32L010xB) && !(STM32L011xx) && !(STM32L021xx) && !STM32L031xx && !STM32L041xx */
  764. #endif /* STM32L051xx || STM32L061xx || STM32L071xx || STM32L081xx || */
  765. /* STM32L052xx || STM32L062xx || STM32L072xx || STM32L082xx || */
  766. /* STM32L053xx || STM32L063xx || STM32L073xx || STM32L083xx || */
  767. /* STM32L031xx || STM32L041xx || STM32L011xx || STM32L021xx || */
  768. /* STM32L010xB || STM32L010x8 || STM32L010x6 || STM32L010x4 */
  769. /**
  770. * @}
  771. */
  772. /** @defgroup RCCEx_AHB_Force_Release_Reset AHB Peripheral Force Release Reset
  773. * @brief Force or release AHB peripheral reset.
  774. * @{
  775. */
  776. #if defined(STM32L062xx) || defined(STM32L063xx)|| defined(STM32L082xx) || defined(STM32L083xx) || defined(STM32L041xx) || defined(STM32L021xx)
  777. #define __HAL_RCC_AES_FORCE_RESET() SET_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_CRYPRST))
  778. #define __HAL_RCC_AES_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_CRYPRST))
  779. #endif /* STM32L062xx || STM32L063xx || STM32L072xx || STM32L073xx || STM32L082xx || STM32L083xx || STM32L041xx || STM32L021xx*/
  780. #if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L010xB) && !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) && !defined(STM32L051xx) && !defined(STM32L061xx) && !defined(STM32L071xx) && !defined(STM32L081xx)
  781. #define __HAL_RCC_TSC_FORCE_RESET() SET_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_TSCRST))
  782. #define __HAL_RCC_TSC_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_TSCRST))
  783. #define __HAL_RCC_RNG_FORCE_RESET() SET_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_RNGRST))
  784. #define __HAL_RCC_RNG_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_RNGRST))
  785. #endif /* !(STM32L010x4) && !(STM32L010x6) && !(STM32L010x8) && !(STM32L010xB) && !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx ) && !(STM32L041xx ) && !(STM32L051xx ) && !(STM32L061xx ) && !(STM32L071xx ) && !(STM32L081xx ) */
  786. /**
  787. * @}
  788. */
  789. /** @defgroup RCCEx_IOPORT_Force_Release_Reset IOPORT Peripheral Force Release Reset
  790. * @brief Force or release IOPORT peripheral reset.
  791. * @{
  792. */
  793. #if defined(STM32L073xx) || defined(STM32L083xx) \
  794. || defined(STM32L072xx) || defined(STM32L082xx) \
  795. || defined(STM32L071xx) || defined(STM32L081xx) \
  796. || defined(STM32L010xB)
  797. #define __HAL_RCC_GPIOE_FORCE_RESET() SET_BIT(RCC->IOPRSTR, (RCC_IOPRSTR_GPIOERST))
  798. #define __HAL_RCC_GPIOE_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR,(RCC_IOPRSTR_GPIOERST))
  799. #endif /* STM32L071xx || STM32L081xx || */
  800. /* STM32L072xx || STM32L082xx || */
  801. /* STM32L073xx || STM32L083xx || */
  802. /* STM32L010xB */
  803. #if !defined(STM32L010x4) && !defined(STM32L010x6) && !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx)
  804. #define __HAL_RCC_GPIOD_FORCE_RESET() SET_BIT(RCC->IOPRSTR, (RCC_IOPRSTR_GPIODRST))
  805. #define __HAL_RCC_GPIOD_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR,(RCC_IOPRSTR_GPIODRST))
  806. #endif /* !(STM32L010x4) && !(STM32L010x6) && !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx ) && !(STM32L041xx ) */
  807. /**
  808. * @}
  809. */
  810. /** @defgroup RCCEx_APB1_Force_Release_Reset APB1 Peripheral Force Release Reset
  811. * @brief Force or release APB1 peripheral reset.
  812. * @{
  813. */
  814. #if defined(STM32L053xx) || defined(STM32L063xx) \
  815. || defined(STM32L052xx) || defined(STM32L062xx) \
  816. || defined(STM32L051xx) || defined(STM32L061xx)
  817. #define __HAL_RCC_TIM2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM2RST))
  818. #define __HAL_RCC_TIM6_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM6RST))
  819. #define __HAL_RCC_LPTIM1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPTIM1RST))
  820. #define __HAL_RCC_I2C1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C1RST))
  821. #define __HAL_RCC_I2C2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C2RST))
  822. #define __HAL_RCC_USART2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART2RST))
  823. #define __HAL_RCC_LPUART1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPUART1RST))
  824. #define __HAL_RCC_SPI2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_SPI2RST))
  825. #define __HAL_RCC_DAC_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_DACRST))
  826. #define __HAL_RCC_TIM2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM2RST))
  827. #define __HAL_RCC_TIM6_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM6RST))
  828. #define __HAL_RCC_LPTIM1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPTIM1RST))
  829. #define __HAL_RCC_I2C1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C1RST))
  830. #define __HAL_RCC_I2C2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C2RST))
  831. #define __HAL_RCC_USART2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART2RST))
  832. #define __HAL_RCC_LPUART1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPUART1RST))
  833. #define __HAL_RCC_SPI2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_SPI2RST))
  834. #define __HAL_RCC_DAC_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_DACRST))
  835. #endif /* STM32L051xx || STM32L061xx || */
  836. /* STM32L052xx || STM32L062xx || */
  837. /* STM32L053xx || STM32L063xx */
  838. #if defined(STM32L011xx) || defined(STM32L021xx) || defined(STM32L031xx) || defined(STM32L041xx) || \
  839. defined(STM32L010xB) || defined(STM32L010x8) || defined(STM32L010x6) || defined(STM32L010x4)
  840. #define __HAL_RCC_TIM2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM2RST))
  841. #define __HAL_RCC_LPTIM1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPTIM1RST))
  842. #define __HAL_RCC_I2C1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C1RST))
  843. #define __HAL_RCC_USART2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART2RST))
  844. #define __HAL_RCC_LPUART1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPUART1RST))
  845. #define __HAL_RCC_TIM2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM2RST))
  846. #define __HAL_RCC_LPTIM1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPTIM1RST))
  847. #define __HAL_RCC_I2C1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C1RST))
  848. #define __HAL_RCC_USART2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART2RST))
  849. #define __HAL_RCC_LPUART1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPUART1RST))
  850. #endif /* STM32L031xx || STM32L041xx || STM32L011xx || STM32L021xx || */
  851. /* STM32L010xB || STM32L010x8 || STM32L010x6 || STM32L010x4 */
  852. #if defined(STM32L073xx) || defined(STM32L083xx) \
  853. || defined(STM32L072xx) || defined(STM32L082xx) \
  854. || defined(STM32L071xx) || defined(STM32L081xx)
  855. #define __HAL_RCC_TIM2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM2RST))
  856. #define __HAL_RCC_TIM3_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM3RST))
  857. #define __HAL_RCC_TIM6_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM6RST))
  858. #define __HAL_RCC_TIM7_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM7RST))
  859. #define __HAL_RCC_LPTIM1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPTIM1RST))
  860. #define __HAL_RCC_I2C1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C1RST))
  861. #define __HAL_RCC_I2C2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C2RST))
  862. #define __HAL_RCC_I2C3_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C3RST))
  863. #define __HAL_RCC_USART2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART2RST))
  864. #define __HAL_RCC_USART4_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART4RST))
  865. #define __HAL_RCC_USART5_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART5RST))
  866. #define __HAL_RCC_LPUART1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPUART1RST))
  867. #define __HAL_RCC_SPI2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_SPI2RST))
  868. #define __HAL_RCC_DAC_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_DACRST))
  869. #define __HAL_RCC_TIM2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM2RST))
  870. #define __HAL_RCC_TIM3_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM3RST))
  871. #define __HAL_RCC_TIM6_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM6RST))
  872. #define __HAL_RCC_TIM7_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM7RST))
  873. #define __HAL_RCC_LPTIM1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPTIM1RST))
  874. #define __HAL_RCC_I2C1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C1RST))
  875. #define __HAL_RCC_I2C2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C2RST))
  876. #define __HAL_RCC_I2C3_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C3RST))
  877. #define __HAL_RCC_USART2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART2RST))
  878. #define __HAL_RCC_USART4_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART4RST))
  879. #define __HAL_RCC_USART5_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART5RST))
  880. #define __HAL_RCC_LPUART1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPUART1RST))
  881. #define __HAL_RCC_SPI2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_SPI2RST))
  882. #define __HAL_RCC_DAC_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_DACRST))
  883. #endif /* STM32L071xx || STM32L081xx || */
  884. /* STM32L072xx || STM32L082xx || */
  885. /* STM32L073xx || STM32L083xx || */
  886. #if !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) && \
  887. !defined(STM32L051xx) && !defined(STM32L061xx) && !defined(STM32L071xx) && !defined(STM32L081xx) && \
  888. !defined(STM32L010xB) && !defined(STM32L010x8) && !defined(STM32L010x6) && !defined(STM32L010x4)
  889. #define __HAL_RCC_USB_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USBRST))
  890. #define __HAL_RCC_USB_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USBRST))
  891. #define __HAL_RCC_CRS_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_CRSRST))
  892. #define __HAL_RCC_CRS_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR,(RCC_APB1RSTR_CRSRST))
  893. #endif /* !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx) && !(STM32L041xx) && */
  894. /* !(STM32L051xx) && !(STM32L061xx) && !(STM32L071xx) && !(STM32L081xx) && */
  895. /* !(STM32L010xB) && !(STM32L010x8) && !(STM32L010x6) && !(STM32L010x4) && */
  896. #if defined(STM32L053xx) || defined(STM32L063xx) || defined(STM32L073xx) || defined(STM32L083xx)
  897. #define __HAL_RCC_LCD_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LCDRST))
  898. #define __HAL_RCC_LCD_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LCDRST))
  899. #endif /* STM32L053xx || STM32L063xx || STM32L073xx || STM32L083xx */
  900. /**
  901. * @}
  902. */
  903. #if defined(STM32L053xx) || defined(STM32L063xx) || defined(STM32L073xx) || defined(STM32L083xx) \
  904. || defined(STM32L052xx) || defined(STM32L062xx) || defined(STM32L072xx) || defined(STM32L082xx) \
  905. || defined(STM32L051xx) || defined(STM32L061xx) || defined(STM32L071xx) || defined(STM32L081xx)
  906. /** @defgroup RCCEx_APB2_Force_Release_Reset APB2 Peripheral Force Release Reset
  907. * @brief Force or release APB2 peripheral reset.
  908. * @{
  909. */
  910. #define __HAL_RCC_USART1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_USART1RST))
  911. #define __HAL_RCC_ADC1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_ADC1RST))
  912. #define __HAL_RCC_SPI1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_SPI1RST))
  913. #define __HAL_RCC_TIM21_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM21RST))
  914. #define __HAL_RCC_TIM22_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM22RST))
  915. #define __HAL_RCC_USART1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_USART1RST))
  916. #define __HAL_RCC_ADC1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_ADC1RST))
  917. #define __HAL_RCC_SPI1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_SPI1RST))
  918. #define __HAL_RCC_TIM21_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM21RST))
  919. #define __HAL_RCC_TIM22_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM22RST))
  920. #endif /* STM32L051xx || STM32L061xx || STM32L071xx || STM32L081xx || */
  921. /* STM32L052xx || STM32L062xx || STM32L072xx || STM32L082xx || */
  922. /* STM32L053xx || STM32L063xx || STM32L073xx || STM32L083xx || */
  923. #if defined(STM32L011xx) || defined(STM32L021xx) || defined(STM32L031xx) || defined(STM32L041xx) || \
  924. defined(STM32L010xB) || defined(STM32L010x8) || defined(STM32L010x6) || defined(STM32L010x4)
  925. #define __HAL_RCC_ADC1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_ADC1RST))
  926. #define __HAL_RCC_SPI1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_SPI1RST))
  927. #define __HAL_RCC_TIM21_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM21RST))
  928. #if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx)
  929. #define __HAL_RCC_TIM22_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM22RST))
  930. #endif
  931. #define __HAL_RCC_ADC1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_ADC1RST))
  932. #define __HAL_RCC_SPI1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_SPI1RST))
  933. #define __HAL_RCC_TIM21_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM21RST))
  934. #if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx)
  935. #define __HAL_RCC_TIM22_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM22RST))
  936. #endif
  937. #endif /* STM32L031xx || STM32L041xx || STM32L011xx || STM32L021xx || */
  938. /* STM32L010xB || STM32L010x8 || STM32L010x6 || STM32L010x4 */
  939. /**
  940. * @}
  941. */
  942. /** @defgroup RCCEx_AHB_Clock_Sleep_Enable_Disable AHB Peripheral Clock Sleep Enable Disable
  943. * @brief Enable or disable the AHB peripheral clock during Low Power (Sleep) mode.
  944. * @note Peripheral clock gating in SLEEP mode can be used to further reduce
  945. * power consumption.
  946. * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
  947. * @note By default, all peripheral clocks are enabled during SLEEP mode.
  948. * @{
  949. */
  950. #if !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) && \
  951. !defined(STM32L051xx) && !defined(STM32L061xx) && !defined(STM32L071xx) && !defined(STM32L081xx) && \
  952. !defined(STM32L010xB) && !defined(STM32L010x8) && !defined(STM32L010x6) && !defined(STM32L010x4)
  953. #define __HAL_RCC_TSC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_TSCSMEN))
  954. #define __HAL_RCC_RNG_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_RNGSMEN))
  955. #define __HAL_RCC_TSC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_TSCSMEN))
  956. #define __HAL_RCC_RNG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_RNGSMEN))
  957. #define __HAL_RCC_TSC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_TSCSMEN) != 0U)
  958. #define __HAL_RCC_RNG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_RNGSMEN) != 0U)
  959. #define __HAL_RCC_TSC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_TSCSMEN) == 0U)
  960. #define __HAL_RCC_RNG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_RNGSMEN) == 0U)
  961. #endif /* !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx) && !(STM32L041xx) && */
  962. /* !(STM32L051xx) && !(STM32L061xx) && !(STM32L071xx) && !(STM32L081xx) && */
  963. /* !(STM32L010xB) && !(STM32L010x8) && !(STM32L010x6) && !(STM32L010x4) && */
  964. #if defined(STM32L062xx) || defined(STM32L063xx)|| defined(STM32L082xx) || defined(STM32L083xx) || defined(STM32L041xx)
  965. #define __HAL_RCC_AES_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBLPENR, (RCC_AHBSMENR_CRYPSMEN))
  966. #define __HAL_RCC_AES_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBLPENR, (RCC_AHBSMENR_CRYPSMEN))
  967. #define __HAL_RCC_AES_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBLPENR, RCC_AHBSMENR_CRYPSMEN) != 0U)
  968. #define __HAL_RCC_AES_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBLPENR, RCC_AHBSMENR_CRYPSMEN) == 0U)
  969. #endif /* STM32L062xx || STM32L063xx || STM32L072xx || STM32L073xx || STM32L082xx || STM32L083xx || STM32L041xx */
  970. /**
  971. * @}
  972. */
  973. /** @defgroup RCCEx_IOPORT_Clock_Sleep_Enable_Disable IOPORT Peripheral Clock Sleep Enable Disable
  974. * @brief Enable or disable the IOPORT peripheral clock during Low Power (Sleep) mode.
  975. * @note Peripheral clock gating in SLEEP mode can be used to further reduce
  976. * power consumption.
  977. * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
  978. * @note By default, all peripheral clocks are enabled during SLEEP mode.
  979. * @{
  980. */
  981. #if defined(STM32L073xx) || defined(STM32L083xx) \
  982. || defined(STM32L072xx) || defined(STM32L082xx) \
  983. || defined(STM32L071xx) || defined(STM32L081xx) \
  984. || defined(STM32L010xB)
  985. #define __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, (RCC_IOPSMENR_GPIOESMEN))
  986. #define __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR,(RCC_IOPSMENR_GPIOESMEN))
  987. #define __HAL_RCC_GPIOE_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOESMEN) != 0U)
  988. #define __HAL_RCC_GPIOE_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOESMEN) == 0U)
  989. #endif /* STM32L071xx || STM32L081xx || */
  990. /* STM32L072xx || STM32L082xx || */
  991. /* STM32L073xx || STM32L083xx || */
  992. /* STM32L010xB */
  993. #if !defined(STM32L010x4) && !defined(STM32L010x6) && !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx)
  994. #define __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, (RCC_IOPSMENR_GPIODSMEN))
  995. #define __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR,(RCC_IOPSMENR_GPIODSMEN))
  996. #define __HAL_RCC_GPIOD_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIODSMEN) != 0U)
  997. #define __HAL_RCC_GPIOD_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIODSMEN) == 0U)
  998. #endif /* !(STM32L010x4) && !(STM32L010x6) && !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx ) && !(STM32L041xx ) */
  999. /**
  1000. * @}
  1001. */
  1002. /** @defgroup RCCEx_APB1_Clock_Sleep_Enable_Disable APB1 Peripheral Clock Sleep Enable Disable
  1003. * @brief Enable or disable the APB1 peripheral clock during Low Power (Sleep) mode.
  1004. * @note Peripheral clock gating in SLEEP mode can be used to further reduce
  1005. * power consumption.
  1006. * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
  1007. * @note By default, all peripheral clocks are enabled during SLEEP mode.
  1008. * @{
  1009. */
  1010. #if defined(STM32L053xx) || defined(STM32L063xx) \
  1011. || defined(STM32L052xx) || defined(STM32L062xx) \
  1012. || defined(STM32L051xx) || defined(STM32L061xx)
  1013. #define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM2SMEN))
  1014. #define __HAL_RCC_TIM6_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM6SMEN))
  1015. #define __HAL_RCC_SPI2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_SPI2SMEN))
  1016. #define __HAL_RCC_USART2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART2SMEN))
  1017. #define __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPUART1SMEN))
  1018. #define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C1SMEN))
  1019. #define __HAL_RCC_I2C2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C2SMEN))
  1020. #define __HAL_RCC_DAC_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_DACSMEN))
  1021. #define __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPTIM1SMEN))
  1022. #define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM2SMEN))
  1023. #define __HAL_RCC_TIM6_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM6SMEN))
  1024. #define __HAL_RCC_SPI2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_SPI2SMEN))
  1025. #define __HAL_RCC_USART2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART2SMEN))
  1026. #define __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPUART1SMEN))
  1027. #define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C1SMEN))
  1028. #define __HAL_RCC_I2C2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C2SMEN))
  1029. #define __HAL_RCC_DAC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_DACSMEN))
  1030. #define __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPTIM1SMEN))
  1031. #define __HAL_RCC_TIM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM2SMEN) != 0U)
  1032. #define __HAL_RCC_TIM6_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM6SMEN) != 0U)
  1033. #define __HAL_RCC_SPI2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_SPI2SMEN) != 0U)
  1034. #define __HAL_RCC_USART2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART2SMEN) != 0U)
  1035. #define __HAL_RCC_LPUART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPUART1SMEN) != 0U)
  1036. #define __HAL_RCC_I2C1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C1SMEN) != 0U)
  1037. #define __HAL_RCC_I2C2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C2SMEN) != 0U)
  1038. #define __HAL_RCC_DAC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_DACSMEN) != 0U)
  1039. #define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPTIM1SMEN) != 0U)
  1040. #define __HAL_RCC_TIM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM2SMEN) == 0U)
  1041. #define __HAL_RCC_TIM6_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM6SMEN) == 0U)
  1042. #define __HAL_RCC_SPI2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_SPI2SMEN) == 0U)
  1043. #define __HAL_RCC_USART2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART2SMEN) == 0U)
  1044. #define __HAL_RCC_LPUART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPUART1SMEN) == 0U)
  1045. #define __HAL_RCC_I2C1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C1SMEN) == 0U)
  1046. #define __HAL_RCC_I2C2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C2SMEN) == 0U)
  1047. #define __HAL_RCC_DAC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_DACSMEN) == 0U)
  1048. #define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPTIM1SMEN) == 0U)
  1049. #endif /* STM32L051xx || STM32L061xx || */
  1050. /* STM32L052xx || STM32L062xx || */
  1051. /* STM32L053xx || STM32L063xx */
  1052. #if defined(STM32L073xx) || defined(STM32L083xx) \
  1053. || defined(STM32L072xx) || defined(STM32L082xx) \
  1054. || defined(STM32L071xx) || defined(STM32L081xx)
  1055. #define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM2SMEN))
  1056. #define __HAL_RCC_TIM3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM3SMEN))
  1057. #define __HAL_RCC_TIM6_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM6SMEN))
  1058. #define __HAL_RCC_TIM7_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM7SMEN))
  1059. #define __HAL_RCC_SPI2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_SPI2SMEN))
  1060. #define __HAL_RCC_USART2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART2SMEN))
  1061. #define __HAL_RCC_USART4_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART4SMEN))
  1062. #define __HAL_RCC_USART5_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART5SMEN))
  1063. #define __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPUART1SMEN))
  1064. #define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C1SMEN))
  1065. #define __HAL_RCC_I2C2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C2SMEN))
  1066. #define __HAL_RCC_I2C3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C3SMEN))
  1067. #define __HAL_RCC_DAC_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_DACSMEN))
  1068. #define __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPTIM1SMEN))
  1069. #define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM2SMEN))
  1070. #define __HAL_RCC_TIM3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM3SMEN))
  1071. #define __HAL_RCC_TIM6_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM6SMEN))
  1072. #define __HAL_RCC_TIM7_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM7SMEN))
  1073. #define __HAL_RCC_SPI2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_SPI2SMEN))
  1074. #define __HAL_RCC_USART2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART2SMEN))
  1075. #define __HAL_RCC_USART4_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART4SMEN))
  1076. #define __HAL_RCC_USART5_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART5SMEN))
  1077. #define __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPUART1SMEN))
  1078. #define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C1SMEN))
  1079. #define __HAL_RCC_I2C2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C2SMEN))
  1080. #define __HAL_RCC_I2C3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C3SMEN))
  1081. #define __HAL_RCC_DAC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_DACSMEN))
  1082. #define __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPTIM1SMEN))
  1083. #define __HAL_RCC_TIM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM2SMEN) != 0U)
  1084. #define __HAL_RCC_TIM3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM3SMEN) != 0U)
  1085. #define __HAL_RCC_TIM6_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM6SMEN) != 0U)
  1086. #define __HAL_RCC_TIM7_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM7SMEN) != 0U)
  1087. #define __HAL_RCC_SPI2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_SPI2SMEN) != 0U)
  1088. #define __HAL_RCC_USART2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART2SMEN) != 0U)
  1089. #define __HAL_RCC_USART4_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART4SMEN) != 0U)
  1090. #define __HAL_RCC_USART5_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART5SMEN) != 0U)
  1091. #define __HAL_RCC_LPUART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPUART1SMEN) != 0U)
  1092. #define __HAL_RCC_I2C1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C1SMEN) != 0U)
  1093. #define __HAL_RCC_I2C2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C2SMEN) != 0U)
  1094. #define __HAL_RCC_I2C3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C3SMEN) != 0U)
  1095. #define __HAL_RCC_DAC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_DACSMEN) != 0U)
  1096. #define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPTIM1SMEN) != 0U)
  1097. #define __HAL_RCC_TIM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM2SMEN) == 0U)
  1098. #define __HAL_RCC_TIM3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM3SMEN) == 0U)
  1099. #define __HAL_RCC_TIM6_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM6SMEN) == 0U)
  1100. #define __HAL_RCC_TIM7_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM7SMEN) == 0U)
  1101. #define __HAL_RCC_SPI2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_SPI2SMEN) == 0U)
  1102. #define __HAL_RCC_USART2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART2SMEN) == 0U)
  1103. #define __HAL_RCC_USART4_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART4SMEN) == 0U)
  1104. #define __HAL_RCC_USART5_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART5SMEN) == 0U)
  1105. #define __HAL_RCC_LPUART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPUART1SMEN) == 0U)
  1106. #define __HAL_RCC_I2C1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C1SMEN) == 0U)
  1107. #define __HAL_RCC_I2C2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C2SMEN) == 0U)
  1108. #define __HAL_RCC_I2C3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C3SMEN) == 0U)
  1109. #define __HAL_RCC_DAC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_DACSMEN) == 0U)
  1110. #define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPTIM1SMEN) == 0U)
  1111. #endif /* STM32L071xx || STM32L081xx || */
  1112. /* STM32L072xx || STM32L082xx || */
  1113. /* STM32L073xx || STM32L083xx || */
  1114. #if defined(STM32L011xx) || defined(STM32L021xx) || defined(STM32L031xx) || defined(STM32L041xx) || \
  1115. defined(STM32L010xB) || defined(STM32L010x8) || defined(STM32L010x6) || defined(STM32L010x4)
  1116. #define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM2SMEN))
  1117. #define __HAL_RCC_USART2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART2SMEN))
  1118. #define __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPUART1SMEN))
  1119. #define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C1SMEN))
  1120. #define __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPTIM1SMEN))
  1121. #define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM2SMEN))
  1122. #define __HAL_RCC_USART2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART2SMEN))
  1123. #define __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPUART1SMEN))
  1124. #define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C1SMEN))
  1125. #define __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPTIM1SMEN))
  1126. #define __HAL_RCC_TIM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM2SMEN) != 0U)
  1127. #define __HAL_RCC_USART2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART2SMEN) != 0U)
  1128. #define __HAL_RCC_LPUART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPUART1SMEN) != 0U)
  1129. #define __HAL_RCC_I2C1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C1SMEN) != 0U)
  1130. #define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPTIM1SMEN) != 0U)
  1131. #define __HAL_RCC_TIM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM2SMEN) == 0U)
  1132. #define __HAL_RCC_USART2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART2SMEN) == 0U)
  1133. #define __HAL_RCC_LPUART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPUART1SMEN) == 0U)
  1134. #define __HAL_RCC_I2C1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C1SMEN) == 0U)
  1135. #define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPTIM1SMEN) == 0U)
  1136. #endif /* STM32L031xx || STM32L041xx || STM32L011xx || STM32L021xx */
  1137. /* STM32L010xB || STM32L010x8 || STM32L010x6 || STM32L010x4 */
  1138. #if !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) && \
  1139. !defined(STM32L051xx) && !defined(STM32L061xx) && !defined(STM32L071xx) && !defined(STM32L081xx) && \
  1140. !defined(STM32L010xB) && !defined(STM32L010x8) && !defined(STM32L010x6) && !defined(STM32L010x4)
  1141. #define __HAL_RCC_USB_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USBSMEN))
  1142. #define __HAL_RCC_USB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USBSMEN))
  1143. #define __HAL_RCC_CRS_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_CRSSMEN))
  1144. #define __HAL_RCC_CRS_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_CRSSMEN))
  1145. #define __HAL_RCC_USB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USBSMEN) != 0U)
  1146. #define __HAL_RCC_USB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USBSMEN) == 0U)
  1147. #define __HAL_RCC_CRS_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_CRSSMEN) != 0U)
  1148. #define __HAL_RCC_CRS_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_CRSSMEN) == 0U)
  1149. #endif /* !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx) && !(STM32L041xx) && */
  1150. /* !(STM32L051xx) && !(STM32L061xx) && !(STM32L071xx) && !(STM32L081xx) && */
  1151. /* !(STM32L010xB) && !(STM32L010x8) && !(STM32L010x6) && !(STM32L010x4) */
  1152. #if defined(STM32L053xx) || defined(STM32L063xx) || defined(STM32L073xx) || defined(STM32L083xx)
  1153. #define __HAL_RCC_LCD_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LCDSMEN))
  1154. #define __HAL_RCC_LCD_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LCDSMEN))
  1155. #define __HAL_RCC_LCD_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LCDSMEN) != 0U)
  1156. #define __HAL_RCC_LCD_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LCDSMEN) == 0U)
  1157. #endif /* STM32L053xx || STM32L063xx || STM32L073xx || STM32L083xx */
  1158. /**
  1159. * @}
  1160. */
  1161. #if defined(STM32L053xx) || defined(STM32L063xx) || defined(STM32L073xx) || defined(STM32L083xx) \
  1162. || defined(STM32L052xx) || defined(STM32L062xx) || defined(STM32L072xx) || defined(STM32L082xx) \
  1163. || defined(STM32L051xx) || defined(STM32L061xx) || defined(STM32L071xx) || defined(STM32L081xx) \
  1164. || defined(STM32L031xx) || defined(STM32L041xx) || defined(STM32L011xx) || defined(STM32L021xx) \
  1165. || defined(STM32L010xB) || defined(STM32L010x8) || defined(STM32L010x6) || defined(STM32L010x4)
  1166. /** @defgroup RCCEx_APB2_Clock_Sleep_Enable_Disable APB2 Peripheral Clock Sleep Enable Disable
  1167. * @brief Enable or disable the APB2 peripheral clock during Low Power (Sleep) mode.
  1168. * @note Peripheral clock gating in SLEEP mode can be used to further reduce
  1169. * power consumption.
  1170. * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
  1171. * @note By default, all peripheral clocks are enabled during SLEEP mode.
  1172. * @{
  1173. */
  1174. #define __HAL_RCC_TIM21_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_TIM21SMEN))
  1175. #if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx)
  1176. #define __HAL_RCC_TIM22_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_TIM22SMEN))
  1177. #endif
  1178. #define __HAL_RCC_ADC1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_ADC1SMEN))
  1179. #define __HAL_RCC_SPI1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_SPI1SMEN))
  1180. #define __HAL_RCC_USART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_USART1SMEN))
  1181. #define __HAL_RCC_TIM21_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_TIM21SMEN))
  1182. #if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx)
  1183. #define __HAL_RCC_TIM22_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_TIM22SMEN))
  1184. #endif
  1185. #define __HAL_RCC_ADC1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_ADC1SMEN))
  1186. #define __HAL_RCC_SPI1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_SPI1SMEN))
  1187. #define __HAL_RCC_USART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_USART1SMEN))
  1188. #define __HAL_RCC_TIM21_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM21SMEN) != 0U)
  1189. #if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx)
  1190. #define __HAL_RCC_TIM22_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM22SMEN) != 0U)
  1191. #endif
  1192. #define __HAL_RCC_ADC1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_ADC1SMEN) != 0U)
  1193. #define __HAL_RCC_SPI1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SPI1SMEN) != 0U)
  1194. #define __HAL_RCC_USART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_USART1SMEN) != 0U)
  1195. #define __HAL_RCC_TIM21_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_TIM21SMEN) == 0U)
  1196. #if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx)
  1197. #define __HAL_RCC_TIM22_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_TIM22SMEN) == 0U)
  1198. #endif
  1199. #define __HAL_RCC_ADC1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_ADC1SMEN) == 0U)
  1200. #define __HAL_RCC_SPI1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_SPI1SMEN) == 0U)
  1201. #define __HAL_RCC_USART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_USART1SMEN) == 0U)
  1202. /**
  1203. * @}
  1204. */
  1205. #endif /* STM32L051xx || STM32L061xx || STM32L071xx || STM32L081xx || */
  1206. /* STM32L052xx || STM32L062xx || STM32L072xx || STM32L082xx || */
  1207. /* STM32L053xx || STM32L063xx || STM32L073xx || STM32L083xx || */
  1208. /* STM32L031xx || STM32L041xx || STM32L011xx || STM32L021xx || */
  1209. /* STM32L010xB || STM32L010x8 || STM32L010x6 || STM32L010x4 */
  1210. /**
  1211. * @brief Enable interrupt on RCC LSE CSS EXTI Line 19.
  1212. * @retval None
  1213. */
  1214. #define __HAL_RCC_LSECSS_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR, RCC_EXTI_LINE_LSECSS)
  1215. /**
  1216. * @brief Disable interrupt on RCC LSE CSS EXTI Line 19.
  1217. * @retval None
  1218. */
  1219. #define __HAL_RCC_LSECSS_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR, RCC_EXTI_LINE_LSECSS)
  1220. /**
  1221. * @brief Enable event on RCC LSE CSS EXTI Line 19.
  1222. * @retval None.
  1223. */
  1224. #define __HAL_RCC_LSECSS_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR, RCC_EXTI_LINE_LSECSS)
  1225. /**
  1226. * @brief Disable event on RCC LSE CSS EXTI Line 19.
  1227. * @retval None.
  1228. */
  1229. #define __HAL_RCC_LSECSS_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR, RCC_EXTI_LINE_LSECSS)
  1230. /**
  1231. * @brief RCC LSE CSS EXTI line configuration: set falling edge trigger.
  1232. * @retval None.
  1233. */
  1234. #define __HAL_RCC_LSECSS_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR, RCC_EXTI_LINE_LSECSS)
  1235. /**
  1236. * @brief Disable the RCC LSE CSS Extended Interrupt Falling Trigger.
  1237. * @retval None.
  1238. */
  1239. #define __HAL_RCC_LSECSS_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR, RCC_EXTI_LINE_LSECSS)
  1240. /**
  1241. * @brief RCC LSE CSS EXTI line configuration: set rising edge trigger.
  1242. * @retval None.
  1243. */
  1244. #define __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR, RCC_EXTI_LINE_LSECSS)
  1245. /**
  1246. * @brief Disable the RCC LSE CSS Extended Interrupt Rising Trigger.
  1247. * @retval None.
  1248. */
  1249. #define __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR, RCC_EXTI_LINE_LSECSS)
  1250. /**
  1251. * @brief RCC LSE CSS EXTI line configuration: set rising & falling edge trigger.
  1252. * @retval None.
  1253. */
  1254. #define __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_FALLING_EDGE() \
  1255. do { \
  1256. __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_EDGE(); \
  1257. __HAL_RCC_LSECSS_EXTI_ENABLE_FALLING_EDGE(); \
  1258. } while(0)
  1259. /**
  1260. * @brief Disable the RCC LSE CSS Extended Interrupt Rising & Falling Trigger.
  1261. * @retval None.
  1262. */
  1263. #define __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_FALLING_EDGE() \
  1264. do { \
  1265. __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_EDGE(); \
  1266. __HAL_RCC_LSECSS_EXTI_DISABLE_FALLING_EDGE(); \
  1267. } while(0)
  1268. /**
  1269. * @brief Check whether the specified RCC LSE CSS EXTI interrupt flag is set or not.
  1270. * @retval EXTI RCC LSE CSS Line Status.
  1271. */
  1272. #define __HAL_RCC_LSECSS_EXTI_GET_FLAG() (EXTI->PR & (RCC_EXTI_LINE_LSECSS))
  1273. /**
  1274. * @brief Clear the RCC LSE CSS EXTI flag.
  1275. * @retval None.
  1276. */
  1277. #define __HAL_RCC_LSECSS_EXTI_CLEAR_FLAG() (EXTI->PR = (RCC_EXTI_LINE_LSECSS))
  1278. /**
  1279. * @brief Generate a Software interrupt on selected EXTI line.
  1280. * @retval None.
  1281. */
  1282. #define __HAL_RCC_LSECSS_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER, RCC_EXTI_LINE_LSECSS)
  1283. #if defined(LCD)
  1284. /** @defgroup RCCEx_LCD_Configuration LCD Configuration
  1285. * @brief Macros to configure clock source of LCD peripherals.
  1286. * @{
  1287. */
  1288. /** @brief Macro to configures LCD clock (LCDCLK).
  1289. * @note LCD and RTC use the same configuration
  1290. * @note LCD can however be used in the Stop low power mode if the LSE or LSI is used as the
  1291. * LCD clock source.
  1292. *
  1293. * @param __LCD_CLKSOURCE__ specifies the LCD clock source.
  1294. * This parameter can be one of the following values:
  1295. * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as LCD clock
  1296. * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as LCD clock
  1297. * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV2 HSE divided by 2 selected as LCD clock
  1298. * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV4 HSE divided by 4 selected as LCD clock
  1299. * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV8 HSE divided by 8 selected as LCD clock
  1300. * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV16 HSE divided by 16 selected as LCD clock
  1301. */
  1302. #define __HAL_RCC_LCD_CONFIG(__LCD_CLKSOURCE__) __HAL_RCC_RTC_CONFIG(__LCD_CLKSOURCE__)
  1303. /** @brief Macro to get the LCD clock source.
  1304. */
  1305. #define __HAL_RCC_GET_LCD_SOURCE() __HAL_RCC_GET_RTC_SOURCE()
  1306. /** @brief Macro to get the LCD clock pre-scaler.
  1307. */
  1308. #define __HAL_RCC_GET_LCD_HSE_PRESCALER() __HAL_RCC_GET_RTC_HSE_PRESCALER()
  1309. /**
  1310. * @}
  1311. */
  1312. #endif /* LCD */
  1313. /** @brief Macro to configure the I2C1 clock (I2C1CLK).
  1314. *
  1315. * @param __I2C1_CLKSOURCE__ specifies the I2C1 clock source.
  1316. * This parameter can be one of the following values:
  1317. * @arg @ref RCC_I2C1CLKSOURCE_PCLK1 PCLK1 selected as I2C1 clock
  1318. * @arg @ref RCC_I2C1CLKSOURCE_HSI HSI selected as I2C1 clock
  1319. * @arg @ref RCC_I2C1CLKSOURCE_SYSCLK System Clock selected as I2C1 clock
  1320. */
  1321. #define __HAL_RCC_I2C1_CONFIG(__I2C1_CLKSOURCE__) \
  1322. MODIFY_REG(RCC->CCIPR, RCC_CCIPR_I2C1SEL, (uint32_t)(__I2C1_CLKSOURCE__))
  1323. /** @brief Macro to get the I2C1 clock source.
  1324. * @retval The clock source can be one of the following values:
  1325. * @arg @ref RCC_I2C1CLKSOURCE_PCLK1 PCLK1 selected as I2C1 clock
  1326. * @arg @ref RCC_I2C1CLKSOURCE_HSI HSI selected as I2C1 clock
  1327. * @arg @ref RCC_I2C1CLKSOURCE_SYSCLK System Clock selected as I2C1 clock
  1328. */
  1329. #define __HAL_RCC_GET_I2C1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_I2C1SEL)))
  1330. #if defined(RCC_CCIPR_I2C3SEL)
  1331. /** @brief Macro to configure the I2C3 clock (I2C3CLK).
  1332. *
  1333. * @param __I2C3_CLKSOURCE__ specifies the I2C3 clock source.
  1334. * This parameter can be one of the following values:
  1335. * @arg @ref RCC_I2C3CLKSOURCE_PCLK1 PCLK1 selected as I2C3 clock
  1336. * @arg @ref RCC_I2C3CLKSOURCE_HSI HSI selected as I2C3 clock
  1337. * @arg @ref RCC_I2C3CLKSOURCE_SYSCLK System Clock selected as I2C3 clock
  1338. */
  1339. #define __HAL_RCC_I2C3_CONFIG(__I2C3_CLKSOURCE__) \
  1340. MODIFY_REG(RCC->CCIPR, RCC_CCIPR_I2C3SEL, (uint32_t)(__I2C3_CLKSOURCE__))
  1341. /** @brief Macro to get the I2C3 clock source.
  1342. * @retval The clock source can be one of the following values:
  1343. * @arg @ref RCC_I2C3CLKSOURCE_PCLK1 PCLK1 selected as I2C3 clock
  1344. * @arg @ref RCC_I2C3CLKSOURCE_HSI HSI selected as I2C3 clock
  1345. * @arg @ref RCC_I2C3CLKSOURCE_SYSCLK System Clock selected as I2C3 clock
  1346. */
  1347. #define __HAL_RCC_GET_I2C3_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_I2C3SEL)))
  1348. #endif /* RCC_CCIPR_I2C3SEL */
  1349. #if defined (RCC_CCIPR_USART1SEL)
  1350. /** @brief Macro to configure the USART1 clock (USART1CLK).
  1351. *
  1352. * @param __USART1_CLKSOURCE__ specifies the USART1 clock source.
  1353. * This parameter can be one of the following values:
  1354. * @arg @ref RCC_USART1CLKSOURCE_PCLK2 PCLK2 selected as USART1 clock
  1355. * @arg @ref RCC_USART1CLKSOURCE_HSI HSI selected as USART1 clock
  1356. * @arg @ref RCC_USART1CLKSOURCE_SYSCLK System Clock selected as USART1 clock
  1357. * @arg @ref RCC_USART1CLKSOURCE_LSE LSE selected as USART1 clock
  1358. */
  1359. #define __HAL_RCC_USART1_CONFIG(__USART1_CLKSOURCE__) \
  1360. MODIFY_REG(RCC->CCIPR, RCC_CCIPR_USART1SEL, (uint32_t)(__USART1_CLKSOURCE__))
  1361. /** @brief Macro to get the USART1 clock source.
  1362. * @retval The clock source can be one of the following values:
  1363. * @arg @ref RCC_USART1CLKSOURCE_PCLK2 PCLK2 selected as USART1 clock
  1364. * @arg @ref RCC_USART1CLKSOURCE_HSI HSI selected as USART1 clock
  1365. * @arg @ref RCC_USART1CLKSOURCE_SYSCLK System Clock selected as USART1 clock
  1366. * @arg @ref RCC_USART1CLKSOURCE_LSE LSE selected as USART1 clock
  1367. */
  1368. #define __HAL_RCC_GET_USART1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_USART1SEL)))
  1369. #endif /* RCC_CCIPR_USART1SEL */
  1370. /** @brief Macro to configure the USART2 clock (USART2CLK).
  1371. *
  1372. * @param __USART2_CLKSOURCE__ specifies the USART2 clock source.
  1373. * This parameter can be one of the following values:
  1374. * @arg @ref RCC_USART2CLKSOURCE_PCLK1 PCLK1 selected as USART2 clock
  1375. * @arg @ref RCC_USART2CLKSOURCE_HSI HSI selected as USART2 clock
  1376. * @arg @ref RCC_USART2CLKSOURCE_SYSCLK System Clock selected as USART2 clock
  1377. * @arg @ref RCC_USART2CLKSOURCE_LSE LSE selected as USART2 clock
  1378. */
  1379. #define __HAL_RCC_USART2_CONFIG(__USART2_CLKSOURCE__) \
  1380. MODIFY_REG(RCC->CCIPR, RCC_CCIPR_USART2SEL, (uint32_t)(__USART2_CLKSOURCE__))
  1381. /** @brief Macro to get the USART2 clock source.
  1382. * @retval The clock source can be one of the following values:
  1383. * @arg @ref RCC_USART2CLKSOURCE_PCLK1 PCLK1 selected as USART2 clock
  1384. * @arg @ref RCC_USART2CLKSOURCE_HSI HSI selected as USART2 clock
  1385. * @arg @ref RCC_USART2CLKSOURCE_SYSCLK System Clock selected as USART2 clock
  1386. * @arg @ref RCC_USART2CLKSOURCE_LSE LSE selected as USART2 clock
  1387. */
  1388. #define __HAL_RCC_GET_USART2_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_USART2SEL)))
  1389. /** @brief Macro to configure the LPUART1 clock (LPUART1CLK).
  1390. *
  1391. * @param __LPUART1_CLKSOURCE__ specifies the LPUART1 clock source.
  1392. * This parameter can be one of the following values:
  1393. * @arg @ref RCC_LPUART1CLKSOURCE_PCLK1 PCLK1 selected as LPUART1 clock
  1394. * @arg @ref RCC_LPUART1CLKSOURCE_HSI HSI selected as LPUART1 clock
  1395. * @arg @ref RCC_LPUART1CLKSOURCE_SYSCLK System Clock selected as LPUART1 clock
  1396. * @arg @ref RCC_LPUART1CLKSOURCE_LSE LSE selected as LPUART1 clock
  1397. */
  1398. #define __HAL_RCC_LPUART1_CONFIG(__LPUART1_CLKSOURCE__) \
  1399. MODIFY_REG(RCC->CCIPR, RCC_CCIPR_LPUART1SEL, (uint32_t)(__LPUART1_CLKSOURCE__))
  1400. /** @brief Macro to get the LPUART1 clock source.
  1401. * @retval The clock source can be one of the following values:
  1402. * @arg @ref RCC_LPUART1CLKSOURCE_PCLK1 PCLK1 selected as LPUART1 clock
  1403. * @arg @ref RCC_LPUART1CLKSOURCE_HSI HSI selected as LPUART1 clock
  1404. * @arg @ref RCC_LPUART1CLKSOURCE_SYSCLK System Clock selected as LPUART1 clock
  1405. * @arg @ref RCC_LPUART1CLKSOURCE_LSE LSE selected as LPUART1 clock
  1406. */
  1407. #define __HAL_RCC_GET_LPUART1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_LPUART1SEL)))
  1408. /** @brief Macro to configure the LPTIM1 clock (LPTIM1CLK).
  1409. *
  1410. * @param __LPTIM1_CLKSOURCE__ specifies the LPTIM1 clock source.
  1411. * This parameter can be one of the following values:
  1412. * @arg @ref RCC_LPTIM1CLKSOURCE_PCLK1 PCLK1 selected as LPTIM1 clock
  1413. * @arg @ref RCC_LPTIM1CLKSOURCE_LSI HSI selected as LPTIM1 clock
  1414. * @arg @ref RCC_LPTIM1CLKSOURCE_HSI LSI selected as LPTIM1 clock
  1415. * @arg @ref RCC_LPTIM1CLKSOURCE_LSE LSE selected as LPTIM1 clock
  1416. */
  1417. #define __HAL_RCC_LPTIM1_CONFIG(__LPTIM1_CLKSOURCE__) \
  1418. MODIFY_REG(RCC->CCIPR, RCC_CCIPR_LPTIM1SEL, (uint32_t)(__LPTIM1_CLKSOURCE__))
  1419. /** @brief Macro to get the LPTIM1 clock source.
  1420. * @retval The clock source can be one of the following values:
  1421. * @arg @ref RCC_LPTIM1CLKSOURCE_PCLK1 PCLK1 selected as LPUART1 clock
  1422. * @arg @ref RCC_LPTIM1CLKSOURCE_LSI HSI selected as LPUART1 clock
  1423. * @arg @ref RCC_LPTIM1CLKSOURCE_HSI System Clock selected as LPUART1 clock
  1424. * @arg @ref RCC_LPTIM1CLKSOURCE_LSE LSE selected as LPUART1 clock
  1425. */
  1426. #define __HAL_RCC_GET_LPTIM1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_LPTIM1SEL)))
  1427. #if defined(USB)
  1428. /** @brief Macro to configure the USB clock (USBCLK).
  1429. * @param __USB_CLKSOURCE__ specifies the USB clock source.
  1430. * This parameter can be one of the following values:
  1431. * @arg @ref RCC_USBCLKSOURCE_HSI48 HSI48 selected as USB clock
  1432. * @arg @ref RCC_USBCLKSOURCE_PLL PLL Clock selected as USB clock
  1433. */
  1434. #define __HAL_RCC_USB_CONFIG(__USB_CLKSOURCE__) \
  1435. MODIFY_REG(RCC->CCIPR, RCC_CCIPR_HSI48SEL, (uint32_t)(__USB_CLKSOURCE__))
  1436. /** @brief Macro to get the USB clock source.
  1437. * @retval The clock source can be one of the following values:
  1438. * @arg @ref RCC_USBCLKSOURCE_HSI48 HSI48 selected as USB clock
  1439. * @arg @ref RCC_USBCLKSOURCE_PLL PLL Clock selected as USB clock
  1440. */
  1441. #define __HAL_RCC_GET_USB_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_HSI48SEL)))
  1442. #endif /* USB */
  1443. #if defined(RNG)
  1444. /** @brief Macro to configure the RNG clock (RNGCLK).
  1445. * @param __RNG_CLKSOURCE__ specifies the USB clock source.
  1446. * This parameter can be one of the following values:
  1447. * @arg @ref RCC_RNGCLKSOURCE_HSI48 HSI48 selected as RNG clock
  1448. * @arg @ref RCC_RNGCLKSOURCE_PLLCLK PLL Clock selected as RNG clock
  1449. */
  1450. #define __HAL_RCC_RNG_CONFIG(__RNG_CLKSOURCE__) \
  1451. MODIFY_REG(RCC->CCIPR, RCC_CCIPR_HSI48SEL, (uint32_t)(__RNG_CLKSOURCE__))
  1452. /** @brief Macro to get the RNG clock source.
  1453. * @retval The clock source can be one of the following values:
  1454. * @arg @ref RCC_RNGCLKSOURCE_HSI48 HSI48 selected as RNG clock
  1455. * @arg @ref RCC_RNGCLKSOURCE_PLLCLK PLL Clock selected as RNG clock
  1456. */
  1457. #define __HAL_RCC_GET_RNG_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_HSI48SEL)))
  1458. #endif /* RNG */
  1459. #if defined(RCC_CCIPR_HSI48SEL)
  1460. /** @brief Macro to select the HSI48M clock source
  1461. * @note This macro can be replaced by either __HAL_RCC_RNG_CONFIG or
  1462. * __HAL_RCC_USB_CONFIG to configure respectively RNG or UBS clock sources.
  1463. *
  1464. * @param __HSI48M_CLKSOURCE__ specifies the HSI48M clock source dedicated for
  1465. * USB an RNG peripherals.
  1466. * This parameter can be one of the following values:
  1467. * @arg @ref RCC_HSI48M_PLL A dedicated 48MHZ PLL output.
  1468. * @arg @ref RCC_HSI48M_HSI48 48MHZ issued from internal HSI48 oscillator.
  1469. */
  1470. #define __HAL_RCC_HSI48M_CONFIG(__HSI48M_CLKSOURCE__) \
  1471. MODIFY_REG(RCC->CCIPR, RCC_CCIPR_HSI48SEL, (uint32_t)(__HSI48M_CLKSOURCE__))
  1472. /** @brief Macro to get the HSI48M clock source.
  1473. * @note This macro can be replaced by either __HAL_RCC_GET_RNG_SOURCE or
  1474. * __HAL_RCC_GET_USB_SOURCE to get respectively RNG or UBS clock sources.
  1475. * @retval The clock source can be one of the following values:
  1476. * @arg @ref RCC_HSI48M_PLL A dedicated 48MHZ PLL output.
  1477. * @arg @ref RCC_HSI48M_HSI48 48MHZ issued from internal HSI48 oscillator.
  1478. */
  1479. #define __HAL_RCC_GET_HSI48M_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_HSI48SEL)))
  1480. #endif /* RCC_CCIPR_HSI48SEL */
  1481. /**
  1482. * @brief Macro to enable the force of the Internal High Speed oscillator (HSI)
  1483. * in STOP mode to be quickly available as kernel clock for USART and I2C.
  1484. * @note The Enable of this function has not effect on the HSION bit.
  1485. */
  1486. #define __HAL_RCC_HSISTOP_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSIKERON)
  1487. /**
  1488. * @brief Macro to disable the force of the Internal High Speed oscillator (HSI)
  1489. * in STOP mode to be quickly available as kernel clock for USART and I2C.
  1490. * @retval None
  1491. */
  1492. #define __HAL_RCC_HSISTOP_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSIKERON)
  1493. /**
  1494. * @brief Macro to configures the External Low Speed oscillator (LSE) drive capability.
  1495. * @param __RCC_LSEDRIVE__ specifies the new state of the LSE drive capability.
  1496. * This parameter can be one of the following values:
  1497. * @arg @ref RCC_LSEDRIVE_LOW LSE oscillator low drive capability.
  1498. * @arg @ref RCC_LSEDRIVE_MEDIUMLOW LSE oscillator medium low drive capability.
  1499. * @arg @ref RCC_LSEDRIVE_MEDIUMHIGH LSE oscillator medium high drive capability.
  1500. * @arg @ref RCC_LSEDRIVE_HIGH LSE oscillator high drive capability.
  1501. * @retval None
  1502. */
  1503. #define __HAL_RCC_LSEDRIVE_CONFIG(__RCC_LSEDRIVE__) (MODIFY_REG(RCC->CSR,\
  1504. RCC_CSR_LSEDRV, (uint32_t)(__RCC_LSEDRIVE__) ))
  1505. /**
  1506. * @brief Macro to configures the wake up from stop clock.
  1507. * @param __RCC_STOPWUCLK__ specifies the clock source used after wake up from stop
  1508. * This parameter can be one of the following values:
  1509. * @arg @ref RCC_STOP_WAKEUPCLOCK_MSI MSI selected as system clock source
  1510. * @arg @ref RCC_STOP_WAKEUPCLOCK_HSI HSI selected as system clock source
  1511. * @retval None
  1512. */
  1513. #define __HAL_RCC_WAKEUPSTOP_CLK_CONFIG(__RCC_STOPWUCLK__) (MODIFY_REG(RCC->CFGR,\
  1514. RCC_CFGR_STOPWUCK, (uint32_t)(__RCC_STOPWUCLK__) ))
  1515. #if defined(CRS)
  1516. /**
  1517. * @brief Enables the specified CRS interrupts.
  1518. * @param __INTERRUPT__ specifies the CRS interrupt sources to be enabled.
  1519. * This parameter can be any combination of the following values:
  1520. * @arg @ref RCC_CRS_IT_SYNCOK
  1521. * @arg @ref RCC_CRS_IT_SYNCWARN
  1522. * @arg @ref RCC_CRS_IT_ERR
  1523. * @arg @ref RCC_CRS_IT_ESYNC
  1524. * @retval None
  1525. */
  1526. #define __HAL_RCC_CRS_ENABLE_IT(__INTERRUPT__) SET_BIT(CRS->CR, (__INTERRUPT__))
  1527. /**
  1528. * @brief Disables the specified CRS interrupts.
  1529. * @param __INTERRUPT__ specifies the CRS interrupt sources to be disabled.
  1530. * This parameter can be any combination of the following values:
  1531. * @arg @ref RCC_CRS_IT_SYNCOK
  1532. * @arg @ref RCC_CRS_IT_SYNCWARN
  1533. * @arg @ref RCC_CRS_IT_ERR
  1534. * @arg @ref RCC_CRS_IT_ESYNC
  1535. * @retval None
  1536. */
  1537. #define __HAL_RCC_CRS_DISABLE_IT(__INTERRUPT__) CLEAR_BIT(CRS->CR,(__INTERRUPT__))
  1538. /** @brief Check the CRS interrupt has occurred or not.
  1539. * @param __INTERRUPT__ specifies the CRS interrupt source to check.
  1540. * This parameter can be one of the following values:
  1541. * @arg @ref RCC_CRS_IT_SYNCOK
  1542. * @arg @ref RCC_CRS_IT_SYNCWARN
  1543. * @arg @ref RCC_CRS_IT_ERR
  1544. * @arg @ref RCC_CRS_IT_ESYNC
  1545. * @retval The new state of __INTERRUPT__ (SET or RESET).
  1546. */
  1547. #define __HAL_RCC_CRS_GET_IT_SOURCE(__INTERRUPT__) ((CRS->CR & (__INTERRUPT__))? SET : RESET)
  1548. /** @brief Clear the CRS interrupt pending bits
  1549. * bits to clear the selected interrupt pending bits.
  1550. * @param __INTERRUPT__ specifies the interrupt pending bit to clear.
  1551. * This parameter can be any combination of the following values:
  1552. * @arg @ref RCC_CRS_IT_SYNCOK
  1553. * @arg @ref RCC_CRS_IT_SYNCWARN
  1554. * @arg @ref RCC_CRS_IT_ERR
  1555. * @arg @ref RCC_CRS_IT_ESYNC
  1556. * @arg @ref RCC_CRS_IT_TRIMOVF
  1557. * @arg @ref RCC_CRS_IT_SYNCERR
  1558. * @arg @ref RCC_CRS_IT_SYNCMISS
  1559. */
  1560. #define __HAL_RCC_CRS_CLEAR_IT(__INTERRUPT__) do { \
  1561. if(((__INTERRUPT__) & RCC_CRS_IT_ERROR_MASK) != 0U) \
  1562. { \
  1563. WRITE_REG(CRS->ICR, CRS_ICR_ERRC | ((__INTERRUPT__) & ~RCC_CRS_IT_ERROR_MASK)); \
  1564. } \
  1565. else \
  1566. { \
  1567. WRITE_REG(CRS->ICR, (__INTERRUPT__)); \
  1568. } \
  1569. } while(0)
  1570. /**
  1571. * @brief Checks whether the specified CRS flag is set or not.
  1572. * @param __FLAG__ specifies the flag to check.
  1573. * This parameter can be one of the following values:
  1574. * @arg @ref RCC_CRS_FLAG_SYNCOK
  1575. * @arg @ref RCC_CRS_FLAG_SYNCWARN
  1576. * @arg @ref RCC_CRS_FLAG_ERR
  1577. * @arg @ref RCC_CRS_FLAG_ESYNC
  1578. * @arg @ref RCC_CRS_FLAG_TRIMOVF
  1579. * @arg @ref RCC_CRS_FLAG_SYNCERR
  1580. * @arg @ref RCC_CRS_FLAG_SYNCMISS
  1581. * @retval The new state of __FLAG__ (TRUE or FALSE).
  1582. */
  1583. #define __HAL_RCC_CRS_GET_FLAG(__FLAG__) ((CRS->ISR & (__FLAG__)) == (__FLAG__))
  1584. /**
  1585. * @brief Clears the CRS specified FLAG.
  1586. * @param __FLAG__ specifies the flag to clear.
  1587. * This parameter can be one of the following values:
  1588. * @arg @ref RCC_CRS_FLAG_SYNCOK
  1589. * @arg @ref RCC_CRS_FLAG_SYNCWARN
  1590. * @arg @ref RCC_CRS_FLAG_ERR
  1591. * @arg @ref RCC_CRS_FLAG_ESYNC
  1592. * @arg @ref RCC_CRS_FLAG_TRIMOVF
  1593. * @arg @ref RCC_CRS_FLAG_SYNCERR
  1594. * @arg @ref RCC_CRS_FLAG_SYNCMISS
  1595. * @retval None
  1596. */
  1597. #define __HAL_RCC_CRS_CLEAR_FLAG(__FLAG__) do { \
  1598. if(((__FLAG__) & RCC_CRS_FLAG_ERROR_MASK) != 0U) \
  1599. { \
  1600. WRITE_REG(CRS->ICR, CRS_ICR_ERRC | ((__FLAG__) & ~RCC_CRS_FLAG_ERROR_MASK)); \
  1601. } \
  1602. else \
  1603. { \
  1604. WRITE_REG(CRS->ICR, (__FLAG__)); \
  1605. } \
  1606. } while(0)
  1607. /**
  1608. * @brief Enables the oscillator clock for frequency error counter.
  1609. * @note when the CEN bit is set the CRS_CFGR register becomes write-protected.
  1610. * @retval None
  1611. */
  1612. #define __HAL_RCC_CRS_FREQ_ERROR_COUNTER_ENABLE() SET_BIT(CRS->CR, CRS_CR_CEN)
  1613. /**
  1614. * @brief Disables the oscillator clock for frequency error counter.
  1615. * @retval None
  1616. */
  1617. #define __HAL_RCC_CRS_FREQ_ERROR_COUNTER_DISABLE() CLEAR_BIT(CRS->CR, CRS_CR_CEN)
  1618. /**
  1619. * @brief Enables the automatic hardware adjustment of TRIM bits.
  1620. * @note When the AUTOTRIMEN bit is set the CRS_CFGR register becomes write-protected.
  1621. * @retval None
  1622. */
  1623. #define __HAL_RCC_CRS_AUTOMATIC_CALIB_ENABLE() SET_BIT(CRS->CR, CRS_CR_AUTOTRIMEN)
  1624. /**
  1625. * @brief Enables or disables the automatic hardware adjustment of TRIM bits.
  1626. * @retval None
  1627. */
  1628. #define __HAL_RCC_CRS_AUTOMATIC_CALIB_DISABLE() CLEAR_BIT(CRS->CR, CRS_CR_AUTOTRIMEN)
  1629. /**
  1630. * @brief Macro to calculate reload value to be set in CRS register according to target and sync frequencies
  1631. * @note The RELOAD value should be selected according to the ratio between the target frequency and the frequency
  1632. * of the synchronization source after prescaling. It is then decreased by one in order to
  1633. * reach the expected synchronization on the zero value. The formula is the following:
  1634. * RELOAD = (fTARGET / fSYNC) -1
  1635. * @param __FTARGET__ Target frequency (value in Hz)
  1636. * @param __FSYNC__ Synchronization signal frequency (value in Hz)
  1637. * @retval None
  1638. */
  1639. #define __HAL_RCC_CRS_RELOADVALUE_CALCULATE(__FTARGET__, __FSYNC__) (((__FTARGET__) / (__FSYNC__)) - 1)
  1640. #endif /* CRS */
  1641. #if defined(RCC_CR_HSIOUTEN)
  1642. /** @brief Enable he HSI OUT .
  1643. * @note After reset, the HSI output is not available
  1644. */
  1645. #define __HAL_RCC_HSI_OUT_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSIOUTEN)
  1646. /** @brief Disable the HSI OUT .
  1647. * @note After reset, the HSI output is not available
  1648. */
  1649. #define __HAL_RCC_HSI_OUT_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSIOUTEN)
  1650. #endif /* RCC_CR_HSIOUTEN */
  1651. #if defined(STM32L053xx) || defined(STM32L063xx) || defined(STM32L073xx) || defined(STM32L083xx)\
  1652. || defined(STM32L052xx) || defined(STM32L062xx) || defined(STM32L072xx) || defined(STM32L082xx)
  1653. /**
  1654. * @brief Enable the Internal High Speed oscillator for USB (HSI48).
  1655. * @note After enabling the HSI48, the application software should wait on
  1656. * HSI48RDY flag to be set indicating that HSI48 clock is stable and can
  1657. * be used to clock the USB.
  1658. * @note The HSI48 is stopped by hardware when entering STOP and STANDBY modes.
  1659. */
  1660. #define __HAL_RCC_HSI48_ENABLE() do { SET_BIT(RCC->CRRCR, RCC_CRRCR_HSI48ON); \
  1661. SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN); \
  1662. SET_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_ENREF_HSI48); \
  1663. } while (0)
  1664. /**
  1665. * @brief Disable the Internal High Speed oscillator for USB (HSI48).
  1666. */
  1667. #define __HAL_RCC_HSI48_DISABLE() do { CLEAR_BIT(RCC->CRRCR, RCC_CRRCR_HSI48ON); \
  1668. CLEAR_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_ENREF_HSI48); \
  1669. } while (0)
  1670. /** @brief Macro to get the Internal 48Mhz High Speed oscillator (HSI48) state.
  1671. * @retval The clock source can be one of the following values:
  1672. * @arg @ref RCC_HSI48_ON HSI48 enabled
  1673. * @arg @ref RCC_HSI48_OFF HSI48 disabled
  1674. */
  1675. #define __HAL_RCC_GET_HSI48_STATE() \
  1676. (((uint32_t)(READ_BIT(RCC->CRRCR, RCC_CRRCR_HSI48ON)) != 0U) ? RCC_HSI48_ON : RCC_HSI48_OFF)
  1677. /** @brief Enable or disable the HSI48M DIV6 OUT .
  1678. * @note After reset, the HSI48Mhz (divided by 6) output is not available
  1679. */
  1680. #define __HAL_RCC_HSI48M_DIV6_OUT_ENABLE() SET_BIT(RCC->CR, RCC_CRRCR_HSI48DIV6OUTEN)
  1681. #define __HAL_RCC_HSI48M_DIV6_OUT_DISABLE() CLEAR_BIT(RCC->CR, RCC_CRRCR_HSI48DIV6OUTEN)
  1682. #endif /* STM32L071xx || STM32L081xx || */
  1683. /* STM32L072xx || STM32L082xx || */
  1684. /* STM32L073xx || STM32L083xx */
  1685. /**
  1686. * @}
  1687. */
  1688. /* Exported functions --------------------------------------------------------*/
  1689. /** @addtogroup RCCEx_Exported_Functions
  1690. * @{
  1691. */
  1692. /** @addtogroup RCCEx_Exported_Functions_Group1
  1693. * @{
  1694. */
  1695. HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit);
  1696. void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit);
  1697. uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk);
  1698. void HAL_RCCEx_EnableLSECSS(void);
  1699. void HAL_RCCEx_DisableLSECSS(void);
  1700. void HAL_RCCEx_EnableLSECSS_IT(void);
  1701. void HAL_RCCEx_LSECSS_IRQHandler(void);
  1702. void HAL_RCCEx_LSECSS_Callback(void);
  1703. #if defined(SYSCFG_CFGR3_ENREF_HSI48)
  1704. void HAL_RCCEx_EnableHSI48_VREFINT(void);
  1705. void HAL_RCCEx_DisableHSI48_VREFINT(void);
  1706. #endif /* SYSCFG_CFGR3_ENREF_HSI48 */
  1707. /**
  1708. * @}
  1709. */
  1710. #if defined(CRS)
  1711. /** @addtogroup RCCEx_Exported_Functions_Group3
  1712. * @{
  1713. */
  1714. void HAL_RCCEx_CRSConfig(RCC_CRSInitTypeDef *pInit);
  1715. void HAL_RCCEx_CRSSoftwareSynchronizationGenerate(void);
  1716. void HAL_RCCEx_CRSGetSynchronizationInfo(RCC_CRSSynchroInfoTypeDef *pSynchroInfo);
  1717. uint32_t HAL_RCCEx_CRSWaitSynchronization(uint32_t Timeout);
  1718. void HAL_RCCEx_CRS_IRQHandler(void);
  1719. void HAL_RCCEx_CRS_SyncOkCallback(void);
  1720. void HAL_RCCEx_CRS_SyncWarnCallback(void);
  1721. void HAL_RCCEx_CRS_ExpectedSyncCallback(void);
  1722. void HAL_RCCEx_CRS_ErrorCallback(uint32_t Error);
  1723. /**
  1724. * @}
  1725. */
  1726. #endif /* CRS */
  1727. /**
  1728. * @}
  1729. */
  1730. /**
  1731. * @}
  1732. */
  1733. /**
  1734. * @}
  1735. */
  1736. #ifdef __cplusplus
  1737. }
  1738. #endif
  1739. #endif /* __STM32L0xx_HAL_RCC_EX_H */
  1740. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/