stm32l0xx_hal_rcc_ex.h 110 KB

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