stm32l1xx_hal_rcc_ex.h 55 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048
  1. /**
  2. ******************************************************************************
  3. * @file stm32l1xx_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) 2017 STMicroelectronics</center></h2>
  10. *
  11. * Redistribution and use in source and binary forms, with or without modification,
  12. * are permitted provided that the following conditions are met:
  13. * 1. Redistributions of source code must retain the above copyright notice,
  14. * this list of conditions and the following disclaimer.
  15. * 2. Redistributions in binary form must reproduce the above copyright notice,
  16. * this list of conditions and the following disclaimer in the documentation
  17. * and/or other materials provided with the distribution.
  18. * 3. Neither the name of STMicroelectronics nor the names of its contributors
  19. * may be used to endorse or promote products derived from this software
  20. * without specific prior written permission.
  21. *
  22. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  23. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  25. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  26. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  27. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  28. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  29. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  30. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  31. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32. *
  33. ******************************************************************************
  34. */
  35. /* Define to prevent recursive inclusion -------------------------------------*/
  36. #ifndef __STM32L1xx_HAL_RCC_EX_H
  37. #define __STM32L1xx_HAL_RCC_EX_H
  38. #ifdef __cplusplus
  39. extern "C" {
  40. #endif
  41. /* Includes ------------------------------------------------------------------*/
  42. #include "stm32l1xx_hal_def.h"
  43. /** @addtogroup STM32L1xx_HAL_Driver
  44. * @{
  45. */
  46. /** @addtogroup RCCEx
  47. * @{
  48. */
  49. /** @addtogroup RCCEx_Private_Constants
  50. * @{
  51. */
  52. #define LSI_VALUE (37000U) /* ~37kHz */
  53. #if defined(STM32L100xBA) || defined(STM32L151xBA) || defined(STM32L152xBA)\
  54. || defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\
  55. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  56. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  57. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX)\
  58. || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  59. /* Alias word address of LSECSSON bit */
  60. #define LSECSSON_BITNUMBER POSITION_VAL(RCC_CSR_LSECSSON)
  61. #define CSR_LSECSSON_BB ((uint32_t)(PERIPH_BB_BASE + (RCC_CSR_OFFSET_BB * 32U) + (LSECSSON_BITNUMBER * 4U)))
  62. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX*/
  63. /**
  64. * @}
  65. */
  66. /** @addtogroup RCCEx_Private_Macros
  67. * @{
  68. */
  69. #if defined(LCD)
  70. #define IS_RCC_PERIPHCLOCK(__CLK__) ((RCC_PERIPHCLK_RTC <= (__CLK__)) && ((__CLK__) <= RCC_PERIPHCLK_LCD))
  71. #else /* Not LCD LINE */
  72. #define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) == RCC_PERIPHCLK_RTC)
  73. #endif /* LCD */
  74. /**
  75. * @}
  76. */
  77. /* Exported types ------------------------------------------------------------*/
  78. /** @defgroup RCCEx_Exported_Types RCCEx Exported Types
  79. * @{
  80. */
  81. /**
  82. * @brief RCC extended clocks structure definition
  83. */
  84. typedef struct
  85. {
  86. uint32_t PeriphClockSelection; /*!< The Extended Clock to be configured.
  87. This parameter can be a value of @ref RCCEx_Periph_Clock_Selection */
  88. uint32_t RTCClockSelection; /*!< specifies the RTC clock source.
  89. This parameter can be a value of @ref RCC_RTC_LCD_Clock_Source */
  90. #if defined(LCD)
  91. uint32_t LCDClockSelection; /*!< specifies the LCD clock source.
  92. This parameter can be a value of @ref RCC_RTC_LCD_Clock_Source */
  93. #endif /* LCD */
  94. } RCC_PeriphCLKInitTypeDef;
  95. /**
  96. * @}
  97. */
  98. /* Exported constants --------------------------------------------------------*/
  99. /** @defgroup RCCEx_Exported_Constants RCCEx Exported Constants
  100. * @{
  101. */
  102. /** @defgroup RCCEx_Periph_Clock_Selection RCCEx Periph Clock Selection
  103. * @{
  104. */
  105. #define RCC_PERIPHCLK_RTC (0x00000001U)
  106. #if defined(LCD)
  107. #define RCC_PERIPHCLK_LCD (0x00000002U)
  108. #endif /* LCD */
  109. /**
  110. * @}
  111. */
  112. #if defined(RCC_LSECSS_SUPPORT)
  113. /** @defgroup RCCEx_EXTI_LINE_LSECSS RCC LSE CSS external interrupt line
  114. * @{
  115. */
  116. #define RCC_EXTI_LINE_LSECSS (EXTI_IMR_IM19) /*!< External interrupt line 19 connected to the LSE CSS EXTI Line */
  117. /**
  118. * @}
  119. */
  120. #endif /* RCC_LSECSS_SUPPORT */
  121. /**
  122. * @}
  123. */
  124. /* Exported macro ------------------------------------------------------------*/
  125. /** @defgroup RCCEx_Exported_Macros RCCEx Exported Macros
  126. * @{
  127. */
  128. /** @defgroup RCCEx_Peripheral_Clock_Enable_Disable RCCEx_Peripheral_Clock_Enable_Disable
  129. * @brief Enables or disables the AHB1 peripheral clock.
  130. * @note After reset, the peripheral clock (used for registers read/write access)
  131. * is disabled and the application software has to enable this clock before
  132. * using it.
  133. * @{
  134. */
  135. #if defined(STM32L151xB) || defined(STM32L152xB) || defined(STM32L151xBA)\
  136. || defined(STM32L152xBA) || defined(STM32L151xC) || defined(STM32L152xC)\
  137. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  138. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  139. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  140. || defined(STM32L162xE) || defined(STM32L162xDX)
  141. #define __HAL_RCC_GPIOE_CLK_ENABLE() do { \
  142. __IO uint32_t tmpreg; \
  143. SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOEEN);\
  144. /* Delay after an RCC peripheral clock enabling */ \
  145. tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIOEEN);\
  146. UNUSED(tmpreg); \
  147. } while(0U)
  148. #define __HAL_RCC_GPIOE_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_GPIOEEN))
  149. #endif /* STM32L151xB || STM32L152xB || ... || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  150. #if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  151. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  152. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  153. #define __HAL_RCC_GPIOF_CLK_ENABLE() do { \
  154. __IO uint32_t tmpreg; \
  155. SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOFEN);\
  156. /* Delay after an RCC peripheral clock enabling */ \
  157. tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIOFEN);\
  158. UNUSED(tmpreg); \
  159. } while(0U)
  160. #define __HAL_RCC_GPIOG_CLK_ENABLE() do { \
  161. __IO uint32_t tmpreg; \
  162. SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOGEN);\
  163. /* Delay after an RCC peripheral clock enabling */ \
  164. tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_GPIOGEN);\
  165. UNUSED(tmpreg); \
  166. } while(0U)
  167. #define __HAL_RCC_GPIOF_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_GPIOFEN))
  168. #define __HAL_RCC_GPIOG_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_GPIOGEN))
  169. #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  170. #if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\
  171. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  172. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  173. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  174. || defined(STM32L162xE) || defined(STM32L162xDX)
  175. #define __HAL_RCC_DMA2_CLK_ENABLE() do { \
  176. __IO uint32_t tmpreg; \
  177. SET_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN);\
  178. /* Delay after an RCC peripheral clock enabling */ \
  179. tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN);\
  180. UNUSED(tmpreg); \
  181. } while(0U)
  182. #define __HAL_RCC_DMA2_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_DMA2EN))
  183. #endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  184. #if defined(STM32L162xC) || defined(STM32L162xCA) || defined(STM32L162xD)\
  185. || defined(STM32L162xE) || defined(STM32L162xDX)
  186. #define __HAL_RCC_CRYP_CLK_ENABLE() do { \
  187. __IO uint32_t tmpreg; \
  188. SET_BIT(RCC->AHBENR, RCC_AHBENR_AESEN);\
  189. /* Delay after an RCC peripheral clock enabling */ \
  190. tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_AESEN);\
  191. UNUSED(tmpreg); \
  192. } while(0U)
  193. #define __HAL_RCC_CRYP_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_AESEN))
  194. #endif /* STM32L162xC || STM32L162xCA || STM32L162xD || STM32L162xE || STM32L162xDX */
  195. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)
  196. #define __HAL_RCC_FSMC_CLK_ENABLE() do { \
  197. __IO uint32_t tmpreg; \
  198. SET_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN);\
  199. /* Delay after an RCC peripheral clock enabling */ \
  200. tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN);\
  201. UNUSED(tmpreg); \
  202. } while(0U)
  203. #define __HAL_RCC_FSMC_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_FSMCEN))
  204. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  205. #if defined(STM32L100xB) || defined(STM32L100xBA) || defined(STM32L100xC)\
  206. || defined(STM32L152xB) || defined(STM32L152xBA) || defined(STM32L152xC)\
  207. || defined(STM32L162xC) || defined(STM32L152xCA) || defined(STM32L152xD)\
  208. || defined(STM32L162xCA) || defined(STM32L162xD) || defined(STM32L152xE) || defined(STM32L152xDX)\
  209. || defined(STM32L162xE) || defined(STM32L162xDX)
  210. #define __HAL_RCC_LCD_CLK_ENABLE() do { \
  211. __IO uint32_t tmpreg; \
  212. SET_BIT(RCC->APB1ENR, RCC_APB1ENR_LCDEN);\
  213. /* Delay after an RCC peripheral clock enabling */ \
  214. tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LCDEN);\
  215. UNUSED(tmpreg); \
  216. } while(0U)
  217. #define __HAL_RCC_LCD_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_LCDEN))
  218. #endif /* STM32L100xB || STM32L152xBA || ... || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  219. /** @brief Enables or disables the Low Speed APB (APB1) peripheral clock.
  220. * @note After reset, the peripheral clock (used for registers read/write access)
  221. * is disabled and the application software has to enable this clock before
  222. * using it.
  223. */
  224. #if defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC)\
  225. || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  226. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  227. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  228. #define __HAL_RCC_TIM5_CLK_ENABLE() do { \
  229. __IO uint32_t tmpreg; \
  230. SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM5EN);\
  231. /* Delay after an RCC peripheral clock enabling */ \
  232. tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM5EN);\
  233. UNUSED(tmpreg); \
  234. } while(0U)
  235. #define __HAL_RCC_TIM5_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM5EN))
  236. #endif /* STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  237. #if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\
  238. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  239. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  240. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  241. || defined(STM32L162xE) || defined(STM32L162xDX)
  242. #define __HAL_RCC_SPI3_CLK_ENABLE() do { \
  243. __IO uint32_t tmpreg; \
  244. SET_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI3EN);\
  245. /* Delay after an RCC peripheral clock enabling */ \
  246. tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI3EN);\
  247. UNUSED(tmpreg); \
  248. } while(0U)
  249. #define __HAL_RCC_SPI3_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_SPI3EN))
  250. #endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  251. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)\
  252. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  253. #define __HAL_RCC_UART4_CLK_ENABLE() do { \
  254. __IO uint32_t tmpreg; \
  255. SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART4EN);\
  256. /* Delay after an RCC peripheral clock enabling */ \
  257. tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART4EN);\
  258. UNUSED(tmpreg); \
  259. } while(0U)
  260. #define __HAL_RCC_UART5_CLK_ENABLE() do { \
  261. __IO uint32_t tmpreg; \
  262. SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART5EN);\
  263. /* Delay after an RCC peripheral clock enabling */ \
  264. tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART5EN);\
  265. UNUSED(tmpreg); \
  266. } while(0U)
  267. #define __HAL_RCC_UART4_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_UART4EN))
  268. #define __HAL_RCC_UART5_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_UART5EN))
  269. #endif /* STM32L151xD || STM32L152xD || STM32L162xD || (...) || STM32L152xDX || STM32L162xE || STM32L162xDX */
  270. #if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  271. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  272. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE)\
  273. || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)\
  274. || defined(STM32L162xC) || defined(STM32L152xC) || defined(STM32L151xC)
  275. #define __HAL_RCC_OPAMP_CLK_ENABLE() __HAL_RCC_COMP_CLK_ENABLE() /* Peripherals COMP and OPAMP share the same clock domain */
  276. #define __HAL_RCC_OPAMP_CLK_DISABLE() __HAL_RCC_COMP_CLK_DISABLE() /* Peripherals COMP and OPAMP share the same clock domain */
  277. #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || (...) || STM32L162xC || STM32L152xC || STM32L151xC */
  278. /** @brief Enables or disables the High Speed APB (APB2) peripheral clock.
  279. * @note After reset, the peripheral clock (used for registers read/write access)
  280. * is disabled and the application software has to enable this clock before
  281. * using it.
  282. */
  283. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)
  284. #define __HAL_RCC_SDIO_CLK_ENABLE() do { \
  285. __IO uint32_t tmpreg; \
  286. SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SDIOEN);\
  287. /* Delay after an RCC peripheral clock enabling */ \
  288. tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SDIOEN);\
  289. UNUSED(tmpreg); \
  290. } while(0U)
  291. #define __HAL_RCC_SDIO_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SDIOEN))
  292. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  293. /**
  294. * @}
  295. */
  296. /** @defgroup RCCEx_Force_Release_Peripheral_Reset RCCEx Force Release Peripheral Reset
  297. * @brief Forces or releases AHB peripheral reset.
  298. * @{
  299. */
  300. #if defined(STM32L151xB) || defined(STM32L152xB) || defined(STM32L151xBA)\
  301. || defined(STM32L152xBA) || defined(STM32L151xC) || defined(STM32L152xC)\
  302. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  303. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  304. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  305. || defined(STM32L162xE) || defined(STM32L162xDX)
  306. #define __HAL_RCC_GPIOE_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_GPIOERST))
  307. #define __HAL_RCC_GPIOE_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_GPIOERST))
  308. #endif /* STM32L151xB || STM32L152xB || ... || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  309. #if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  310. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  311. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  312. #define __HAL_RCC_GPIOF_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_GPIOFRST))
  313. #define __HAL_RCC_GPIOG_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_GPIOGRST))
  314. #define __HAL_RCC_GPIOF_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_GPIOFRST))
  315. #define __HAL_RCC_GPIOG_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_GPIOGRST))
  316. #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  317. #if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\
  318. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  319. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  320. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  321. || defined(STM32L162xE) || defined(STM32L162xDX)
  322. #define __HAL_RCC_DMA2_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_DMA2RST))
  323. #define __HAL_RCC_DMA2_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_DMA2RST))
  324. #endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  325. #if defined(STM32L162xC) || defined(STM32L162xCA) || defined(STM32L162xD)\
  326. || defined(STM32L162xE) || defined(STM32L162xDX)
  327. #define __HAL_RCC_CRYP_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_AESRST))
  328. #define __HAL_RCC_CRYP_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_AESRST))
  329. #endif /* STM32L162xC || STM32L162xCA || STM32L162xD || STM32L162xE || STM32L162xDX */
  330. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)
  331. #define __HAL_RCC_FSMC_FORCE_RESET() (RCC->AHBRSTR |= (RCC_AHBRSTR_FSMCRST))
  332. #define __HAL_RCC_FSMC_RELEASE_RESET() (RCC->AHBRSTR &= ~(RCC_AHBRSTR_FSMCRST))
  333. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  334. #if defined(STM32L100xB) || defined(STM32L100xBA) || defined(STM32L100xC)\
  335. || defined(STM32L152xB) || defined(STM32L152xBA) || defined(STM32L152xC)\
  336. || defined(STM32L162xC) || defined(STM32L152xCA) || defined(STM32L152xD)\
  337. || defined(STM32L162xCA) || defined(STM32L162xD) || defined(STM32L152xE) || defined(STM32L152xDX)\
  338. || defined(STM32L162xE) || defined(STM32L162xDX)
  339. #define __HAL_RCC_LCD_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_LCDRST))
  340. #define __HAL_RCC_LCD_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_LCDRST))
  341. #endif /* STM32L100xB || STM32L152xBA || ... || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  342. /** @brief Forces or releases APB1 peripheral reset.
  343. */
  344. #if defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC)\
  345. || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  346. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  347. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  348. #define __HAL_RCC_TIM5_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM5RST))
  349. #define __HAL_RCC_TIM5_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM5RST))
  350. #endif /* STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  351. #if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\
  352. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  353. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  354. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  355. || defined(STM32L162xE) || defined(STM32L162xDX)
  356. #define __HAL_RCC_SPI3_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_SPI3RST))
  357. #define __HAL_RCC_SPI3_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_SPI3RST))
  358. #endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  359. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)\
  360. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  361. #define __HAL_RCC_UART4_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_UART4RST))
  362. #define __HAL_RCC_UART5_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_UART5RST))
  363. #define __HAL_RCC_UART4_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART4RST))
  364. #define __HAL_RCC_UART5_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART5RST))
  365. #endif /* STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  366. #if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  367. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  368. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)\
  369. || defined(STM32L162xC) || defined(STM32L152xC) || defined(STM32L151xC)
  370. #define __HAL_RCC_OPAMP_FORCE_RESET() __HAL_RCC_COMP_FORCE_RESET() /* Peripherals COMP and OPAMP share the same clock domain */
  371. #define __HAL_RCC_OPAMP_RELEASE_RESET() __HAL_RCC_COMP_RELEASE_RESET() /* Peripherals COMP and OPAMP share the same clock domain */
  372. #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xC || STM32L152xC || STM32L151xC */
  373. /** @brief Forces or releases APB2 peripheral reset.
  374. */
  375. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)
  376. #define __HAL_RCC_SDIO_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SDIORST))
  377. #define __HAL_RCC_SDIO_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SDIORST))
  378. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  379. /**
  380. * @}
  381. */
  382. /** @defgroup RCCEx_Peripheral_Clock_Sleep_Enable_Disable RCCEx Peripheral Clock Sleep Enable Disable
  383. * @brief Enables or disables the AHB1 peripheral clock during Low Power (Sleep) mode.
  384. * @note Peripheral clock gating in SLEEP mode can be used to further reduce
  385. * power consumption.
  386. * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
  387. * @note By default, all peripheral clocks are enabled during SLEEP mode.
  388. * @{
  389. */
  390. #if defined(STM32L151xB) || defined(STM32L152xB) || defined(STM32L151xBA)\
  391. || defined(STM32L152xBA) || defined(STM32L151xC) || defined(STM32L152xC)\
  392. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  393. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  394. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  395. || defined(STM32L162xE) || defined(STM32L162xDX)
  396. #define __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_GPIOELPEN))
  397. #define __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_GPIOELPEN))
  398. #endif /* STM32L151xB || STM32L152xB || ... || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  399. #if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  400. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  401. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  402. #define __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_GPIOFLPEN))
  403. #define __HAL_RCC_GPIOG_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_GPIOGLPEN))
  404. #define __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_GPIOFLPEN))
  405. #define __HAL_RCC_GPIOG_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_GPIOGLPEN))
  406. #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  407. #if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\
  408. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  409. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  410. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  411. || defined(STM32L162xE) || defined(STM32L162xDX)
  412. #define __HAL_RCC_DMA2_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_DMA2LPEN))
  413. #define __HAL_RCC_DMA2_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_DMA2LPEN))
  414. #endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  415. #if defined(STM32L162xC) || defined(STM32L162xCA) || defined(STM32L162xD) || defined(STM32L162xE) || defined(STM32L162xDX)
  416. #define __HAL_RCC_CRYP_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_AESLPEN))
  417. #define __HAL_RCC_CRYP_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_AESLPEN))
  418. #endif /* STM32L162xC || STM32L162xCA || STM32L162xD || STM32L162xE || STM32L162xDX */
  419. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)
  420. #define __HAL_RCC_FSMC_CLK_SLEEP_ENABLE() (RCC->AHBLPENR |= (RCC_AHBLPENR_FSMCLPEN))
  421. #define __HAL_RCC_FSMC_CLK_SLEEP_DISABLE() (RCC->AHBLPENR &= ~(RCC_AHBLPENR_FSMCLPEN))
  422. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  423. #if defined(STM32L100xB) || defined(STM32L100xBA) || defined(STM32L100xC)\
  424. || defined(STM32L152xB) || defined(STM32L152xBA) || defined(STM32L152xC)\
  425. || defined(STM32L162xC) || defined(STM32L152xCA) || defined(STM32L152xD)\
  426. || defined(STM32L162xCA) || defined(STM32L162xD) || defined(STM32L152xE) || defined(STM32L152xDX)\
  427. || defined(STM32L162xE) || defined(STM32L162xDX)
  428. #define __HAL_RCC_LCD_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_LCDLPEN))
  429. #define __HAL_RCC_LCD_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_LCDLPEN))
  430. #endif /* STM32L100xB || STM32L152xBA || ... || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  431. /** @brief Enables or disables the APB1 peripheral clock during Low Power (Sleep) mode.
  432. * @note Peripheral clock gating in SLEEP mode can be used to further reduce
  433. * power consumption.
  434. * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
  435. * @note By default, all peripheral clocks are enabled during SLEEP mode.
  436. */
  437. #if defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC)\
  438. || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  439. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  440. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  441. #define __HAL_RCC_TIM5_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM5LPEN))
  442. #define __HAL_RCC_TIM5_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM5LPEN))
  443. #endif /* STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  444. #if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\
  445. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  446. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  447. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  448. || defined(STM32L162xE) || defined(STM32L162xDX)
  449. #define __HAL_RCC_SPI3_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_SPI3LPEN))
  450. #define __HAL_RCC_SPI3_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_SPI3LPEN))
  451. #endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  452. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)\
  453. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  454. #define __HAL_RCC_UART4_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_UART4LPEN))
  455. #define __HAL_RCC_UART5_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_UART5LPEN))
  456. #define __HAL_RCC_UART4_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_UART4LPEN))
  457. #define __HAL_RCC_UART5_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_UART5LPEN))
  458. #endif /* STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  459. #if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  460. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  461. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)\
  462. || defined(STM32L162xC) || defined(STM32L152xC) || defined(STM32L151xC)
  463. #define __HAL_RCC_OPAMP_CLK_SLEEP_ENABLE() __HAL_RCC_COMP_CLK_SLEEP_ENABLE() /* Peripherals COMP and OPAMP share the same clock domain */
  464. #define __HAL_RCC_OPAMP_CLK_SLEEP_DISABLE() __HAL_RCC_COMP_CLK_SLEEP_DISABLE() /* Peripherals COMP and OPAMP share the same clock domain */
  465. #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xC || STM32L152xC || STM32L151xC */
  466. /** @brief Enables or disables the APB2 peripheral clock during Low Power (Sleep) mode.
  467. * @note Peripheral clock gating in SLEEP mode can be used to further reduce
  468. * power consumption.
  469. * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
  470. * @note By default, all peripheral clocks are enabled during SLEEP mode.
  471. */
  472. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)
  473. #define __HAL_RCC_SDIO_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SDIOLPEN))
  474. #define __HAL_RCC_SDIO_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SDIOLPEN))
  475. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  476. /**
  477. * @}
  478. */
  479. /** @defgroup RCCEx_Peripheral_Clock_Enable_Disable_Status Peripheral Clock Enable Disable Status
  480. * @brief Get the enable or disable status of peripheral clock.
  481. * @note After reset, the peripheral clock (used for registers read/write access)
  482. * is disabled and the application software has to enable this clock before
  483. * using it.
  484. * @{
  485. */
  486. #if defined(STM32L151xB) || defined(STM32L152xB) || defined(STM32L151xBA)\
  487. || defined(STM32L152xBA) || defined(STM32L151xC) || defined(STM32L152xC)\
  488. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  489. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  490. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  491. || defined(STM32L162xE) || defined(STM32L162xDX)
  492. #define __HAL_RCC_GPIOE_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOEEN)) != RESET)
  493. #define __HAL_RCC_GPIOE_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOEEN)) == RESET)
  494. #endif /* STM32L151xB || STM32L152xB || ... || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  495. #if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  496. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  497. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  498. #define __HAL_RCC_GPIOF_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOFEN)) != RESET)
  499. #define __HAL_RCC_GPIOG_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOGEN)) != RESET)
  500. #define __HAL_RCC_GPIOF_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOFEN)) == RESET)
  501. #define __HAL_RCC_GPIOG_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_GPIOGEN)) == RESET)
  502. #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  503. #if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\
  504. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  505. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  506. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  507. || defined(STM32L162xE) || defined(STM32L162xDX)
  508. #define __HAL_RCC_DMA2_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_DMA2EN)) != RESET)
  509. #define __HAL_RCC_DMA2_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_DMA2EN)) == RESET)
  510. #endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  511. #if defined(STM32L162xC) || defined(STM32L162xCA) || defined(STM32L162xD)\
  512. || defined(STM32L162xE) || defined(STM32L162xDX)
  513. #define __HAL_RCC_CRYP_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_AESEN)) != RESET)
  514. #define __HAL_RCC_CRYP_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_AESEN)) == RESET)
  515. #endif /* STM32L162xC || STM32L162xCA || STM32L162xD || STM32L162xE || STM32L162xDX */
  516. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)
  517. #define __HAL_RCC_FSMC_IS_CLK_ENABLED() ((RCC->AHBENR & (RCC_AHBENR_FSMCEN)) != RESET)
  518. #define __HAL_RCC_FSMC_IS_CLK_DISABLED() ((RCC->AHBENR & (RCC_AHBENR_FSMCEN)) == RESET)
  519. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  520. #if defined(STM32L100xB) || defined(STM32L100xBA) || defined(STM32L100xC)\
  521. || defined(STM32L152xB) || defined(STM32L152xBA) || defined(STM32L152xC)\
  522. || defined(STM32L162xC) || defined(STM32L152xCA) || defined(STM32L152xD)\
  523. || defined(STM32L162xCA) || defined(STM32L162xD) || defined(STM32L152xE) || defined(STM32L152xDX)\
  524. || defined(STM32L162xE) || defined(STM32L162xDX)
  525. #define __HAL_RCC_LCD_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_LCDEN)) != RESET)
  526. #define __HAL_RCC_LCD_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_LCDEN)) == RESET)
  527. #endif /* STM32L100xB || STM32L152xBA || ... || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  528. #if defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC)\
  529. || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  530. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  531. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  532. #define __HAL_RCC_TIM5_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM5EN)) != RESET)
  533. #define __HAL_RCC_TIM5_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM5EN)) == RESET)
  534. #endif /* STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  535. #if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\
  536. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  537. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  538. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  539. || defined(STM32L162xE) || defined(STM32L162xDX)
  540. #define __HAL_RCC_SPI3_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPI3EN)) != RESET)
  541. #define __HAL_RCC_SPI3_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPI3EN)) == RESET)
  542. #endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  543. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)\
  544. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  545. #define __HAL_RCC_UART4_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART4EN)) != RESET)
  546. #define __HAL_RCC_UART5_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART5EN)) != RESET)
  547. #define __HAL_RCC_UART4_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART4EN)) == RESET)
  548. #define __HAL_RCC_UART5_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART5EN)) == RESET)
  549. #endif /* STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  550. #if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  551. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  552. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)\
  553. || defined(STM32L162xC) || defined(STM32L152xC) || defined(STM32L151xC)
  554. #define __HAL_RCC_OPAMP_IS_CLK_ENABLED() __HAL_RCC_COMP_IS_CLK_ENABLED()
  555. #define __HAL_RCC_OPAMP_IS_CLK_DISABLED() __HAL_RCC_COMP_IS_CLK_DISABLED()
  556. #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xC || STM32L152xC || STM32L151xC */
  557. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)
  558. #define __HAL_RCC_SDIO_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SDIOEN)) != RESET)
  559. #define __HAL_RCC_SDIO_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SDIOEN)) == RESET)
  560. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  561. /**
  562. * @}
  563. */
  564. /** @defgroup RCCEx_Peripheral_Clock_Sleep_Enable_Disable_Status Peripheral Clock Sleep Enable Disable Status
  565. * @brief Get the enable or disable status of peripheral clock during Low Power (Sleep) mode.
  566. * @note Peripheral clock gating in SLEEP mode can be used to further reduce
  567. * power consumption.
  568. * @note After wakeup from SLEEP mode, the peripheral clock is enabled again.
  569. * @note By default, all peripheral clocks are enabled during SLEEP mode.
  570. * @{
  571. */
  572. #if defined(STM32L151xB) || defined(STM32L152xB) || defined(STM32L151xBA)\
  573. || defined(STM32L152xBA) || defined(STM32L151xC) || defined(STM32L152xC)\
  574. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  575. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  576. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  577. || defined(STM32L162xE) || defined(STM32L162xDX)
  578. #define __HAL_RCC_GPIOE_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOELPEN)) != RESET)
  579. #define __HAL_RCC_GPIOE_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOELPEN)) == RESET)
  580. #endif /* STM32L151xB || STM32L152xB || ... || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  581. #if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  582. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  583. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  584. #define __HAL_RCC_GPIOF_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOFLPEN)) != RESET)
  585. #define __HAL_RCC_GPIOG_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOGLPEN)) != RESET)
  586. #define __HAL_RCC_GPIOF_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOFLPEN)) == RESET)
  587. #define __HAL_RCC_GPIOG_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_GPIOGLPEN)) == RESET)
  588. #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  589. #if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\
  590. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  591. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  592. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  593. || defined(STM32L162xE) || defined(STM32L162xDX)
  594. #define __HAL_RCC_DMA2_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_DMA2LPEN)) != RESET)
  595. #define __HAL_RCC_DMA2_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_DMA2LPEN)) == RESET)
  596. #endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  597. #if defined(STM32L162xC) || defined(STM32L162xCA) || defined(STM32L162xD)\
  598. || defined(STM32L162xE) || defined(STM32L162xDX)
  599. #define __HAL_RCC_CRYP_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_AESLPEN)) != RESET)
  600. #define __HAL_RCC_CRYP_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_AESLPEN)) == RESET)
  601. #endif /* STM32L162xC || STM32L162xCA || STM32L162xD || STM32L162xE || STM32L162xDX */
  602. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)
  603. #define __HAL_RCC_FSMC_IS_CLK_SLEEP_ENABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_FSMCLPEN)) != RESET)
  604. #define __HAL_RCC_FSMC_IS_CLK_SLEEP_DISABLED() ((RCC->AHBLPENR & (RCC_AHBLPENR_FSMCLPEN)) == RESET)
  605. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  606. #if defined(STM32L100xB) || defined(STM32L100xBA) || defined(STM32L100xC)\
  607. || defined(STM32L152xB) || defined(STM32L152xBA) || defined(STM32L152xC)\
  608. || defined(STM32L162xC) || defined(STM32L152xCA) || defined(STM32L152xD)\
  609. || defined(STM32L162xCA) || defined(STM32L162xD) || defined(STM32L152xE) || defined(STM32L152xDX)\
  610. || defined(STM32L162xE) || defined(STM32L162xDX)
  611. #define __HAL_RCC_LCD_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_LCDLPEN)) != RESET)
  612. #define __HAL_RCC_LCD_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_LCDLPEN)) == RESET)
  613. #endif /* STM32L100xB || STM32L152xBA || ... || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  614. #if defined(STM32L151xC) || defined(STM32L152xC) || defined(STM32L162xC)\
  615. || defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  616. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  617. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  618. #define __HAL_RCC_TIM5_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM5LPEN)) != RESET)
  619. #define __HAL_RCC_TIM5_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM5LPEN)) == RESET)
  620. #endif /* STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  621. #if defined(STM32L100xC) || defined(STM32L151xC) || defined(STM32L152xC)\
  622. || defined(STM32L162xC) || defined(STM32L151xCA) || defined(STM32L151xD)\
  623. || defined(STM32L152xCA) || defined(STM32L152xD) || defined(STM32L162xCA)\
  624. || defined(STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX)\
  625. || defined(STM32L162xE) || defined(STM32L162xDX)
  626. #define __HAL_RCC_SPI3_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPI3LPEN)) != RESET)
  627. #define __HAL_RCC_SPI3_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPI3LPEN)) == RESET)
  628. #endif /* STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  629. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)\
  630. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)
  631. #define __HAL_RCC_UART4_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART4LPEN)) != RESET)
  632. #define __HAL_RCC_UART5_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART5LPEN)) != RESET)
  633. #define __HAL_RCC_UART4_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART4LPEN)) == RESET)
  634. #define __HAL_RCC_UART5_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART5LPEN)) == RESET)
  635. #endif /* STM32L151xD || STM32L152xD || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  636. #if defined(STM32L151xCA) || defined(STM32L151xD) || defined(STM32L152xCA)\
  637. || defined(STM32L152xD) || defined(STM32L162xCA) || defined(STM32L162xD)\
  638. || defined(STM32L151xE) || defined(STM32L151xDX) || defined(STM32L152xE) || defined(STM32L152xDX) || defined(STM32L162xE) || defined(STM32L162xDX)\
  639. || defined(STM32L162xC) || defined(STM32L152xC) || defined(STM32L151xC)
  640. #define __HAL_RCC_OPAMP_IS_CLK_SLEEP_ENABLED() __HAL_RCC_COMP_IS_CLK_SLEEP_ENABLED()
  641. #define __HAL_RCC_OPAMP_IS_CLK_SLEEP_DISABLED() __HAL_RCC_COMP_IS_CLK_SLEEP_DISABLED()
  642. #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xC || STM32L152xC || STM32L151xC */
  643. #if defined(STM32L151xD) || defined(STM32L152xD) || defined(STM32L162xD)
  644. #define __HAL_RCC_SDIO_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SDIOLPEN)) != RESET)
  645. #define __HAL_RCC_SDIO_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SDIOLPEN)) == RESET)
  646. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  647. /**
  648. * @}
  649. */
  650. #if defined(RCC_LSECSS_SUPPORT)
  651. /**
  652. * @brief Enable interrupt on RCC LSE CSS EXTI Line 19.
  653. * @retval None
  654. */
  655. #define __HAL_RCC_LSECSS_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR, RCC_EXTI_LINE_LSECSS)
  656. /**
  657. * @brief Disable interrupt on RCC LSE CSS EXTI Line 19.
  658. * @retval None
  659. */
  660. #define __HAL_RCC_LSECSS_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR, RCC_EXTI_LINE_LSECSS)
  661. /**
  662. * @brief Enable event on RCC LSE CSS EXTI Line 19.
  663. * @retval None.
  664. */
  665. #define __HAL_RCC_LSECSS_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR, RCC_EXTI_LINE_LSECSS)
  666. /**
  667. * @brief Disable event on RCC LSE CSS EXTI Line 19.
  668. * @retval None.
  669. */
  670. #define __HAL_RCC_LSECSS_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR, RCC_EXTI_LINE_LSECSS)
  671. /**
  672. * @brief RCC LSE CSS EXTI line configuration: set falling edge trigger.
  673. * @retval None.
  674. */
  675. #define __HAL_RCC_LSECSS_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR, RCC_EXTI_LINE_LSECSS)
  676. /**
  677. * @brief Disable the RCC LSE CSS Extended Interrupt Falling Trigger.
  678. * @retval None.
  679. */
  680. #define __HAL_RCC_LSECSS_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR, RCC_EXTI_LINE_LSECSS)
  681. /**
  682. * @brief RCC LSE CSS EXTI line configuration: set rising edge trigger.
  683. * @retval None.
  684. */
  685. #define __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR, RCC_EXTI_LINE_LSECSS)
  686. /**
  687. * @brief Disable the RCC LSE CSS Extended Interrupt Rising Trigger.
  688. * @retval None.
  689. */
  690. #define __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR, RCC_EXTI_LINE_LSECSS)
  691. /**
  692. * @brief RCC LSE CSS EXTI line configuration: set rising & falling edge trigger.
  693. * @retval None.
  694. */
  695. #define __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_FALLING_EDGE() \
  696. do { \
  697. __HAL_RCC_LSECSS_EXTI_ENABLE_RISING_EDGE(); \
  698. __HAL_RCC_LSECSS_EXTI_ENABLE_FALLING_EDGE(); \
  699. } while(0U)
  700. /**
  701. * @brief Disable the RCC LSE CSS Extended Interrupt Rising & Falling Trigger.
  702. * @retval None.
  703. */
  704. #define __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_FALLING_EDGE() \
  705. do { \
  706. __HAL_RCC_LSECSS_EXTI_DISABLE_RISING_EDGE(); \
  707. __HAL_RCC_LSECSS_EXTI_DISABLE_FALLING_EDGE(); \
  708. } while(0U)
  709. /**
  710. * @brief Check whether the specified RCC LSE CSS EXTI interrupt flag is set or not.
  711. * @retval EXTI RCC LSE CSS Line Status.
  712. */
  713. #define __HAL_RCC_LSECSS_EXTI_GET_FLAG() (EXTI->PR & (RCC_EXTI_LINE_LSECSS))
  714. /**
  715. * @brief Clear the RCC LSE CSS EXTI flag.
  716. * @retval None.
  717. */
  718. #define __HAL_RCC_LSECSS_EXTI_CLEAR_FLAG() (EXTI->PR = (RCC_EXTI_LINE_LSECSS))
  719. /**
  720. * @brief Generate a Software interrupt on selected EXTI line.
  721. * @retval None.
  722. */
  723. #define __HAL_RCC_LSECSS_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER, RCC_EXTI_LINE_LSECSS)
  724. #endif /* RCC_LSECSS_SUPPORT */
  725. #if defined(LCD)
  726. /** @defgroup RCCEx_LCD_Configuration LCD Configuration
  727. * @brief Macros to configure clock source of LCD peripherals.
  728. * @{
  729. */
  730. /** @brief Macro to configures LCD clock (LCDCLK).
  731. * @note LCD and RTC use the same configuration
  732. * @note LCD can however be used in the Stop low power mode if the LSE or LSI is used as the
  733. * LCD clock source.
  734. *
  735. * @param __LCD_CLKSOURCE__ specifies the LCD clock source.
  736. * This parameter can be one of the following values:
  737. * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as LCD clock
  738. * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as LCD clock
  739. * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV2 HSE divided by 2 selected as LCD clock
  740. * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV4 HSE divided by 4 selected as LCD clock
  741. * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV8 HSE divided by 8 selected as LCD clock
  742. * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV16 HSE divided by 16 selected as LCD clock
  743. */
  744. #define __HAL_RCC_LCD_CONFIG(__LCD_CLKSOURCE__) __HAL_RCC_RTC_CONFIG(__LCD_CLKSOURCE__)
  745. /** @brief Macro to get the LCD clock source.
  746. */
  747. #define __HAL_RCC_GET_LCD_SOURCE() __HAL_RCC_GET_RTC_SOURCE()
  748. /** @brief Macro to get the LCD clock pre-scaler.
  749. */
  750. #define __HAL_RCC_GET_LCD_HSE_PRESCALER() __HAL_RCC_GET_RTC_HSE_PRESCALER()
  751. /**
  752. * @}
  753. */
  754. #endif /* LCD */
  755. /**
  756. * @}
  757. */
  758. /* Exported functions --------------------------------------------------------*/
  759. /** @addtogroup RCCEx_Exported_Functions
  760. * @{
  761. */
  762. /** @addtogroup RCCEx_Exported_Functions_Group1
  763. * @{
  764. */
  765. HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit);
  766. void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit);
  767. uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk);
  768. #if defined(RCC_LSECSS_SUPPORT)
  769. void HAL_RCCEx_EnableLSECSS(void);
  770. void HAL_RCCEx_DisableLSECSS(void);
  771. void HAL_RCCEx_EnableLSECSS_IT(void);
  772. void HAL_RCCEx_LSECSS_IRQHandler(void);
  773. void HAL_RCCEx_LSECSS_Callback(void);
  774. #endif /* RCC_LSECSS_SUPPORT */
  775. /**
  776. * @}
  777. */
  778. /**
  779. * @}
  780. */
  781. /**
  782. * @}
  783. */
  784. /**
  785. * @}
  786. */
  787. #ifdef __cplusplus
  788. }
  789. #endif
  790. #endif /* __STM32L1xx_HAL_RCC_EX_H */
  791. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/