fm33lc0xx_fl_rcc.h 107 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804
  1. /**
  2. *******************************************************************************************************
  3. * @file fm33lc0xx_fl_rcc.h
  4. * @author FMSH Application Team
  5. * @brief Head file of RCC FL Module
  6. *******************************************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) [2021] [Fudan Microelectronics]
  10. * THIS SOFTWARE is licensed under Mulan PSL v2.
  11. * You can use this software according to the terms and conditions of the Mulan PSL v2.
  12. * You may obtain a copy of Mulan PSL v2 at:
  13. * http://license.coscl.org.cn/MulanPSL2
  14. * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
  15. * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
  16. * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
  17. * See the Mulan PSL v2 for more details.
  18. *
  19. *******************************************************************************************************
  20. */
  21. /* Define to prevent recursive inclusion---------------------------------------------------------------*/
  22. #ifndef __FM33LC0XX_FL_RCC_H
  23. #define __FM33LC0XX_FL_RCC_H
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. /* Includes -------------------------------------------------------------------------------------------*/
  28. #include "fm33lc0xx_fl_def.h"
  29. /** @addtogroup FM33LC0XX_FL_Driver
  30. * @{
  31. */
  32. /** @defgroup RCC RCC
  33. * @brief RCC FL driver
  34. * @{
  35. */
  36. /* Exported types -------------------------------------------------------------------------------------*/
  37. /** @defgroup RCC_FL_ES_INIT RCC Exported Init structures
  38. * @{
  39. */
  40. /**
  41. * @}
  42. */
  43. /* Exported constants ---------------------------------------------------------------------------------*/
  44. /** @defgroup RCC_FL_Exported_Constants RCC Exported Constants
  45. * @{
  46. */
  47. #define FDET_IER_HFDET_IE_Pos (1U)
  48. #define FDET_IER_HFDET_IE_Msk (0x1U << FDET_IER_HFDET_IE_Pos)
  49. #define FDET_IER_HFDET_IE FDET_IER_HFDET_IE_Msk
  50. #define FDET_IER_LFDET_IE_Pos (0U)
  51. #define FDET_IER_LFDET_IE_Msk (0x1U << FDET_IER_LFDET_IE_Pos)
  52. #define FDET_IER_LFDET_IE FDET_IER_LFDET_IE_Msk
  53. #define FDET_ISR_HFDETO_Pos (9U)
  54. #define FDET_ISR_HFDETO_Msk (0x1U << FDET_ISR_HFDETO_Pos)
  55. #define FDET_ISR_HFDETO FDET_ISR_HFDETO_Msk
  56. #define FDET_ISR_LFDETO_Pos (8U)
  57. #define FDET_ISR_LFDETO_Msk (0x1U << FDET_ISR_LFDETO_Pos)
  58. #define FDET_ISR_LFDETO FDET_ISR_LFDETO_Msk
  59. #define FDET_ISR_HFDETIF_Pos (1U)
  60. #define FDET_ISR_HFDETIF_Msk (0x1U << FDET_ISR_HFDETIF_Pos)
  61. #define FDET_ISR_HFDETIF FDET_ISR_HFDETIF_Msk
  62. #define FDET_ISR_LFDETIF_Pos (0U)
  63. #define FDET_ISR_LFDETIF_Msk (0x1U << FDET_ISR_LFDETIF_Pos)
  64. #define FDET_ISR_LFDETIF FDET_ISR_LFDETIF_Msk
  65. #define RCC_SYSCLKCR_LSCATS_Pos (27U)
  66. #define RCC_SYSCLKCR_LSCATS_Msk (0x1U << RCC_SYSCLKCR_LSCATS_Pos)
  67. #define RCC_SYSCLKCR_LSCATS RCC_SYSCLKCR_LSCATS_Msk
  68. #define RCC_SYSCLKCR_SLP_ENEXTI_Pos (25U)
  69. #define RCC_SYSCLKCR_SLP_ENEXTI_Msk (0x1U << RCC_SYSCLKCR_SLP_ENEXTI_Pos)
  70. #define RCC_SYSCLKCR_SLP_ENEXTI RCC_SYSCLKCR_SLP_ENEXTI_Msk
  71. #define RCC_SYSCLKCR_APBPRES2_Pos (19U)
  72. #define RCC_SYSCLKCR_APBPRES2_Msk (0x7U << RCC_SYSCLKCR_APBPRES2_Pos)
  73. #define RCC_SYSCLKCR_APBPRES2 RCC_SYSCLKCR_APBPRES2_Msk
  74. #define RCC_SYSCLKCR_APBPRES1_Pos (16U)
  75. #define RCC_SYSCLKCR_APBPRES1_Msk (0x7U << RCC_SYSCLKCR_APBPRES1_Pos)
  76. #define RCC_SYSCLKCR_APBPRES1 RCC_SYSCLKCR_APBPRES1_Msk
  77. #define RCC_SYSCLKCR_AHBPRES_Pos (8U)
  78. #define RCC_SYSCLKCR_AHBPRES_Msk (0x7U << RCC_SYSCLKCR_AHBPRES_Pos)
  79. #define RCC_SYSCLKCR_AHBPRES RCC_SYSCLKCR_AHBPRES_Msk
  80. #define RCC_SYSCLKCR_STCLKSEL_Pos (6U)
  81. #define RCC_SYSCLKCR_STCLKSEL_Msk (0x3U << RCC_SYSCLKCR_STCLKSEL_Pos)
  82. #define RCC_SYSCLKCR_STCLKSEL RCC_SYSCLKCR_STCLKSEL_Msk
  83. #define RCC_SYSCLKCR_BCKOSEL_Pos (3U)
  84. #define RCC_SYSCLKCR_BCKOSEL_Msk (0x1U << RCC_SYSCLKCR_BCKOSEL_Pos)
  85. #define RCC_SYSCLKCR_BCKOSEL RCC_SYSCLKCR_BCKOSEL_Msk
  86. #define RCC_SYSCLKCR_SYSCLKSEL_Pos (0U)
  87. #define RCC_SYSCLKCR_SYSCLKSEL_Msk (0x7U << RCC_SYSCLKCR_SYSCLKSEL_Pos)
  88. #define RCC_SYSCLKCR_SYSCLKSEL RCC_SYSCLKCR_SYSCLKSEL_Msk
  89. #define RCC_RCHFCR_FSEL_Pos (16U)
  90. #define RCC_RCHFCR_FSEL_Msk (0xfU << RCC_RCHFCR_FSEL_Pos)
  91. #define RCC_RCHFCR_FSEL RCC_RCHFCR_FSEL_Msk
  92. #define RCC_RCHFCR_EN_Pos (0U)
  93. #define RCC_RCHFCR_EN_Msk (0x1U << RCC_RCHFCR_EN_Pos)
  94. #define RCC_RCHFCR_EN RCC_RCHFCR_EN_Msk
  95. #define RCC_RCMFTR_TRIM_Pos (0U)
  96. #define RCC_RCMFTR_TRIM_Msk (0x7fU << RCC_RCMFTR_TRIM_Pos)
  97. #define RCC_RCMFTR_TRIM RCC_RCMFTR_TRIM_Msk
  98. #define RCC_PLLCR_EN_Pos (0U)
  99. #define RCC_PLLCR_EN_Msk (0x1U << RCC_PLLCR_EN_Pos)
  100. #define RCC_PLLCR_EN RCC_PLLCR_EN_Msk
  101. #define RCC_PLLCR_LOCKED_Pos (7U)
  102. #define RCC_PLLCR_LOCKED_Msk (0x1U << RCC_PLLCR_LOCKED_Pos)
  103. #define RCC_PLLCR_LOCKED RCC_PLLCR_LOCKED_Msk
  104. #define RCC_PLLCR_INSEL_Pos (1U)
  105. #define RCC_PLLCR_INSEL_Msk (0x1U << RCC_PLLCR_INSEL_Pos)
  106. #define RCC_PLLCR_INSEL RCC_PLLCR_INSEL_Msk
  107. #define RCC_PLLCR_DB_Pos (16U)
  108. #define RCC_PLLCR_DB_Msk (0x7fU << RCC_PLLCR_DB_Pos)
  109. #define RCC_PLLCR_DB RCC_PLLCR_DB_Msk
  110. #define RCC_PLLCR_REFPRSC_Pos (4U)
  111. #define RCC_PLLCR_REFPRSC_Msk (0x7U << RCC_PLLCR_REFPRSC_Pos)
  112. #define RCC_PLLCR_REFPRSC RCC_PLLCR_REFPRSC_Msk
  113. #define RCC_PLLCR_OSEL_Pos (3U)
  114. #define RCC_PLLCR_OSEL_Msk (0x1U << RCC_PLLCR_OSEL_Pos)
  115. #define RCC_PLLCR_OSEL RCC_PLLCR_OSEL_Msk
  116. #define RCC_LPOSCCR_LPOENB_Pos (1U)
  117. #define RCC_LPOSCCR_LPOENB_Msk (0x1U << RCC_LPOSCCR_LPOENB_Pos)
  118. #define RCC_LPOSCCR_LPOENB RCC_LPOSCCR_LPOENB_Msk
  119. #define RCC_LPOSCCR_LPM_LPO_OFF_Pos (0U)
  120. #define RCC_LPOSCCR_LPM_LPO_OFF_Msk (0x1U << RCC_LPOSCCR_LPM_LPO_OFF_Pos)
  121. #define RCC_LPOSCCR_LPM_LPO_OFF RCC_LPOSCCR_LPM_LPO_OFF_Msk
  122. #define RCC_LPOSCCR_LPO_CHOP_EN_Pos (2U)
  123. #define RCC_LPOSCCR_LPO_CHOP_EN_Msk (0x1U << RCC_LPOSCCR_LPO_CHOP_EN_Pos)
  124. #define RCC_LPOSCCR_LPO_CHOP_EN RCC_LPOSCCR_LPO_CHOP_EN_Msk
  125. #define RCC_LPOSCTR_TRIM_Pos (0U)
  126. #define RCC_LPOSCTR_TRIM_Msk (0xffU << RCC_LPOSCTR_TRIM_Pos)
  127. #define RCC_LPOSCTR_TRIM RCC_LPOSCTR_TRIM_Msk
  128. #define RCC_XTLFCR_EN_Pos (8U)
  129. #define RCC_XTLFCR_EN_Msk (0xfU << RCC_XTLFCR_EN_Pos)
  130. #define RCC_XTLFCR_EN RCC_XTLFCR_EN_Msk
  131. #define RCC_XTLFCR_IPW_Pos (0U)
  132. #define RCC_XTLFCR_IPW_Msk (0x7U << RCC_XTLFCR_IPW_Pos)
  133. #define RCC_XTLFCR_IPW RCC_XTLFCR_IPW_Msk
  134. #define RCC_XTHFCR_CFG_Pos (8U)
  135. #define RCC_XTHFCR_CFG_Msk (0x7U << RCC_XTHFCR_CFG_Pos)
  136. #define RCC_XTHFCR_CFG RCC_XTHFCR_CFG_Msk
  137. #define RCC_XTHFCR_EN_Pos (0U)
  138. #define RCC_XTHFCR_EN_Msk (0x1U << RCC_XTHFCR_EN_Pos)
  139. #define RCC_XTHFCR_EN RCC_XTHFCR_EN_Msk
  140. #define RCC_RCMFCR_PSC_Pos (16U)
  141. #define RCC_RCMFCR_PSC_Msk (0x3U << RCC_RCMFCR_PSC_Pos)
  142. #define RCC_RCMFCR_PSC RCC_RCMFCR_PSC_Msk
  143. #define RCC_RCMFCR_EN_Pos (0U)
  144. #define RCC_RCMFCR_EN_Msk (0x1U << RCC_RCMFCR_EN_Pos)
  145. #define RCC_RCMFCR_EN RCC_RCMFCR_EN_Msk
  146. #define RCC_RCHFTR_TRIM_Pos (0U)
  147. #define RCC_RCHFTR_TRIM_Msk (0x7fU << RCC_RCHFTR_TRIM_Pos)
  148. #define RCC_RCHFTR_TRIM RCC_RCHFTR_TRIM_Msk
  149. #define RCC_OPCCR1_EXTICKS_Pos (30U)
  150. #define RCC_OPCCR1_EXTICKS_Msk (0x1U << RCC_OPCCR1_EXTICKS_Pos)
  151. #define RCC_OPCCR1_EXTICKS RCC_OPCCR1_EXTICKS_Msk
  152. #define RCC_OPCCR1_LPUART1CKS_Pos (26U)
  153. #define RCC_OPCCR1_LPUART1CKS_Msk (0x3U << RCC_OPCCR1_LPUART1CKS_Pos)
  154. #define RCC_OPCCR1_LPUART1CKS RCC_OPCCR1_LPUART1CKS_Msk
  155. #define RCC_OPCCR1_LPUART0CKS_Pos (24U)
  156. #define RCC_OPCCR1_LPUART0CKS_Msk (0x3U << RCC_OPCCR1_LPUART0CKS_Pos)
  157. #define RCC_OPCCR1_LPUART0CKS RCC_OPCCR1_LPUART0CKS_Msk
  158. #define RCC_OPCCR1_I2CCKS_Pos (16U)
  159. #define RCC_OPCCR1_I2CCKS_Msk (0x3U << RCC_OPCCR1_I2CCKS_Pos)
  160. #define RCC_OPCCR1_I2CCKS RCC_OPCCR1_I2CCKS_Msk
  161. #define RCC_OPCCR1_ATCKS_Pos (6U)
  162. #define RCC_OPCCR1_ATCKS_Msk (0x3U << RCC_OPCCR1_ATCKS_Pos)
  163. #define RCC_OPCCR1_ATCKS RCC_OPCCR1_ATCKS_Msk
  164. #define RCC_OPCCR1_UART1CKS_Pos (2U)
  165. #define RCC_OPCCR1_UART1CKS_Msk (0x3U << RCC_OPCCR1_UART1CKS_Pos)
  166. #define RCC_OPCCR1_UART1CKS RCC_OPCCR1_UART1CKS_Msk
  167. #define RCC_OPCCR1_UART0CKS_Pos (0U)
  168. #define RCC_OPCCR1_UART0CKS_Msk (0x3U << RCC_OPCCR1_UART0CKS_Pos)
  169. #define RCC_OPCCR1_UART0CKS RCC_OPCCR1_UART0CKS_Msk
  170. #define RCC_OPCCR2_RNGPRSC_Pos (28U)
  171. #define RCC_OPCCR2_RNGPRSC_Msk (0x7U << RCC_OPCCR2_RNGPRSC_Pos)
  172. #define RCC_OPCCR2_RNGPRSC RCC_OPCCR2_RNGPRSC_Msk
  173. #define RCC_OPCCR2_ADCPRSC_Pos (24U)
  174. #define RCC_OPCCR2_ADCPRSC_Msk (0x7U << RCC_OPCCR2_ADCPRSC_Pos)
  175. #define RCC_OPCCR2_ADCPRSC RCC_OPCCR2_ADCPRSC_Msk
  176. #define RCC_OPCCR2_USBCKS_Pos (18U)
  177. #define RCC_OPCCR2_USBCKS_Msk (0x3U << RCC_OPCCR2_USBCKS_Pos)
  178. #define RCC_OPCCR2_USBCKS RCC_OPCCR2_USBCKS_Msk
  179. #define RCC_OPCCR2_ADCCKS_Pos (16U)
  180. #define RCC_OPCCR2_ADCCKS_Msk (0x3U << RCC_OPCCR2_ADCCKS_Pos)
  181. #define RCC_OPCCR2_ADCCKS RCC_OPCCR2_ADCCKS_Msk
  182. #define RCC_OPCCR2_LPT32CKS_Pos (8U)
  183. #define RCC_OPCCR2_LPT32CKS_Msk (0x3U << RCC_OPCCR2_LPT32CKS_Pos)
  184. #define RCC_OPCCR2_LPT32CKS RCC_OPCCR2_LPT32CKS_Msk
  185. #define RCC_OPCCR2_BT32CKS_Pos (0U)
  186. #define RCC_OPCCR2_BT32CKS_Msk (0x3U << RCC_OPCCR2_BT32CKS_Pos)
  187. #define RCC_OPCCR2_BT32CKS RCC_OPCCR2_BT32CKS_Msk
  188. #define RCC_AHBMCR_MPRIL_Pos (0U)
  189. #define RCC_AHBMCR_MPRIL_Msk (0x1U << RCC_AHBMCR_MPRIL_Pos)
  190. #define RCC_AHBMCR_MPRIL RCC_AHBMCR_MPRIL_Msk
  191. #define RCC_LSCLKSEL_SEL_Pos (0U)
  192. #define RCC_LSCLKSEL_SEL_Msk (0xffU << RCC_LSCLKSEL_SEL_Pos)
  193. #define RCC_LSCLKSEL_SEL RCC_LSCLKSEL_SEL_Msk
  194. #define RCC_PHYCR_PHYRST_Pos (4U)
  195. #define RCC_PHYCR_PHYRST_Msk (0x1U << RCC_PHYCR_PHYRST_Pos)
  196. #define RCC_PHYCR_PHYRST RCC_PHYCR_PHYRST_Msk
  197. #define RCC_PHYCR_PD_Pos (3U)
  198. #define RCC_PHYCR_PD_Msk (0x1U << RCC_PHYCR_PD_Pos)
  199. #define RCC_PHYCR_PD RCC_PHYCR_PD_Msk
  200. #define RCC_PHYCR_PLVREADY_Pos (2U)
  201. #define RCC_PHYCR_PLVREADY_Msk (0x1U << RCC_PHYCR_PLVREADY_Pos)
  202. #define RCC_PHYCR_PLVREADY RCC_PHYCR_PLVREADY_Msk
  203. #define RCC_PHYCR_BCKPD_Pos (1U)
  204. #define RCC_PHYCR_BCKPD_Msk (0x1U << RCC_PHYCR_BCKPD_Pos)
  205. #define RCC_PHYCR_BCKPD RCC_PHYCR_BCKPD_Msk
  206. #define RCC_PHYCR_BCKRST_Pos (0U)
  207. #define RCC_PHYCR_BCKRST_Msk (0x1U << RCC_PHYCR_BCKRST_Pos)
  208. #define RCC_PHYCR_BCKRST RCC_PHYCR_BCKRST_Msk
  209. #define RCC_PHYBCKCR_CK48M_EN_Pos (8U)
  210. #define RCC_PHYBCKCR_CK48M_EN_Msk (0x1U << RCC_PHYBCKCR_CK48M_EN_Pos)
  211. #define RCC_PHYBCKCR_CK48M_EN RCC_PHYBCKCR_CK48M_EN_Msk
  212. #define RCC_PHYBCKCR_CLKRDY_Pos (7U)
  213. #define RCC_PHYBCKCR_CLKRDY_Msk (0x1U << RCC_PHYBCKCR_CLKRDY_Pos)
  214. #define RCC_PHYBCKCR_CLKRDY RCC_PHYBCKCR_CLKRDY_Msk
  215. #define RCC_PHYBCKCR_OUTCLKSEL_Pos (0U)
  216. #define RCC_PHYBCKCR_OUTCLKSEL_Msk (0x1U << RCC_PHYBCKCR_OUTCLKSEL_Pos)
  217. #define RCC_PHYBCKCR_OUTCLKSEL RCC_PHYBCKCR_OUTCLKSEL_Msk
  218. #define RCC_LKPCR_RST_EN_Pos (1U)
  219. #define RCC_LKPCR_RST_EN_Msk (0x1U << RCC_LKPCR_RST_EN_Pos)
  220. #define RCC_LKPCR_RST_EN RCC_LKPCR_RST_EN_Msk
  221. #define RCC_RSTFR_MDFN_FLAG_Pos (12U)
  222. #define RCC_RSTFR_MDFN_FLAG_Msk (0x1U << RCC_RSTFR_MDFN_FLAG_Pos)
  223. #define RCC_RSTFR_MDFN_FLAG RCC_RSTFR_MDFN_FLAG_Msk
  224. #define RCC_RSTFR_NRSTN_FLAG_Pos (11U)
  225. #define RCC_RSTFR_NRSTN_FLAG_Msk (0x1U << RCC_RSTFR_NRSTN_FLAG_Pos)
  226. #define RCC_RSTFR_NRSTN_FLAG RCC_RSTFR_NRSTN_FLAG_Msk
  227. #define RCC_RSTFR_TESTN_FLAG_Pos (10U)
  228. #define RCC_RSTFR_TESTN_FLAG_Msk (0x1U << RCC_RSTFR_TESTN_FLAG_Pos)
  229. #define RCC_RSTFR_TESTN_FLAG RCC_RSTFR_TESTN_FLAG_Msk
  230. #define RCC_RSTFR_PORN_FLAG_Pos (9U)
  231. #define RCC_RSTFR_PORN_FLAG_Msk (0x1U << RCC_RSTFR_PORN_FLAG_Pos)
  232. #define RCC_RSTFR_PORN_FLAG RCC_RSTFR_PORN_FLAG_Msk
  233. #define RCC_RSTFR_PDRN_FLAG_Pos (8U)
  234. #define RCC_RSTFR_PDRN_FLAG_Msk (0x1U << RCC_RSTFR_PDRN_FLAG_Pos)
  235. #define RCC_RSTFR_PDRN_FLAG RCC_RSTFR_PDRN_FLAG_Msk
  236. #define RCC_RSTFR_SOFTN_FLAG_Pos (5U)
  237. #define RCC_RSTFR_SOFTN_FLAG_Msk (0x1U << RCC_RSTFR_SOFTN_FLAG_Pos)
  238. #define RCC_RSTFR_SOFTN_FLAG RCC_RSTFR_SOFTN_FLAG_Msk
  239. #define RCC_RSTFR_IWDTN_FLAG_Pos (4U)
  240. #define RCC_RSTFR_IWDTN_FLAG_Msk (0x1U << RCC_RSTFR_IWDTN_FLAG_Pos)
  241. #define RCC_RSTFR_IWDTN_FLAG RCC_RSTFR_IWDTN_FLAG_Msk
  242. #define RCC_RSTFR_WWDTN_FLAG_Pos (2U)
  243. #define RCC_RSTFR_WWDTN_FLAG_Msk (0x1U << RCC_RSTFR_WWDTN_FLAG_Pos)
  244. #define RCC_RSTFR_WWDTN_FLAG RCC_RSTFR_WWDTN_FLAG_Msk
  245. #define RCC_RSTFR_LKUPN_FLAG_Pos (1U)
  246. #define RCC_RSTFR_LKUPN_FLAG_Msk (0x1U << RCC_RSTFR_LKUPN_FLAG_Pos)
  247. #define RCC_RSTFR_LKUPN_FLAG RCC_RSTFR_LKUPN_FLAG_Msk
  248. #define RCC_RSTFR_NVICN_FLAG_Pos (0U)
  249. #define RCC_RSTFR_NVICN_FLAG_Msk (0x1U << RCC_RSTFR_NVICN_FLAG_Pos)
  250. #define RCC_RSTFR_NVICN_FLAG RCC_RSTFR_NVICN_FLAG_Msk
  251. #define FL_RCC_GROUP1_BUSCLK_LPTIM32 (0x1U << 0U)
  252. #define FL_RCC_GROUP1_BUSCLK_USB (0x1U << 1U)
  253. #define FL_RCC_GROUP1_BUSCLK_RTC (0x1U << 2U)
  254. #define FL_RCC_GROUP1_BUSCLK_PMU (0x1U << 3U)
  255. #define FL_RCC_GROUP1_BUSCLK_SCU (0x1U << 4U)
  256. #define FL_RCC_GROUP1_BUSCLK_IWDT (0x1U << 5U)
  257. #define FL_RCC_GROUP1_BUSCLK_ANAC (0x1U << 6U)
  258. #define FL_RCC_GROUP1_BUSCLK_PAD (0x1U << 7U)
  259. #define FL_RCC_GROUP1_BUSCLK_DCU (0x1U << 31U)
  260. #define FL_RCC_GROUP2_BUSCLK_CRC (0x1U << 0U)
  261. #define FL_RCC_GROUP2_BUSCLK_RNG (0x1U << 1U)
  262. #define FL_RCC_GROUP2_BUSCLK_AES (0x1U << 2U)
  263. #define FL_RCC_GROUP2_BUSCLK_LCD (0x1U << 3U)
  264. #define FL_RCC_GROUP2_BUSCLK_DMA (0x1U << 4U)
  265. #define FL_RCC_GROUP2_BUSCLK_FLASH (0x1U << 5U)
  266. #define FL_RCC_GROUP2_BUSCLK_RAMBIST (0x1U << 6U)
  267. #define FL_RCC_GROUP2_BUSCLK_WWDT (0x1U << 7U)
  268. #define FL_RCC_GROUP2_BUSCLK_ADC (0x1U << 8U)
  269. #define FL_RCC_GROUP2_BUSCLK_HDIV (0x1U << 9U)
  270. #define FL_RCC_GROUP3_BUSCLK_SPI1 (0x1U << 0U)
  271. #define FL_RCC_GROUP3_BUSCLK_SPI2 (0x1U << 1U)
  272. #define FL_RCC_GROUP3_BUSCLK_UART0 (0x1U << 8U)
  273. #define FL_RCC_GROUP3_BUSCLK_UART1 (0x1U << 9U)
  274. #define FL_RCC_GROUP3_BUSCLK_UART4 (0x1U << 12U)
  275. #define FL_RCC_GROUP3_BUSCLK_UART5 (0x1U << 13U)
  276. #define FL_RCC_GROUP3_BUSCLK_UARTIR (0x1U << 14U)
  277. #define FL_RCC_GROUP3_BUSCLK_LPUART0 (0x1U << 15U)
  278. #define FL_RCC_GROUP3_BUSCLK_U7816 (0x1U << 16U)
  279. #define FL_RCC_GROUP3_BUSCLK_LPUART1 (0x1U << 18U)
  280. #define FL_RCC_GROUP3_BUSCLK_I2C (0x1U << 24U)
  281. #define FL_RCC_GROUP4_BUSCLK_BSTIM32 (0x1U << 0U)
  282. #define FL_RCC_GROUP4_BUSCLK_GPTIM0 (0x1U << 2U)
  283. #define FL_RCC_GROUP4_BUSCLK_GPTIM1 (0x1U << 3U)
  284. #define FL_RCC_GROUP4_BUSCLK_ATIM (0x1U << 4U)
  285. #define FL_RCC_GROUP1_OPCLK_EXTI (0x1U << 31U)
  286. #define FL_RCC_GROUP1_OPCLK_LPUART1 (0x1U << 29U)
  287. #define FL_RCC_GROUP1_OPCLK_LPUART0 (0x1U << 28U)
  288. #define FL_RCC_GROUP1_OPCLK_I2C (0x1U << 20U)
  289. #define FL_RCC_GROUP1_OPCLK_ATIM (0x1U << 15U)
  290. #define FL_RCC_GROUP1_OPCLK_UART1 (0x1U << 9U)
  291. #define FL_RCC_GROUP1_OPCLK_UART0 (0x1U << 8U)
  292. #define FL_RCC_GROUP2_OPCLK_USB (0x1U << 23U)
  293. #define FL_RCC_GROUP2_OPCLK_FLASH (0x1U << 22U)
  294. #define FL_RCC_GROUP2_OPCLK_RNG (0x1U << 21U)
  295. #define FL_RCC_GROUP2_OPCLK_ADC (0x1U << 20U)
  296. #define FL_RCC_GROUP2_OPCLK_LPTIM32 (0x1U << 12U)
  297. #define FL_RCC_GROUP2_OPCLK_BSTIM32 (0x1U << 4U)
  298. #define FL_RCC_RSTAHB_DMA (0x1U << 0U)
  299. #define FL_RCC_RSTAHB_USB (0x1U << 1U)
  300. #define FL_RCC_RSTAPB_UART5 (0x1U << 31U)
  301. #define FL_RCC_RSTAPB_UART4 (0x1U << 30U)
  302. #define FL_RCC_RSTAPB_GPTIM1 (0x1U << 25U)
  303. #define FL_RCC_RSTAPB_GPTIM0 (0x1U << 24U)
  304. #define FL_RCC_RSTAPB_LCD (0x1U << 16U)
  305. #define FL_RCC_RSTAPB_U7816 (0x1U << 14U)
  306. #define FL_RCC_RSTAPB_SPI2 (0x1U << 10U)
  307. #define FL_RCC_RSTAPB_LPUART0 (0x1U << 6U)
  308. #define FL_RCC_RSTAPB_I2C (0x1U << 3U)
  309. #define FL_RCC_RSTAPB_LPTIM32 (0x1U << 0U)
  310. #define FL_RCC_RSTAPB_ATIM (0x1U << 31U)
  311. #define FL_RCC_RSTAPB_BSTIM32 (0x1U << 28U)
  312. #define FL_RCC_RSTAPB_ADCCR (0x1U << 24U)
  313. #define FL_RCC_RSTAPB_ADC (0x1U << 23U)
  314. #define FL_RCC_RSTAPB_OPA (0x1U << 22U)
  315. #define FL_RCC_RSTAPB_DIVAS (0x1U << 19U)
  316. #define FL_RCC_RSTAPB_AES (0x1U << 18U)
  317. #define FL_RCC_RSTAPB_CRC (0x1U << 17U)
  318. #define FL_RCC_RSTAPB_RNG (0x1U << 16U)
  319. #define FL_RCC_RSTAPB_UART1 (0x1U << 12U)
  320. #define FL_RCC_RSTAPB_UART0 (0x1U << 11U)
  321. #define FL_RCC_RSTAPB_SPI1 (0x1U << 9U)
  322. #define FL_RCC_RSTAPB_UCIR (0x1U << 8U)
  323. #define FL_RCC_RSTAPB_LPUART1 (0x1U << 7U)
  324. #define FL_RCC_PERIPHERAL_RESET_KEY 0x13579BDFU
  325. #define FL_RCC_SOFTWARE_RESET_KEY 0x5C5CAABBU
  326. #define FL_RCC_LPUART_CLK_SOURCE_LSCLK 0x0U
  327. #define FL_RCC_LPUART_CLK_SOURCE_RCHF 0x1U
  328. #define FL_RCC_LPUART_CLK_SOURCE_RCMF 0x2U
  329. #define FL_RCC_APB2CLK_PSC_DIV1 (0x0U << RCC_SYSCLKCR_APBPRES2_Pos)
  330. #define FL_RCC_APB2CLK_PSC_DIV2 (0x4U << RCC_SYSCLKCR_APBPRES2_Pos)
  331. #define FL_RCC_APB2CLK_PSC_DIV4 (0x5U << RCC_SYSCLKCR_APBPRES2_Pos)
  332. #define FL_RCC_APB2CLK_PSC_DIV8 (0x6U << RCC_SYSCLKCR_APBPRES2_Pos)
  333. #define FL_RCC_APB2CLK_PSC_DIV16 (0x7U << RCC_SYSCLKCR_APBPRES2_Pos)
  334. #define FL_RCC_APB1CLK_PSC_DIV1 (0x0U << RCC_SYSCLKCR_APBPRES1_Pos)
  335. #define FL_RCC_APB1CLK_PSC_DIV2 (0x4U << RCC_SYSCLKCR_APBPRES1_Pos)
  336. #define FL_RCC_APB1CLK_PSC_DIV4 (0x5U << RCC_SYSCLKCR_APBPRES1_Pos)
  337. #define FL_RCC_APB1CLK_PSC_DIV8 (0x6U << RCC_SYSCLKCR_APBPRES1_Pos)
  338. #define FL_RCC_APB1CLK_PSC_DIV16 (0x7U << RCC_SYSCLKCR_APBPRES1_Pos)
  339. #define FL_RCC_AHBCLK_PSC_DIV1 (0x0U << RCC_SYSCLKCR_AHBPRES_Pos)
  340. #define FL_RCC_AHBCLK_PSC_DIV2 (0x4U << RCC_SYSCLKCR_AHBPRES_Pos)
  341. #define FL_RCC_AHBCLK_PSC_DIV4 (0x5U << RCC_SYSCLKCR_AHBPRES_Pos)
  342. #define FL_RCC_AHBCLK_PSC_DIV8 (0x6U << RCC_SYSCLKCR_AHBPRES_Pos)
  343. #define FL_RCC_AHBCLK_PSC_DIV16 (0x7U << RCC_SYSCLKCR_AHBPRES_Pos)
  344. #define FL_RCC_SYSTICK_CLK_SOURCE_SCLK (0x0U << RCC_SYSCLKCR_STCLKSEL_Pos)
  345. #define FL_RCC_SYSTICK_CLK_SOURCE_LSCLK (0x1U << RCC_SYSCLKCR_STCLKSEL_Pos)
  346. #define FL_RCC_SYSTICK_CLK_SOURCE_RCMF (0x2U << RCC_SYSCLKCR_STCLKSEL_Pos)
  347. #define FL_RCC_SYSTICK_CLK_SOURCE_SYSCLK (0x3U << RCC_SYSCLKCR_STCLKSEL_Pos)
  348. #define FL_RCC_USB_CLK_OUT_48M (0x0U << RCC_SYSCLKCR_BCKOSEL_Pos)
  349. #define FL_RCC_USB_CLK_OUT_120M (0x1U << RCC_SYSCLKCR_BCKOSEL_Pos)
  350. #define FL_RCC_SYSTEM_CLK_SOURCE_RCHF (0x0U << RCC_SYSCLKCR_SYSCLKSEL_Pos)
  351. #define FL_RCC_SYSTEM_CLK_SOURCE_XTHF (0x1U << RCC_SYSCLKCR_SYSCLKSEL_Pos)
  352. #define FL_RCC_SYSTEM_CLK_SOURCE_PLL (0x2U << RCC_SYSCLKCR_SYSCLKSEL_Pos)
  353. #define FL_RCC_SYSTEM_CLK_SOURCE_RCMF_PSC (0x4U << RCC_SYSCLKCR_SYSCLKSEL_Pos)
  354. #define FL_RCC_SYSTEM_CLK_SOURCE_LSCLK (0x5U << RCC_SYSCLKCR_SYSCLKSEL_Pos)
  355. #define FL_RCC_SYSTEM_CLK_SOURCE_LPOSC (0x6U << RCC_SYSCLKCR_SYSCLKSEL_Pos)
  356. #define FL_RCC_SYSTEM_CLK_SOURCE_USBCLK (0x7U << RCC_SYSCLKCR_SYSCLKSEL_Pos)
  357. #define FL_RCC_RCHF_FREQUENCY_8MHZ (0x0U << RCC_RCHFCR_FSEL_Pos)
  358. #define FL_RCC_RCHF_FREQUENCY_16MHZ (0x1U << RCC_RCHFCR_FSEL_Pos)
  359. #define FL_RCC_RCHF_FREQUENCY_24MHZ (0x2U << RCC_RCHFCR_FSEL_Pos)
  360. #define FL_RCC_PLL_CLK_SOURCE_RCHF (0x0U << RCC_PLLCR_INSEL_Pos)
  361. #define FL_RCC_PLL_CLK_SOURCE_XTHF (0x1U << RCC_PLLCR_INSEL_Pos)
  362. #define FL_RCC_PLL_MUL_32 (0x1fU << RCC_PLLCR_DB_Pos)
  363. #define FL_RCC_PLL_MUL_48 (0x2fU << RCC_PLLCR_DB_Pos)
  364. #define FL_RCC_PLL_PSC_DIV1 (0x0U << RCC_PLLCR_REFPRSC_Pos)
  365. #define FL_RCC_PLL_PSC_DIV2 (0x1U << RCC_PLLCR_REFPRSC_Pos)
  366. #define FL_RCC_PLL_PSC_DIV4 (0x2U << RCC_PLLCR_REFPRSC_Pos)
  367. #define FL_RCC_PLL_PSC_DIV8 (0x3U << RCC_PLLCR_REFPRSC_Pos)
  368. #define FL_RCC_PLL_PSC_DIV12 (0x4U << RCC_PLLCR_REFPRSC_Pos)
  369. #define FL_RCC_PLL_PSC_DIV16 (0x5U << RCC_PLLCR_REFPRSC_Pos)
  370. #define FL_RCC_PLL_PSC_DIV24 (0x6U << RCC_PLLCR_REFPRSC_Pos)
  371. #define FL_RCC_PLL_PSC_DIV32 (0x7U << RCC_PLLCR_REFPRSC_Pos)
  372. #define FL_RCC_PLL_OUTPUT_X1 (0x0U << RCC_PLLCR_OSEL_Pos)
  373. #define FL_RCC_PLL_OUTPUT_X2 (0x1U << RCC_PLLCR_OSEL_Pos)
  374. #define FL_RCC_XTLF_FDET_ENABLE (0x5U << RCC_XTLFCR_EN_Pos)
  375. #define FL_RCC_XTLF_FDET_DISABLE (0xaU << RCC_XTLFCR_EN_Pos)
  376. #define FL_RCC_XTLF_WORK_CURRENT_450NA (0x0U << RCC_XTLFCR_IPW_Pos)
  377. #define FL_RCC_XTLF_WORK_CURRENT_400NA (0x1U << RCC_XTLFCR_IPW_Pos)
  378. #define FL_RCC_XTLF_WORK_CURRENT_350NA (0x2U << RCC_XTLFCR_IPW_Pos)
  379. #define FL_RCC_XTLF_WORK_CURRENT_300NA (0x3U << RCC_XTLFCR_IPW_Pos)
  380. #define FL_RCC_XTLF_WORK_CURRENT_250NA (0x4U << RCC_XTLFCR_IPW_Pos)
  381. #define FL_RCC_XTLF_WORK_CURRENT_200NA (0x5U << RCC_XTLFCR_IPW_Pos)
  382. #define FL_RCC_XTLF_WORK_CURRENT_150NA (0x6U << RCC_XTLFCR_IPW_Pos)
  383. #define FL_RCC_XTLF_WORK_CURRENT_100NA (0x7U << RCC_XTLFCR_IPW_Pos)
  384. #define FL_RCC_RCMF_PSC_DIV1 (0x0U << RCC_RCMFCR_PSC_Pos)
  385. #define FL_RCC_RCMF_PSC_DIV4 (0x1U << RCC_RCMFCR_PSC_Pos)
  386. #define FL_RCC_RCMF_PSC_DIV8 (0x2U << RCC_RCMFCR_PSC_Pos)
  387. #define FL_RCC_RCMF_PSC_DIV16 (0x3U << RCC_RCMFCR_PSC_Pos)
  388. #define FL_RCC_EXTI_CLK_SOURCE_LSCLK (0x1U << RCC_OPCCR1_EXTICKS_Pos)
  389. #define FL_RCC_EXTI_CLK_SOURCE_HCLK (0x0U << RCC_OPCCR1_EXTICKS_Pos)
  390. #define FL_RCC_LPUART1_CLK_SOURCE_LSCLK (0x0U << RCC_OPCCR1_LPUART1CKS_Pos)
  391. #define FL_RCC_LPUART1_CLK_SOURCE_RCHF (0x1U << RCC_OPCCR1_LPUART1CKS_Pos)
  392. #define FL_RCC_LPUART1_CLK_SOURCE_RCMF (0x2U << RCC_OPCCR1_LPUART1CKS_Pos)
  393. #define FL_RCC_LPUART0_CLK_SOURCE_LSCLK (0x0U << RCC_OPCCR1_LPUART0CKS_Pos)
  394. #define FL_RCC_LPUART0_CLK_SOURCE_RCHF (0x1U << RCC_OPCCR1_LPUART0CKS_Pos)
  395. #define FL_RCC_LPUART0_CLK_SOURCE_RCMF (0x2U << RCC_OPCCR1_LPUART0CKS_Pos)
  396. #define FL_RCC_I2C_CLK_SOURCE_APB1CLK (0x0U << RCC_OPCCR1_I2CCKS_Pos)
  397. #define FL_RCC_I2C_CLK_SOURCE_RCHF (0x1U << RCC_OPCCR1_I2CCKS_Pos)
  398. #define FL_RCC_I2C_CLK_SOURCE_SYSCLK (0x2U << RCC_OPCCR1_I2CCKS_Pos)
  399. #define FL_RCC_I2C_CLK_SOURCE_RCMF_PSC (0x3U << RCC_OPCCR1_I2CCKS_Pos)
  400. #define FL_RCC_ATIM_CLK_SOURCE_APB2CLK (0x0U << RCC_OPCCR1_ATCKS_Pos)
  401. #define FL_RCC_ATIM_CLK_SOURCE_USBPHYBCK120M (0x1U << RCC_OPCCR1_ATCKS_Pos)
  402. #define FL_RCC_ATIM_CLK_SOURCE_PLLx2 (0x3U << RCC_OPCCR1_ATCKS_Pos)
  403. #define FL_RCC_UART1_CLK_SOURCE_APB1CLK (0x0U << RCC_OPCCR1_UART1CKS_Pos)
  404. #define FL_RCC_UART1_CLK_SOURCE_RCHF (0x1U << RCC_OPCCR1_UART1CKS_Pos)
  405. #define FL_RCC_UART1_CLK_SOURCE_SYSCLK (0x2U << RCC_OPCCR1_UART1CKS_Pos)
  406. #define FL_RCC_UART1_CLK_SOURCE_RCMF_PSC (0x3U << RCC_OPCCR1_UART1CKS_Pos)
  407. #define FL_RCC_UART0_CLK_SOURCE_APB1CLK (0x0U << RCC_OPCCR1_UART0CKS_Pos)
  408. #define FL_RCC_UART0_CLK_SOURCE_RCHF (0x1U << RCC_OPCCR1_UART0CKS_Pos)
  409. #define FL_RCC_UART0_CLK_SOURCE_SYSCLK (0x2U << RCC_OPCCR1_UART0CKS_Pos)
  410. #define FL_RCC_UART0_CLK_SOURCE_RCMF_PSC (0x3U << RCC_OPCCR1_UART0CKS_Pos)
  411. #define FL_RCC_RNG_PSC_DIV1 (0x0U << RCC_OPCCR2_RNGPRSC_Pos)
  412. #define FL_RCC_RNG_PSC_DIV2 (0x1U << RCC_OPCCR2_RNGPRSC_Pos)
  413. #define FL_RCC_RNG_PSC_DIV4 (0x2U << RCC_OPCCR2_RNGPRSC_Pos)
  414. #define FL_RCC_RNG_PSC_DIV8 (0x3U << RCC_OPCCR2_RNGPRSC_Pos)
  415. #define FL_RCC_RNG_PSC_DIV16 (0x4U << RCC_OPCCR2_RNGPRSC_Pos)
  416. #define FL_RCC_RNG_PSC_DIV32 (0x5U << RCC_OPCCR2_RNGPRSC_Pos)
  417. #define FL_RCC_ADC_PSC_DIV1 (0x0U << RCC_OPCCR2_ADCPRSC_Pos)
  418. #define FL_RCC_ADC_PSC_DIV2 (0x1U << RCC_OPCCR2_ADCPRSC_Pos)
  419. #define FL_RCC_ADC_PSC_DIV4 (0x2U << RCC_OPCCR2_ADCPRSC_Pos)
  420. #define FL_RCC_ADC_PSC_DIV8 (0x3U << RCC_OPCCR2_ADCPRSC_Pos)
  421. #define FL_RCC_ADC_PSC_DIV16 (0x4U << RCC_OPCCR2_ADCPRSC_Pos)
  422. #define FL_RCC_ADC_PSC_DIV32 (0x5U << RCC_OPCCR2_ADCPRSC_Pos)
  423. #define FL_RCC_USB_CLK_REF_XTLF (0x0U << RCC_OPCCR2_USBCKS_Pos)
  424. #define FL_RCC_USB_CLK_REF_XTHF (0x1U << RCC_OPCCR2_USBCKS_Pos)
  425. #define FL_RCC_USB_CLK_REF_RCHF (0x2U << RCC_OPCCR2_USBCKS_Pos)
  426. #define FL_RCC_ADC_CLK_SOURCE_RCMF_PSC (0x0U << RCC_OPCCR2_ADCCKS_Pos)
  427. #define FL_RCC_ADC_CLK_SOURCE_RCHF (0x1U << RCC_OPCCR2_ADCCKS_Pos)
  428. #define FL_RCC_ADC_CLK_SOURCE_XTHF (0x2U << RCC_OPCCR2_ADCCKS_Pos)
  429. #define FL_RCC_ADC_CLK_SOURCE_PLL (0x3U << RCC_OPCCR2_ADCCKS_Pos)
  430. #define FL_RCC_LPTIM32_CLK_SOURCE_APB1CLK (0x0U << RCC_OPCCR2_LPT32CKS_Pos)
  431. #define FL_RCC_LPTIM32_CLK_SOURCE_LSCLK (0x1U << RCC_OPCCR2_LPT32CKS_Pos)
  432. #define FL_RCC_LPTIM32_CLK_SOURCE_LPOSC (0x2U << RCC_OPCCR2_LPT32CKS_Pos)
  433. #define FL_RCC_LPTIM32_CLK_SOURCE_RCMF_PSC (0x3U << RCC_OPCCR2_LPT32CKS_Pos)
  434. #define FL_RCC_BSTIM32_CLK_SOURCE_APB2CLK (0x0U << RCC_OPCCR2_BT32CKS_Pos)
  435. #define FL_RCC_BSTIM32_CLK_SOURCE_LSCLK (0x1U << RCC_OPCCR2_BT32CKS_Pos)
  436. #define FL_RCC_BSTIM32_CLK_SOURCE_LPOSC (0x2U << RCC_OPCCR2_BT32CKS_Pos)
  437. #define FL_RCC_BSTIM32_CLK_SOURCE_RCMF_PSC (0x3U << RCC_OPCCR2_BT32CKS_Pos)
  438. #define FL_RCC_AHB_MASTER_PRIORITY_DMA_FIRST (0x0U << RCC_AHBMCR_MPRIL_Pos)
  439. #define FL_RCC_AHB_MASTER_PRIORITY_CPU_FIRST (0x1U << RCC_AHBMCR_MPRIL_Pos)
  440. #define FL_RCC_LSCLK_CLK_SOURCE_LPOSC (0x55U << RCC_LSCLKSEL_SEL_Pos)
  441. #define FL_RCC_LSCLK_CLK_SOURCE_XTLF (0xAAU << RCC_LSCLKSEL_SEL_Pos)
  442. #define FL_RCC_USB_CLK_REF_SOURCE_SOF (0x0U << RCC_PHYBCKCR_OUTCLKSEL_Pos)
  443. #define FL_RCC_USB_CLK_REF_SOURCE_CORECLKIN (0x1U << RCC_PHYBCKCR_OUTCLKSEL_Pos)
  444. /**
  445. * @}
  446. */
  447. /* Exported functions ---------------------------------------------------------------------------------*/
  448. /** @defgroup RCC_FL_Exported_Functions RCC Exported Functions
  449. * @{
  450. */
  451. /**
  452. * @brief Enable XTHF Fail Interrupt
  453. * @rmtoll IER HFDET_IE FL_FDET_EnableIT_XTHFFail
  454. * @retval None
  455. */
  456. __STATIC_INLINE void FL_FDET_EnableIT_XTHFFail(void)
  457. {
  458. SET_BIT(FDET->IER, FDET_IER_HFDET_IE_Msk);
  459. }
  460. /**
  461. * @brief Get XTHF Fail Interrupt Enable Status
  462. * @rmtoll IER HFDET_IE FL_FDET_IsEnabledIT_XTHFFail
  463. * @retval State of bit (1 or 0).
  464. */
  465. __STATIC_INLINE uint32_t FL_FDET_IsEnabledIT_XTHFFail(void)
  466. {
  467. return (uint32_t)(READ_BIT(FDET->IER, FDET_IER_HFDET_IE_Msk) == FDET_IER_HFDET_IE_Msk);
  468. }
  469. /**
  470. * @brief Disable XTHF Fail Interrupt
  471. * @rmtoll IER HFDET_IE FL_FDET_DisableIT_XTHFFail
  472. * @retval None
  473. */
  474. __STATIC_INLINE void FL_FDET_DisableIT_XTHFFail(void)
  475. {
  476. CLEAR_BIT(FDET->IER, FDET_IER_HFDET_IE_Msk);
  477. }
  478. /**
  479. * @brief Enable XTLF Fail Interrupt
  480. * @rmtoll IER LFDET_IE FL_FDET_EnableIT_XTLFFail
  481. * @retval None
  482. */
  483. __STATIC_INLINE void FL_FDET_EnableIT_XTLFFail(void)
  484. {
  485. SET_BIT(FDET->IER, FDET_IER_LFDET_IE_Msk);
  486. }
  487. /**
  488. * @brief Get XTLF Fail Interrupt Enable Status
  489. * @rmtoll IER LFDET_IE FL_FDET_IsEnabledIT_XTLFFail
  490. * @retval State of bit (1 or 0).
  491. */
  492. __STATIC_INLINE uint32_t FL_FDET_IsEnabledIT_XTLFFail(void)
  493. {
  494. return (uint32_t)(READ_BIT(FDET->IER, FDET_IER_LFDET_IE_Msk) == FDET_IER_LFDET_IE_Msk);
  495. }
  496. /**
  497. * @brief Disable XTLF Fail Interrupt
  498. * @rmtoll IER LFDET_IE FL_FDET_DisableIT_XTLFFail
  499. * @retval None
  500. */
  501. __STATIC_INLINE void FL_FDET_DisableIT_XTLFFail(void)
  502. {
  503. CLEAR_BIT(FDET->IER, FDET_IER_LFDET_IE_Msk);
  504. }
  505. /**
  506. * @brief Get XTHF Vibrating Output
  507. * @rmtoll ISR HFDETO FL_FDET_IsActiveFlag_XTHFFailOutput
  508. * @retval State of bit (1 or 0).
  509. */
  510. __STATIC_INLINE uint32_t FL_FDET_IsActiveFlag_XTHFFailOutput(void)
  511. {
  512. return (uint32_t)(READ_BIT(FDET->ISR, FDET_ISR_HFDETO_Msk) == (FDET_ISR_HFDETO_Msk));
  513. }
  514. /**
  515. * @brief Get XTLF Vibrating Output
  516. * @rmtoll ISR LFDETO FL_FDET_IsActiveFlag_XTLFFailOutput
  517. * @retval State of bit (1 or 0).
  518. */
  519. __STATIC_INLINE uint32_t FL_FDET_IsActiveFlag_XTLFFailOutput(void)
  520. {
  521. return (uint32_t)(READ_BIT(FDET->ISR, FDET_ISR_LFDETO_Msk) == (FDET_ISR_LFDETO_Msk));
  522. }
  523. /**
  524. * @brief Get XTHF Vibrating Flag
  525. * @rmtoll ISR HFDETIF FL_FDET_IsActiveFlag_XTHFFail
  526. * @retval State of bit (1 or 0).
  527. */
  528. __STATIC_INLINE uint32_t FL_FDET_IsActiveFlag_XTHFFail(void)
  529. {
  530. return (uint32_t)(READ_BIT(FDET->ISR, FDET_ISR_HFDETIF_Msk) == (FDET_ISR_HFDETIF_Msk));
  531. }
  532. /**
  533. * @brief Clear XTHF Vibrating Flag
  534. * @rmtoll ISR HFDETIF FL_FDET_ClearFlag_XTHFFail
  535. * @retval None
  536. */
  537. __STATIC_INLINE void FL_FDET_ClearFlag_XTHFFail(void)
  538. {
  539. WRITE_REG(FDET->ISR, FDET_ISR_LFDETIF_Msk);
  540. }
  541. /**
  542. * @brief Get XTLF Vibrating Output
  543. * @rmtoll ISR LFDETIF FL_FDET_IsActiveFlag_XTLFFail
  544. * @retval State of bit (1 or 0).
  545. */
  546. __STATIC_INLINE uint32_t FL_FDET_IsActiveFlag_XTLFFail(void)
  547. {
  548. return (uint32_t)(READ_BIT(FDET->ISR, FDET_ISR_LFDETIF_Msk) == (FDET_ISR_LFDETIF_Msk));
  549. }
  550. /**
  551. * @brief Clear XTLF Vibrating Output
  552. * @rmtoll ISR LFDETIF FL_FDET_ClearFlag_XTLFFail
  553. * @retval None
  554. */
  555. __STATIC_INLINE void FL_FDET_ClearFlag_XTLFFail(void)
  556. {
  557. WRITE_REG(FDET->ISR, FDET_ISR_HFDETIF_Msk);
  558. }
  559. /**
  560. * @brief Enable LSCLK Auto Switch
  561. * @rmtoll SYSCLKCR LSCATS FL_RCC_EnableLSCLKAutoSwitch
  562. * @retval None
  563. */
  564. __STATIC_INLINE void FL_RCC_EnableLSCLKAutoSwitch(void)
  565. {
  566. SET_BIT(RCC->SYSCLKCR, RCC_SYSCLKCR_LSCATS_Msk);
  567. }
  568. /**
  569. * @brief Get LSCLK Auto Switch Enable Status
  570. * @rmtoll SYSCLKCR LSCATS FL_RCC_IsEnabledLSCLKAutoSwitch
  571. * @retval State of bit (1 or 0).
  572. */
  573. __STATIC_INLINE uint32_t FL_RCC_IsEnabledLSCLKAutoSwitch(void)
  574. {
  575. return (uint32_t)(READ_BIT(RCC->SYSCLKCR, RCC_SYSCLKCR_LSCATS_Msk) == RCC_SYSCLKCR_LSCATS_Msk);
  576. }
  577. /**
  578. * @brief Disable LSCLK Auto Switch
  579. * @rmtoll SYSCLKCR LSCATS FL_RCC_DisableLSCLKAutoSwitch
  580. * @retval None
  581. */
  582. __STATIC_INLINE void FL_RCC_DisableLSCLKAutoSwitch(void)
  583. {
  584. CLEAR_BIT(RCC->SYSCLKCR, RCC_SYSCLKCR_LSCATS_Msk);
  585. }
  586. /**
  587. * @brief Enable Sleep/DeepSleep Mode External Interrupt
  588. * @rmtoll SYSCLKCR SLP_ENEXTI FL_RCC_EnableEXTIOnSleep
  589. * @retval None
  590. */
  591. __STATIC_INLINE void FL_RCC_EnableEXTIOnSleep(void)
  592. {
  593. SET_BIT(RCC->SYSCLKCR, RCC_SYSCLKCR_SLP_ENEXTI_Msk);
  594. }
  595. /**
  596. * @brief Get Sleep/DeepSleep Mode External Interrupt Enable Status
  597. * @rmtoll SYSCLKCR SLP_ENEXTI FL_RCC_IsEnabledEXTIOnSleep
  598. * @retval State of bit (1 or 0).
  599. */
  600. __STATIC_INLINE uint32_t FL_RCC_IsEnabledEXTIOnSleep(void)
  601. {
  602. return (uint32_t)(READ_BIT(RCC->SYSCLKCR, RCC_SYSCLKCR_SLP_ENEXTI_Msk) == RCC_SYSCLKCR_SLP_ENEXTI_Msk);
  603. }
  604. /**
  605. * @brief Disable Sleep/DeepSleep Mode External Interrupt
  606. * @rmtoll SYSCLKCR SLP_ENEXTI FL_RCC_DisableEXTIOnSleep
  607. * @retval None
  608. */
  609. __STATIC_INLINE void FL_RCC_DisableEXTIOnSleep(void)
  610. {
  611. CLEAR_BIT(RCC->SYSCLKCR, RCC_SYSCLKCR_SLP_ENEXTI_Msk);
  612. }
  613. /**
  614. * @brief Set APB2 Prescaler
  615. * @rmtoll SYSCLKCR APBPRES2 FL_RCC_SetAPB2Prescaler
  616. * @param prescaler This parameter can be one of the following values:
  617. * @arg @ref FL_RCC_APB2CLK_PSC_DIV1
  618. * @arg @ref FL_RCC_APB2CLK_PSC_DIV2
  619. * @arg @ref FL_RCC_APB2CLK_PSC_DIV4
  620. * @arg @ref FL_RCC_APB2CLK_PSC_DIV8
  621. * @arg @ref FL_RCC_APB2CLK_PSC_DIV16
  622. * @retval None
  623. */
  624. __STATIC_INLINE void FL_RCC_SetAPB2Prescaler(uint32_t prescaler)
  625. {
  626. MODIFY_REG(RCC->SYSCLKCR, RCC_SYSCLKCR_APBPRES2_Msk, prescaler);
  627. }
  628. /**
  629. * @brief Get APB2 Prescaler
  630. * @rmtoll SYSCLKCR APBPRES2 FL_RCC_GetAPB2Prescaler
  631. * @retval Returned value can be one of the following values:
  632. * @arg @ref FL_RCC_APB2CLK_PSC_DIV1
  633. * @arg @ref FL_RCC_APB2CLK_PSC_DIV2
  634. * @arg @ref FL_RCC_APB2CLK_PSC_DIV4
  635. * @arg @ref FL_RCC_APB2CLK_PSC_DIV8
  636. * @arg @ref FL_RCC_APB2CLK_PSC_DIV16
  637. */
  638. __STATIC_INLINE uint32_t FL_RCC_GetAPB2Prescaler(void)
  639. {
  640. return (uint32_t)(READ_BIT(RCC->SYSCLKCR, RCC_SYSCLKCR_APBPRES2_Msk));
  641. }
  642. /**
  643. * @brief Set APB1 Prescaler
  644. * @rmtoll SYSCLKCR APBPRES1 FL_RCC_SetAPB1Prescaler
  645. * @param prescaler This parameter can be one of the following values:
  646. * @arg @ref FL_RCC_APB1CLK_PSC_DIV1
  647. * @arg @ref FL_RCC_APB1CLK_PSC_DIV2
  648. * @arg @ref FL_RCC_APB1CLK_PSC_DIV4
  649. * @arg @ref FL_RCC_APB1CLK_PSC_DIV8
  650. * @arg @ref FL_RCC_APB1CLK_PSC_DIV16
  651. * @retval None
  652. */
  653. __STATIC_INLINE void FL_RCC_SetAPB1Prescaler(uint32_t prescaler)
  654. {
  655. MODIFY_REG(RCC->SYSCLKCR, RCC_SYSCLKCR_APBPRES1_Msk, prescaler);
  656. }
  657. /**
  658. * @brief Get APB1 Prescaler
  659. * @rmtoll SYSCLKCR APBPRES1 FL_RCC_GetAPB1Prescaler
  660. * @retval Returned value can be one of the following values:
  661. * @arg @ref FL_RCC_APB1CLK_PSC_DIV1
  662. * @arg @ref FL_RCC_APB1CLK_PSC_DIV2
  663. * @arg @ref FL_RCC_APB1CLK_PSC_DIV4
  664. * @arg @ref FL_RCC_APB1CLK_PSC_DIV8
  665. * @arg @ref FL_RCC_APB1CLK_PSC_DIV16
  666. */
  667. __STATIC_INLINE uint32_t FL_RCC_GetAPB1Prescaler(void)
  668. {
  669. return (uint32_t)(READ_BIT(RCC->SYSCLKCR, RCC_SYSCLKCR_APBPRES1_Msk));
  670. }
  671. /**
  672. * @brief Set AHB Prescaler
  673. * @rmtoll SYSCLKCR AHBPRES FL_RCC_SetAHBPrescaler
  674. * @param prescaler This parameter can be one of the following values:
  675. * @arg @ref FL_RCC_AHBCLK_PSC_DIV1
  676. * @arg @ref FL_RCC_AHBCLK_PSC_DIV2
  677. * @arg @ref FL_RCC_AHBCLK_PSC_DIV4
  678. * @arg @ref FL_RCC_AHBCLK_PSC_DIV8
  679. * @arg @ref FL_RCC_AHBCLK_PSC_DIV16
  680. * @retval None
  681. */
  682. __STATIC_INLINE void FL_RCC_SetAHBPrescaler(uint32_t prescaler)
  683. {
  684. MODIFY_REG(RCC->SYSCLKCR, RCC_SYSCLKCR_AHBPRES_Msk, prescaler);
  685. }
  686. /**
  687. * @brief Get AHB Prescaler
  688. * @rmtoll SYSCLKCR AHBPRES FL_RCC_GetAHBPrescaler
  689. * @retval Returned value can be one of the following values:
  690. * @arg @ref FL_RCC_AHBCLK_PSC_DIV1
  691. * @arg @ref FL_RCC_AHBCLK_PSC_DIV2
  692. * @arg @ref FL_RCC_AHBCLK_PSC_DIV4
  693. * @arg @ref FL_RCC_AHBCLK_PSC_DIV8
  694. * @arg @ref FL_RCC_AHBCLK_PSC_DIV16
  695. */
  696. __STATIC_INLINE uint32_t FL_RCC_GetAHBPrescaler(void)
  697. {
  698. return (uint32_t)(READ_BIT(RCC->SYSCLKCR, RCC_SYSCLKCR_AHBPRES_Msk));
  699. }
  700. /**
  701. * @brief Set USB PHY BCK Output Clock Source
  702. * @rmtoll SYSCLKCR BCKOSEL FL_RCC_SetUSBClockOutput
  703. * @param output This parameter can be one of the following values:
  704. * @arg @ref FL_RCC_USB_CLK_OUT_48M
  705. * @arg @ref FL_RCC_USB_CLK_OUT_120M
  706. * @retval None
  707. */
  708. __STATIC_INLINE void FL_RCC_SetUSBClockOutput(uint32_t output)
  709. {
  710. MODIFY_REG(RCC->SYSCLKCR, RCC_SYSCLKCR_BCKOSEL_Msk, output);
  711. }
  712. /**
  713. * @brief Get USB PHY BCK Output Clock Source Setting
  714. * @rmtoll SYSCLKCR BCKOSEL FL_RCC_GetUSBClockOutput
  715. * @retval Returned value can be one of the following values:
  716. * @arg @ref FL_RCC_USB_CLK_OUT_48M
  717. * @arg @ref FL_RCC_USB_CLK_OUT_120M
  718. */
  719. __STATIC_INLINE uint32_t FL_RCC_GetUSBClockOutput(void)
  720. {
  721. return (uint32_t)(READ_BIT(RCC->SYSCLKCR, RCC_SYSCLKCR_BCKOSEL_Msk));
  722. }
  723. /**
  724. * @brief Set System Clock Source
  725. * @rmtoll SYSCLKCR SYSCLKSEL FL_RCC_SetSystemClockSource
  726. * @param clock This parameter can be one of the following values:
  727. * @arg @ref FL_RCC_SYSTEM_CLK_SOURCE_RCHF
  728. * @arg @ref FL_RCC_SYSTEM_CLK_SOURCE_XTHF
  729. * @arg @ref FL_RCC_SYSTEM_CLK_SOURCE_PLL
  730. * @arg @ref FL_RCC_SYSTEM_CLK_SOURCE_RCMF_PSC
  731. * @arg @ref FL_RCC_SYSTEM_CLK_SOURCE_LSCLK
  732. * @arg @ref FL_RCC_SYSTEM_CLK_SOURCE_LPOSC
  733. * @arg @ref FL_RCC_SYSTEM_CLK_SOURCE_USBCLK
  734. * @retval None
  735. */
  736. __STATIC_INLINE void FL_RCC_SetSystemClockSource(uint32_t clock)
  737. {
  738. MODIFY_REG(RCC->SYSCLKCR, RCC_SYSCLKCR_SYSCLKSEL_Msk, clock);
  739. }
  740. /**
  741. * @brief Set System Clock Source Setting
  742. * @rmtoll SYSCLKCR SYSCLKSEL FL_RCC_GetSystemClockSource
  743. * @retval Returned value can be one of the following values:
  744. * @arg @ref FL_RCC_SYSTEM_CLK_SOURCE_RCHF
  745. * @arg @ref FL_RCC_SYSTEM_CLK_SOURCE_XTHF
  746. * @arg @ref FL_RCC_SYSTEM_CLK_SOURCE_PLL
  747. * @arg @ref FL_RCC_SYSTEM_CLK_SOURCE_RCMF_PSC
  748. * @arg @ref FL_RCC_SYSTEM_CLK_SOURCE_LSCLK
  749. * @arg @ref FL_RCC_SYSTEM_CLK_SOURCE_LPOSC
  750. * @arg @ref FL_RCC_SYSTEM_CLK_SOURCE_USBCLK
  751. */
  752. __STATIC_INLINE uint32_t FL_RCC_GetSystemClockSource(void)
  753. {
  754. return (uint32_t)(READ_BIT(RCC->SYSCLKCR, RCC_SYSCLKCR_SYSCLKSEL_Msk));
  755. }
  756. /**
  757. * @brief Set RCHF Frequency
  758. * @rmtoll RCHFCR FSEL FL_RCC_RCHF_SetFrequency
  759. * @param frequency This parameter can be one of the following values:
  760. * @arg @ref FL_RCC_RCHF_FREQUENCY_8MHZ
  761. * @arg @ref FL_RCC_RCHF_FREQUENCY_16MHZ
  762. * @arg @ref FL_RCC_RCHF_FREQUENCY_24MHZ
  763. * @retval None
  764. */
  765. __STATIC_INLINE void FL_RCC_RCHF_SetFrequency(uint32_t frequency)
  766. {
  767. MODIFY_REG(RCC->RCHFCR, RCC_RCHFCR_FSEL_Msk, frequency);
  768. }
  769. /**
  770. * @brief Get RCHF Frequency Setting
  771. * @rmtoll RCHFCR FSEL FL_RCC_RCHF_GetFrequency
  772. * @retval Returned value can be one of the following values:
  773. * @arg @ref FL_RCC_RCHF_FREQUENCY_8MHZ
  774. * @arg @ref FL_RCC_RCHF_FREQUENCY_16MHZ
  775. * @arg @ref FL_RCC_RCHF_FREQUENCY_24MHZ
  776. */
  777. __STATIC_INLINE uint32_t FL_RCC_RCHF_GetFrequency(void)
  778. {
  779. return (uint32_t)(READ_BIT(RCC->RCHFCR, RCC_RCHFCR_FSEL_Msk));
  780. }
  781. /**
  782. * @brief Enable RCHF
  783. * @rmtoll RCHFCR EN FL_RCC_RCHF_Enable
  784. * @retval None
  785. */
  786. __STATIC_INLINE void FL_RCC_RCHF_Enable(void)
  787. {
  788. SET_BIT(RCC->RCHFCR, RCC_RCHFCR_EN_Msk);
  789. }
  790. /**
  791. * @brief Get RCHF Enable Status
  792. * @rmtoll RCHFCR EN FL_RCC_RCHF_IsEnabled
  793. * @retval State of bit (1 or 0).
  794. */
  795. __STATIC_INLINE uint32_t FL_RCC_RCHF_IsEnabled(void)
  796. {
  797. return (uint32_t)(READ_BIT(RCC->RCHFCR, RCC_RCHFCR_EN_Msk) == RCC_RCHFCR_EN_Msk);
  798. }
  799. /**
  800. * @brief Disable RCHF
  801. * @rmtoll RCHFCR EN FL_RCC_RCHF_Disable
  802. * @retval None
  803. */
  804. __STATIC_INLINE void FL_RCC_RCHF_Disable(void)
  805. {
  806. CLEAR_BIT(RCC->RCHFCR, RCC_RCHFCR_EN_Msk);
  807. }
  808. /**
  809. * @brief Set RCMF Frequency Trim Value
  810. * @rmtoll RCMFTR TRIM FL_RCC_RCMF_WriteTrimValue
  811. * @param value TrimValue The value of RCMF trim
  812. * @retval None
  813. */
  814. __STATIC_INLINE void FL_RCC_RCMF_WriteTrimValue(uint32_t value)
  815. {
  816. MODIFY_REG(RCC->RCMFTR, (0x7fU << 0U), (value << 0U));
  817. }
  818. /**
  819. * @brief Get RCMF Frequency Trim Value
  820. * @rmtoll RCMFTR TRIM FL_RCC_RCMF_ReadTrimValue
  821. * @retval The Value of RCMF trim
  822. */
  823. __STATIC_INLINE uint32_t FL_RCC_RCMF_ReadTrimValue(void)
  824. {
  825. return (uint32_t)(READ_BIT(RCC->RCMFTR, 0x7fU) >> 0U);
  826. }
  827. /**
  828. * @brief Enable PLL
  829. * @rmtoll PLLCR EN FL_RCC_PLL_Enable
  830. * @retval None
  831. */
  832. __STATIC_INLINE void FL_RCC_PLL_Enable(void)
  833. {
  834. SET_BIT(RCC->PLLCR, RCC_PLLCR_EN_Msk);
  835. }
  836. /**
  837. * @brief Get PLL Enable Status
  838. * @rmtoll PLLCR EN FL_RCC_PLL_Disable
  839. * @retval None
  840. */
  841. __STATIC_INLINE void FL_RCC_PLL_Disable(void)
  842. {
  843. CLEAR_BIT(RCC->PLLCR, RCC_PLLCR_EN_Msk);
  844. }
  845. /**
  846. * @brief Disable PLL
  847. * @rmtoll PLLCR EN FL_RCC_PLL_IsEnabled
  848. * @retval State of bit (1 or 0).
  849. */
  850. __STATIC_INLINE uint32_t FL_RCC_PLL_IsEnabled(void)
  851. {
  852. return (uint32_t)(READ_BIT(RCC->PLLCR, RCC_PLLCR_EN_Msk) == RCC_PLLCR_EN_Msk);
  853. }
  854. /**
  855. * @brief Get PLL Ready Status
  856. * @rmtoll PLLCR LOCKED FL_RCC_IsActiveFlag_PLLReady
  857. * @retval State of bit (1 or 0).
  858. */
  859. __STATIC_INLINE uint32_t FL_RCC_IsActiveFlag_PLLReady(void)
  860. {
  861. return (uint32_t)(READ_BIT(RCC->PLLCR, RCC_PLLCR_LOCKED_Msk) == (RCC_PLLCR_LOCKED_Msk));
  862. }
  863. /**
  864. * @brief Set PLL Input Source
  865. * @rmtoll PLLCR INSEL FL_RCC_PLL_SetClockSource
  866. * @param clock This parameter can be one of the following values:
  867. * @arg @ref FL_RCC_PLL_CLK_SOURCE_RCHF
  868. * @arg @ref FL_RCC_PLL_CLK_SOURCE_XTHF
  869. * @retval None
  870. */
  871. __STATIC_INLINE void FL_RCC_PLL_SetClockSource(uint32_t clock)
  872. {
  873. MODIFY_REG(RCC->PLLCR, RCC_PLLCR_INSEL_Msk, clock);
  874. }
  875. /**
  876. * @brief Get PLL Input Source Setting
  877. * @rmtoll PLLCR INSEL FL_RCC_PLL_GetClockSource
  878. * @retval Returned value can be one of the following values:
  879. * @arg @ref FL_RCC_PLL_CLK_SOURCE_RCHF
  880. * @arg @ref FL_RCC_PLL_CLK_SOURCE_XTHF
  881. */
  882. __STATIC_INLINE uint32_t FL_RCC_PLL_GetClockSource(void)
  883. {
  884. return (uint32_t)(READ_BIT(RCC->PLLCR, RCC_PLLCR_INSEL_Msk));
  885. }
  886. /**
  887. * @brief Set PLL Multiplier
  888. * @rmtoll PLLCR DB FL_RCC_PLL_WriteMultiplier
  889. * @param multiplier
  890. * @retval None
  891. */
  892. __STATIC_INLINE void FL_RCC_PLL_WriteMultiplier(uint32_t multiplier)
  893. {
  894. MODIFY_REG(RCC->PLLCR, (0x7fU << 16U), (multiplier << 16U));
  895. }
  896. /**
  897. * @brief Get PLL Multiplier Setting
  898. * @rmtoll PLLCR DB FL_RCC_PLL_ReadMultiplier
  899. * @retval
  900. */
  901. __STATIC_INLINE uint32_t FL_RCC_PLL_ReadMultiplier(void)
  902. {
  903. return (uint32_t)(READ_BIT(RCC->PLLCR, (0x7fU << 16U)) >> 16U);
  904. }
  905. /**
  906. * @brief Set PLL Prescaler
  907. * @rmtoll PLLCR REFPRSC FL_RCC_PLL_SetPrescaler
  908. * @param prescaler This parameter can be one of the following values:
  909. * @arg @ref FL_RCC_PLL_PSC_DIV1
  910. * @arg @ref FL_RCC_PLL_PSC_DIV2
  911. * @arg @ref FL_RCC_PLL_PSC_DIV4
  912. * @arg @ref FL_RCC_PLL_PSC_DIV8
  913. * @arg @ref FL_RCC_PLL_PSC_DIV12
  914. * @arg @ref FL_RCC_PLL_PSC_DIV16
  915. * @arg @ref FL_RCC_PLL_PSC_DIV24
  916. * @arg @ref FL_RCC_PLL_PSC_DIV32
  917. * @retval None
  918. */
  919. __STATIC_INLINE void FL_RCC_PLL_SetPrescaler(uint32_t prescaler)
  920. {
  921. MODIFY_REG(RCC->PLLCR, RCC_PLLCR_REFPRSC_Msk, prescaler);
  922. }
  923. /**
  924. * @brief Get PLL Prescaler Setting
  925. * @rmtoll PLLCR REFPRSC FL_RCC_PLL_GetPrescaler
  926. * @retval Returned value can be one of the following values:
  927. * @arg @ref FL_RCC_PLL_PSC_DIV1
  928. * @arg @ref FL_RCC_PLL_PSC_DIV2
  929. * @arg @ref FL_RCC_PLL_PSC_DIV4
  930. * @arg @ref FL_RCC_PLL_PSC_DIV8
  931. * @arg @ref FL_RCC_PLL_PSC_DIV12
  932. * @arg @ref FL_RCC_PLL_PSC_DIV16
  933. * @arg @ref FL_RCC_PLL_PSC_DIV24
  934. * @arg @ref FL_RCC_PLL_PSC_DIV32
  935. */
  936. __STATIC_INLINE uint32_t FL_RCC_PLL_GetPrescaler(void)
  937. {
  938. return (uint32_t)(READ_BIT(RCC->PLLCR, RCC_PLLCR_REFPRSC_Msk));
  939. }
  940. /**
  941. * @brief Set PLL Digital Domain Output
  942. * @rmtoll PLLCR OSEL FL_RCC_PLL_SetOutputMultiplier
  943. * @param multiplier This parameter can be one of the following values:
  944. * @arg @ref FL_RCC_PLL_OUTPUT_X1
  945. * @arg @ref FL_RCC_PLL_OUTPUT_X2
  946. * @retval None
  947. */
  948. __STATIC_INLINE void FL_RCC_PLL_SetOutputMultiplier(uint32_t multiplier)
  949. {
  950. MODIFY_REG(RCC->PLLCR, RCC_PLLCR_OSEL_Msk, multiplier);
  951. }
  952. /**
  953. * @brief Get PLL Digital Domain Output Setting
  954. * @rmtoll PLLCR OSEL FL_RCC_PLL_GetOutputMultiplier
  955. * @retval Returned value can be one of the following values:
  956. * @arg @ref FL_RCC_PLL_OUTPUT_X1
  957. * @arg @ref FL_RCC_PLL_OUTPUT_X2
  958. */
  959. __STATIC_INLINE uint32_t FL_RCC_PLL_GetOutputMultiplier(void)
  960. {
  961. return (uint32_t)(READ_BIT(RCC->PLLCR, RCC_PLLCR_OSEL_Msk));
  962. }
  963. /**
  964. * @brief Get LPOSC Enable Flag
  965. * @rmtoll LPOSCCR LPOENB FL_RCC_LPOSC_IsEnabled
  966. * @retval State of bit (1 or 0).
  967. */
  968. __STATIC_INLINE uint32_t FL_RCC_LPOSC_IsEnabled(void)
  969. {
  970. return (uint32_t)!(READ_BIT(RCC->LPOSCCR, RCC_LPOSCCR_LPOENB_Msk) == RCC_LPOSCCR_LPOENB_Msk);
  971. }
  972. /**
  973. * @brief Enable LPOSC On/Off in Low Power Mode
  974. * @rmtoll LPOSCCR LPM_LPO_OFF FL_RCC_LPOSC_EnableSleepModeWork
  975. * @retval None
  976. */
  977. __STATIC_INLINE void FL_RCC_LPOSC_EnableSleepModeWork(void)
  978. {
  979. CLEAR_BIT(RCC->LPOSCCR, RCC_LPOSCCR_LPM_LPO_OFF_Msk);
  980. }
  981. /**
  982. * @brief Get LPOSC On/Off Setting in Low Power Mode
  983. * @rmtoll LPOSCCR LPM_LPO_OFF FL_RCC_LPOSC_IsEnableSleepModeWork
  984. * @retval State of bit (1 or 0).
  985. */
  986. __STATIC_INLINE uint32_t FL_RCC_LPOSC_IsEnableSleepModeWork(void)
  987. {
  988. return (uint32_t)!(READ_BIT(RCC->LPOSCCR, RCC_LPOSCCR_LPM_LPO_OFF_Msk) == RCC_LPOSCCR_LPM_LPO_OFF_Msk);
  989. }
  990. /**
  991. * @brief Disable LPOSC On/Off Setting in Low Power Mode
  992. * @rmtoll LPOSCCR LPM_LPO_OFF FL_RCC_LPOSC_DisableSleepModeWork
  993. * @retval None
  994. */
  995. __STATIC_INLINE void FL_RCC_LPOSC_DisableSleepModeWork(void)
  996. {
  997. SET_BIT(RCC->LPOSCCR, RCC_LPOSCCR_LPM_LPO_OFF_Msk);
  998. }
  999. /**
  1000. * @brief Enable LPOSC Chopper
  1001. * @rmtoll LPOSCCR LPO_CHOP_EN FL_RCC_LPOSC_EnableChopper
  1002. * @retval None
  1003. */
  1004. __STATIC_INLINE void FL_RCC_LPOSC_EnableChopper(void)
  1005. {
  1006. SET_BIT(RCC->LPOSCCR, RCC_LPOSCCR_LPO_CHOP_EN_Msk);
  1007. }
  1008. /**
  1009. * @brief Get LPOSC Chopper Enable Status
  1010. * @rmtoll LPOSCCR LPO_CHOP_EN FL_RCC_LPOSC_IsEnabledChopper
  1011. * @retval State of bit (1 or 0).
  1012. */
  1013. __STATIC_INLINE uint32_t FL_RCC_LPOSC_IsEnabledChopper(void)
  1014. {
  1015. return (uint32_t)(READ_BIT(RCC->LPOSCCR, RCC_LPOSCCR_LPO_CHOP_EN_Msk) == RCC_LPOSCCR_LPO_CHOP_EN_Msk);
  1016. }
  1017. /**
  1018. * @brief Disable LPOSC Chopper
  1019. * @rmtoll LPOSCCR LPO_CHOP_EN FL_RCC_LPOSC_DisableChopper
  1020. * @retval None
  1021. */
  1022. __STATIC_INLINE void FL_RCC_LPOSC_DisableChopper(void)
  1023. {
  1024. CLEAR_BIT(RCC->LPOSCCR, RCC_LPOSCCR_LPO_CHOP_EN_Msk);
  1025. }
  1026. /**
  1027. * @brief Set LPOSC Frequency Trim Value
  1028. * @rmtoll LPOSCTR TRIM FL_RCC_LPOSC_WriteTrimValue
  1029. * @param value TrimValue The value of LPOSC trim
  1030. * @retval None
  1031. */
  1032. __STATIC_INLINE void FL_RCC_LPOSC_WriteTrimValue(uint32_t value)
  1033. {
  1034. MODIFY_REG(RCC->LPOSCTR, (0xffU << 0U), (value << 0U));
  1035. }
  1036. /**
  1037. * @brief Get LPOSC Frequency Trim Value
  1038. * @rmtoll LPOSCTR TRIM FL_RCC_LPOSC_ReadTrimValue
  1039. * @retval The Value of LPOSC trim
  1040. */
  1041. __STATIC_INLINE uint32_t FL_RCC_LPOSC_ReadTrimValue(void)
  1042. {
  1043. return (uint32_t)(READ_BIT(RCC->LPOSCTR, 0xffU) >> 0U);
  1044. }
  1045. /**
  1046. * @brief Enable XTLF
  1047. * @rmtoll XTLFCR EN FL_RCC_XTLF_Enable
  1048. * @retval None
  1049. */
  1050. __STATIC_INLINE void FL_RCC_XTLF_Enable(void)
  1051. {
  1052. MODIFY_REG(RCC->XTLFCR, RCC_XTLFCR_EN_Msk, FL_RCC_XTLF_FDET_ENABLE);
  1053. }
  1054. /**
  1055. * @brief Disable XTLF
  1056. * @rmtoll XTLFCR EN FL_RCC_XTLF_Disable
  1057. * @retval None
  1058. */
  1059. __STATIC_INLINE void FL_RCC_XTLF_Disable(void)
  1060. {
  1061. MODIFY_REG(RCC->XTLFCR, RCC_XTLFCR_EN_Msk, FL_RCC_XTLF_FDET_DISABLE);
  1062. }
  1063. /**
  1064. * @brief Set XTLF Current
  1065. * @rmtoll XTLFCR IPW FL_RCC_XTLF_SetWorkCurrent
  1066. * @param current This parameter can be one of the following values:
  1067. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_450NA
  1068. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_400NA
  1069. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_350NA
  1070. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_300NA
  1071. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_250NA
  1072. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_200NA
  1073. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_150NA
  1074. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_100NA
  1075. * @retval None
  1076. */
  1077. __STATIC_INLINE void FL_RCC_XTLF_SetWorkCurrent(uint32_t current)
  1078. {
  1079. MODIFY_REG(RCC->XTLFCR, RCC_XTLFCR_IPW_Msk, current);
  1080. }
  1081. /**
  1082. * @brief Get XTLF Current Setting
  1083. * @rmtoll XTLFCR IPW FL_RCC_XTLF_GetWorkCurrent
  1084. * @retval Returned value can be one of the following values:
  1085. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_450NA
  1086. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_400NA
  1087. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_350NA
  1088. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_300NA
  1089. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_250NA
  1090. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_200NA
  1091. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_150NA
  1092. * @arg @ref FL_RCC_XTLF_WORK_CURRENT_100NA
  1093. */
  1094. __STATIC_INLINE uint32_t FL_RCC_XTLF_GetWorkCurrent(void)
  1095. {
  1096. return (uint32_t)(READ_BIT(RCC->XTLFCR, RCC_XTLFCR_IPW_Msk));
  1097. }
  1098. /**
  1099. * @brief Set XTHF Oscillation Strength
  1100. * @rmtoll XTHFCR CFG FL_RCC_XTHF_WriteDriverStrength
  1101. * @param strength
  1102. * @retval None
  1103. */
  1104. __STATIC_INLINE void FL_RCC_XTHF_WriteDriverStrength(uint32_t strength)
  1105. {
  1106. MODIFY_REG(RCC->XTHFCR, (0x7U << 8U), (strength << 8U));
  1107. }
  1108. /**
  1109. * @brief Get XTHF Oscillation Strength Setting
  1110. * @rmtoll XTHFCR CFG FL_RCC_XTHF_ReadDriverStrength
  1111. * @retval
  1112. */
  1113. __STATIC_INLINE uint32_t FL_RCC_XTHF_ReadDriverStrength(void)
  1114. {
  1115. return (uint32_t)(READ_BIT(RCC->XTHFCR, (0x7U << 8U)) >> 8U);
  1116. }
  1117. /**
  1118. * @brief Enable XTHF
  1119. * @rmtoll XTHFCR EN FL_RCC_XTHF_Enable
  1120. * @retval None
  1121. */
  1122. __STATIC_INLINE void FL_RCC_XTHF_Enable(void)
  1123. {
  1124. SET_BIT(RCC->XTHFCR, RCC_XTHFCR_EN_Msk);
  1125. }
  1126. /**
  1127. * @brief Get XTHF Enable Status
  1128. * @rmtoll XTHFCR EN FL_RCC_XTHF_IsEnabled
  1129. * @retval State of bit (1 or 0).
  1130. */
  1131. __STATIC_INLINE uint32_t FL_RCC_XTHF_IsEnabled(void)
  1132. {
  1133. return (uint32_t)(READ_BIT(RCC->XTHFCR, RCC_XTHFCR_EN_Msk) == RCC_XTHFCR_EN_Msk);
  1134. }
  1135. /**
  1136. * @brief Disable XTHF
  1137. * @rmtoll XTHFCR EN FL_RCC_XTHF_Disable
  1138. * @retval None
  1139. */
  1140. __STATIC_INLINE void FL_RCC_XTHF_Disable(void)
  1141. {
  1142. CLEAR_BIT(RCC->XTHFCR, RCC_XTHFCR_EN_Msk);
  1143. }
  1144. /**
  1145. * @brief Set RCMF Output Prescaler
  1146. * @rmtoll RCMFCR PSC FL_RCC_RCMF_SetPrescaler
  1147. * @param Prescaler This parameter can be one of the following values:
  1148. * @arg @ref FL_RCC_RCMF_PSC_DIV1
  1149. * @arg @ref FL_RCC_RCMF_PSC_DIV4
  1150. * @arg @ref FL_RCC_RCMF_PSC_DIV8
  1151. * @arg @ref FL_RCC_RCMF_PSC_DIV16
  1152. * @retval None
  1153. */
  1154. __STATIC_INLINE void FL_RCC_RCMF_SetPrescaler(uint32_t Prescaler)
  1155. {
  1156. MODIFY_REG(RCC->RCMFCR, RCC_RCMFCR_PSC_Msk, Prescaler);
  1157. }
  1158. /**
  1159. * @brief Get RCMF Output Prescaler Setting
  1160. * @rmtoll RCMFCR PSC FL_RCC_RCMF_GetPrescaler
  1161. * @retval Returned value can be one of the following values:
  1162. * @arg @ref FL_RCC_RCMF_PSC_DIV1
  1163. * @arg @ref FL_RCC_RCMF_PSC_DIV4
  1164. * @arg @ref FL_RCC_RCMF_PSC_DIV8
  1165. * @arg @ref FL_RCC_RCMF_PSC_DIV16
  1166. */
  1167. __STATIC_INLINE uint32_t FL_RCC_RCMF_GetPrescaler(void)
  1168. {
  1169. return (uint32_t)(READ_BIT(RCC->RCMFCR, RCC_RCMFCR_PSC_Msk));
  1170. }
  1171. /**
  1172. * @brief Enable RCMF
  1173. * @rmtoll RCMFCR EN FL_RCC_RCMF_Enable
  1174. * @retval None
  1175. */
  1176. __STATIC_INLINE void FL_RCC_RCMF_Enable(void)
  1177. {
  1178. SET_BIT(RCC->RCMFCR, RCC_RCMFCR_EN_Msk);
  1179. }
  1180. /**
  1181. * @brief Get RCMF Enable Status
  1182. * @rmtoll RCMFCR EN FL_RCC_RCMF_IsEnabled
  1183. * @retval State of bit (1 or 0).
  1184. */
  1185. __STATIC_INLINE uint32_t FL_RCC_RCMF_IsEnabled(void)
  1186. {
  1187. return (uint32_t)(READ_BIT(RCC->RCMFCR, RCC_RCMFCR_EN_Msk) == RCC_RCMFCR_EN_Msk);
  1188. }
  1189. /**
  1190. * @brief Disable RCMF
  1191. * @rmtoll RCMFCR EN FL_RCC_RCMF_Disable
  1192. * @retval None
  1193. */
  1194. __STATIC_INLINE void FL_RCC_RCMF_Disable(void)
  1195. {
  1196. CLEAR_BIT(RCC->RCMFCR, RCC_RCMFCR_EN_Msk);
  1197. }
  1198. /**
  1199. * @brief Set RCHF Freqency Trim Value
  1200. * @rmtoll RCHFTR TRIM FL_RCC_RCHF_WriteTrimValue
  1201. * @param value TrimValue The value of RCHF trim
  1202. * @retval None
  1203. */
  1204. __STATIC_INLINE void FL_RCC_RCHF_WriteTrimValue(uint32_t value)
  1205. {
  1206. MODIFY_REG(RCC->RCHFTR, (0x7fU << 0U), (value << 0U));
  1207. }
  1208. /**
  1209. * @brief Get RCHF Freqency Trim Value
  1210. * @rmtoll RCHFTR TRIM FL_RCC_RCHF_ReadTrimValue
  1211. * @retval The value of RCHF trim
  1212. */
  1213. __STATIC_INLINE uint32_t FL_RCC_RCHF_ReadTrimValue(void)
  1214. {
  1215. return (uint32_t)(READ_BIT(RCC->RCHFTR, 0x7fU) >> 0U);
  1216. }
  1217. /**
  1218. * @brief Enable Group1 Periph Bus Clock
  1219. * @rmtoll PCLKCR1 FL_RCC_EnableGroup1BusClock
  1220. * @param Peripheral This parameter can be one of the following values:
  1221. * @arg @ref FL_RCC_GROUP1_BUSCLK_LPTIM32
  1222. * @arg @ref FL_RCC_GROUP1_BUSCLK_USB
  1223. * @arg @ref FL_RCC_GROUP1_BUSCLK_RTC
  1224. * @arg @ref FL_RCC_GROUP1_BUSCLK_PMU
  1225. * @arg @ref FL_RCC_GROUP1_BUSCLK_SCU
  1226. * @arg @ref FL_RCC_GROUP1_BUSCLK_IWDT
  1227. * @arg @ref FL_RCC_GROUP1_BUSCLK_ANAC
  1228. * @arg @ref FL_RCC_GROUP1_BUSCLK_PAD
  1229. * @arg @ref FL_RCC_GROUP1_BUSCLK_DCU
  1230. * @retval None
  1231. */
  1232. __STATIC_INLINE void FL_RCC_EnableGroup1BusClock(uint32_t Peripheral)
  1233. {
  1234. SET_BIT(RCC->PCLKCR1, ((Peripheral & 0xffffffff) << 0x0U));
  1235. }
  1236. /**
  1237. * @brief Enable Group2 Periph Bus Clock
  1238. * @rmtoll PCLKCR2 FL_RCC_EnableGroup2BusClock
  1239. * @param Peripheral This parameter can be one of the following values:
  1240. * @arg @ref FL_RCC_GROUP2_BUSCLK_CRC
  1241. * @arg @ref FL_RCC_GROUP2_BUSCLK_RNG
  1242. * @arg @ref FL_RCC_GROUP2_BUSCLK_AES
  1243. * @arg @ref FL_RCC_GROUP2_BUSCLK_LCD
  1244. * @arg @ref FL_RCC_GROUP2_BUSCLK_DMA
  1245. * @arg @ref FL_RCC_GROUP2_BUSCLK_FLASH
  1246. * @arg @ref FL_RCC_GROUP2_BUSCLK_RAMBIST
  1247. * @arg @ref FL_RCC_GROUP2_BUSCLK_WWDT
  1248. * @arg @ref FL_RCC_GROUP2_BUSCLK_ADC
  1249. * @arg @ref FL_RCC_GROUP2_BUSCLK_HDIV
  1250. * @retval None
  1251. */
  1252. __STATIC_INLINE void FL_RCC_EnableGroup2BusClock(uint32_t Peripheral)
  1253. {
  1254. SET_BIT(RCC->PCLKCR2, ((Peripheral & 0xffffffff) << 0x0U));
  1255. }
  1256. /**
  1257. * @brief Enable Group3 Periph Bus Clock
  1258. * @rmtoll PCLKCR3 FL_RCC_EnableGroup3BusClock
  1259. * @param Peripheral This parameter can be one of the following values:
  1260. * @arg @ref FL_RCC_GROUP3_BUSCLK_SPI1
  1261. * @arg @ref FL_RCC_GROUP3_BUSCLK_SPI2
  1262. * @arg @ref FL_RCC_GROUP3_BUSCLK_UART0
  1263. * @arg @ref FL_RCC_GROUP3_BUSCLK_UART1
  1264. * @arg @ref FL_RCC_GROUP3_BUSCLK_UART4
  1265. * @arg @ref FL_RCC_GROUP3_BUSCLK_UART5
  1266. * @arg @ref FL_RCC_GROUP3_BUSCLK_UARTIR
  1267. * @arg @ref FL_RCC_GROUP3_BUSCLK_LPUART0
  1268. * @arg @ref FL_RCC_GROUP3_BUSCLK_U7816
  1269. * @arg @ref FL_RCC_GROUP3_BUSCLK_LPUART1
  1270. * @arg @ref FL_RCC_GROUP3_BUSCLK_I2C
  1271. * @retval None
  1272. */
  1273. __STATIC_INLINE void FL_RCC_EnableGroup3BusClock(uint32_t Peripheral)
  1274. {
  1275. SET_BIT(RCC->PCLKCR3, ((Peripheral & 0xffffffff) << 0x0U));
  1276. }
  1277. /**
  1278. * @brief Enable Group4 Periph Bus Clock
  1279. * @rmtoll PCLKCR4 FL_RCC_EnableGroup4BusClock
  1280. * @param Peripheral This parameter can be one of the following values:
  1281. * @arg @ref FL_RCC_GROUP4_BUSCLK_BSTIM32
  1282. * @arg @ref FL_RCC_GROUP4_BUSCLK_GPTIM0
  1283. * @arg @ref FL_RCC_GROUP4_BUSCLK_GPTIM1
  1284. * @arg @ref FL_RCC_GROUP4_BUSCLK_ATIM
  1285. * @retval None
  1286. */
  1287. __STATIC_INLINE void FL_RCC_EnableGroup4BusClock(uint32_t Peripheral)
  1288. {
  1289. SET_BIT(RCC->PCLKCR4, ((Peripheral & 0xffffffff) << 0x0U));
  1290. }
  1291. /**
  1292. * @brief Disable Group1 Periph Bus Clock
  1293. * @rmtoll PCLKCR1 FL_RCC_DisableGroup1BusClock
  1294. * @param Peripheral This parameter can be one of the following values:
  1295. * @arg @ref FL_RCC_GROUP1_BUSCLK_LPTIM32
  1296. * @arg @ref FL_RCC_GROUP1_BUSCLK_USB
  1297. * @arg @ref FL_RCC_GROUP1_BUSCLK_RTC
  1298. * @arg @ref FL_RCC_GROUP1_BUSCLK_PMU
  1299. * @arg @ref FL_RCC_GROUP1_BUSCLK_SCU
  1300. * @arg @ref FL_RCC_GROUP1_BUSCLK_IWDT
  1301. * @arg @ref FL_RCC_GROUP1_BUSCLK_ANAC
  1302. * @arg @ref FL_RCC_GROUP1_BUSCLK_PAD
  1303. * @arg @ref FL_RCC_GROUP1_BUSCLK_DCU
  1304. * @retval None
  1305. */
  1306. __STATIC_INLINE void FL_RCC_DisableGroup1BusClock(uint32_t Peripheral)
  1307. {
  1308. CLEAR_BIT(RCC->PCLKCR1, ((Peripheral & 0xffffffff) << 0x0U));
  1309. }
  1310. /**
  1311. * @brief Disable Group2 Periph Bus Clock
  1312. * @rmtoll PCLKCR2 FL_RCC_DisableGroup2BusClock
  1313. * @param Peripheral This parameter can be one of the following values:
  1314. * @arg @ref FL_RCC_GROUP2_BUSCLK_CRC
  1315. * @arg @ref FL_RCC_GROUP2_BUSCLK_RNG
  1316. * @arg @ref FL_RCC_GROUP2_BUSCLK_AES
  1317. * @arg @ref FL_RCC_GROUP2_BUSCLK_LCD
  1318. * @arg @ref FL_RCC_GROUP2_BUSCLK_DMA
  1319. * @arg @ref FL_RCC_GROUP2_BUSCLK_FLASH
  1320. * @arg @ref FL_RCC_GROUP2_BUSCLK_RAMBIST
  1321. * @arg @ref FL_RCC_GROUP2_BUSCLK_WWDT
  1322. * @arg @ref FL_RCC_GROUP2_BUSCLK_ADC
  1323. * @arg @ref FL_RCC_GROUP2_BUSCLK_HDIV
  1324. * @retval None
  1325. */
  1326. __STATIC_INLINE void FL_RCC_DisableGroup2BusClock(uint32_t Peripheral)
  1327. {
  1328. CLEAR_BIT(RCC->PCLKCR2, ((Peripheral & 0xffffffff) << 0x0U));
  1329. }
  1330. /**
  1331. * @brief Disable Group3 Periph Bus Clock
  1332. * @rmtoll PCLKCR3 FL_RCC_DisableGroup3BusClock
  1333. * @param Peripheral This parameter can be one of the following values:
  1334. * @arg @ref FL_RCC_GROUP3_BUSCLK_SPI1
  1335. * @arg @ref FL_RCC_GROUP3_BUSCLK_SPI2
  1336. * @arg @ref FL_RCC_GROUP3_BUSCLK_UART0
  1337. * @arg @ref FL_RCC_GROUP3_BUSCLK_UART1
  1338. * @arg @ref FL_RCC_GROUP3_BUSCLK_UART4
  1339. * @arg @ref FL_RCC_GROUP3_BUSCLK_UART5
  1340. * @arg @ref FL_RCC_GROUP3_BUSCLK_UARTIR
  1341. * @arg @ref FL_RCC_GROUP3_BUSCLK_LPUART0
  1342. * @arg @ref FL_RCC_GROUP3_BUSCLK_U7816
  1343. * @arg @ref FL_RCC_GROUP3_BUSCLK_LPUART1
  1344. * @arg @ref FL_RCC_GROUP3_BUSCLK_I2C
  1345. * @retval None
  1346. */
  1347. __STATIC_INLINE void FL_RCC_DisableGroup3BusClock(uint32_t Peripheral)
  1348. {
  1349. CLEAR_BIT(RCC->PCLKCR3, ((Peripheral & 0xffffffff) << 0x0U));
  1350. }
  1351. /**
  1352. * @brief Disable Group4 Periph Bus Clock
  1353. * @rmtoll PCLKCR4 FL_RCC_DisableGroup4BusClock
  1354. * @param Peripheral This parameter can be one of the following values:
  1355. * @arg @ref FL_RCC_GROUP4_BUSCLK_BSTIM32
  1356. * @arg @ref FL_RCC_GROUP4_BUSCLK_GPTIM0
  1357. * @arg @ref FL_RCC_GROUP4_BUSCLK_GPTIM1
  1358. * @arg @ref FL_RCC_GROUP4_BUSCLK_ATIM
  1359. * @retval None
  1360. */
  1361. __STATIC_INLINE void FL_RCC_DisableGroup4BusClock(uint32_t Peripheral)
  1362. {
  1363. CLEAR_BIT(RCC->PCLKCR4, ((Peripheral & 0xffffffff) << 0x0U));
  1364. }
  1365. /**
  1366. * @brief Get Group1 Periph Bus Clock Enable Status
  1367. * @rmtoll PCLKCR1 FL_RCC_IsEnabledGroup1BusClock
  1368. * @param Peripheral This parameter can be one of the following values:
  1369. * @arg @ref FL_RCC_GROUP1_BUSCLK_LPTIM32
  1370. * @arg @ref FL_RCC_GROUP1_BUSCLK_USB
  1371. * @arg @ref FL_RCC_GROUP1_BUSCLK_RTC
  1372. * @arg @ref FL_RCC_GROUP1_BUSCLK_PMU
  1373. * @arg @ref FL_RCC_GROUP1_BUSCLK_SCU
  1374. * @arg @ref FL_RCC_GROUP1_BUSCLK_IWDT
  1375. * @arg @ref FL_RCC_GROUP1_BUSCLK_ANAC
  1376. * @arg @ref FL_RCC_GROUP1_BUSCLK_PAD
  1377. * @arg @ref FL_RCC_GROUP1_BUSCLK_DCU
  1378. * @retval State of bit (1 or 0).
  1379. */
  1380. __STATIC_INLINE uint32_t FL_RCC_IsEnabledGroup1BusClock(uint32_t Peripheral)
  1381. {
  1382. return (uint32_t)(READ_BIT(RCC->PCLKCR1, ((Peripheral & 0xffffffff) << 0x0U)) == ((Peripheral & 0xffffffff) << 0x0U));
  1383. }
  1384. /**
  1385. * @brief Get Group2 Periph Bus Clock Enable Status
  1386. * @rmtoll PCLKCR2 FL_RCC_IsEnabledGroup2BusClock
  1387. * @param Peripheral This parameter can be one of the following values:
  1388. * @arg @ref FL_RCC_GROUP2_BUSCLK_CRC
  1389. * @arg @ref FL_RCC_GROUP2_BUSCLK_RNG
  1390. * @arg @ref FL_RCC_GROUP2_BUSCLK_AES
  1391. * @arg @ref FL_RCC_GROUP2_BUSCLK_LCD
  1392. * @arg @ref FL_RCC_GROUP2_BUSCLK_DMA
  1393. * @arg @ref FL_RCC_GROUP2_BUSCLK_FLASH
  1394. * @arg @ref FL_RCC_GROUP2_BUSCLK_RAMBIST
  1395. * @arg @ref FL_RCC_GROUP2_BUSCLK_WWDT
  1396. * @arg @ref FL_RCC_GROUP2_BUSCLK_ADC
  1397. * @retval State of bit (1 or 0).
  1398. */
  1399. __STATIC_INLINE uint32_t FL_RCC_IsEnabledGroup2BusClock(uint32_t Peripheral)
  1400. {
  1401. return (uint32_t)(READ_BIT(RCC->PCLKCR2, ((Peripheral & 0xffffffff) << 0x0U)) == ((Peripheral & 0xffffffff) << 0x0U));
  1402. }
  1403. /**
  1404. * @brief Get Group3 Periph Bus Clock Enable Status
  1405. * @rmtoll PCLKCR3 FL_RCC_IsEnabledGroup3BusClock
  1406. * @param Peripheral This parameter can be one of the following values:
  1407. * @arg @ref FL_RCC_GROUP3_BUSCLK_SPI1
  1408. * @arg @ref FL_RCC_GROUP3_BUSCLK_SPI2
  1409. * @arg @ref FL_RCC_GROUP3_BUSCLK_UART0
  1410. * @arg @ref FL_RCC_GROUP3_BUSCLK_UART1
  1411. * @arg @ref FL_RCC_GROUP3_BUSCLK_UART4
  1412. * @arg @ref FL_RCC_GROUP3_BUSCLK_UART5
  1413. * @arg @ref FL_RCC_GROUP3_BUSCLK_UARTIR
  1414. * @arg @ref FL_RCC_GROUP3_BUSCLK_LPUART0
  1415. * @arg @ref FL_RCC_GROUP3_BUSCLK_U7816
  1416. * @arg @ref FL_RCC_GROUP3_BUSCLK_LPUART1
  1417. * @arg @ref FL_RCC_GROUP3_BUSCLK_I2C
  1418. * @retval State of bit (1 or 0).
  1419. */
  1420. __STATIC_INLINE uint32_t FL_RCC_IsEnabledGroup3BusClock(uint32_t Peripheral)
  1421. {
  1422. return (uint32_t)(READ_BIT(RCC->PCLKCR3, ((Peripheral & 0xffffffff) << 0x0U)) == ((Peripheral & 0xffffffff) << 0x0U));
  1423. }
  1424. /**
  1425. * @brief Get Group4 Periph Bus Clock Enable Status
  1426. * @rmtoll PCLKCR4 FL_RCC_IsEnabledGroup4BusClock
  1427. * @param Peripheral This parameter can be one of the following values:
  1428. * @arg @ref FL_RCC_GROUP4_BUSCLK_BSTIM32
  1429. * @arg @ref FL_RCC_GROUP4_BUSCLK_GPTIM0
  1430. * @arg @ref FL_RCC_GROUP4_BUSCLK_GPTIM1
  1431. * @arg @ref FL_RCC_GROUP4_BUSCLK_ATIM
  1432. * @retval State of bit (1 or 0).
  1433. */
  1434. __STATIC_INLINE uint32_t FL_RCC_IsEnabledGroup4BusClock(uint32_t Peripheral)
  1435. {
  1436. return (uint32_t)(READ_BIT(RCC->PCLKCR4, ((Peripheral & 0xffffffff) << 0x0U)) == ((Peripheral & 0xffffffff) << 0x0U));
  1437. }
  1438. /**
  1439. * @brief Enable Group1 Periph Operation Clock
  1440. * @rmtoll OPCCR1 FL_RCC_EnableGroup1OperationClock
  1441. * @param Peripheral This parameter can be one of the following values:
  1442. * @arg @ref FL_RCC_GROUP1_OPCLK_EXTI
  1443. * @arg @ref FL_RCC_GROUP1_OPCLK_LPUART1
  1444. * @arg @ref FL_RCC_GROUP1_OPCLK_LPUART0
  1445. * @arg @ref FL_RCC_GROUP1_OPCLK_I2C
  1446. * @arg @ref FL_RCC_GROUP1_OPCLK_ATIM
  1447. * @arg @ref FL_RCC_GROUP1_OPCLK_UART1
  1448. * @arg @ref FL_RCC_GROUP1_OPCLK_UART0
  1449. * @retval None
  1450. */
  1451. __STATIC_INLINE void FL_RCC_EnableGroup1OperationClock(uint32_t Peripheral)
  1452. {
  1453. SET_BIT(RCC->OPCCR1, ((Peripheral & 0xffffffff) << 0x0U));
  1454. }
  1455. /**
  1456. * @brief Enable Group2 Periph Operation Clock
  1457. * @rmtoll OPCCR2 FL_RCC_EnableGroup2OperationClock
  1458. * @param Peripheral This parameter can be one of the following values:
  1459. * @arg @ref FL_RCC_GROUP2_OPCLK_USB
  1460. * @arg @ref FL_RCC_GROUP2_OPCLK_FLASH
  1461. * @arg @ref FL_RCC_GROUP2_OPCLK_RNG
  1462. * @arg @ref FL_RCC_GROUP2_OPCLK_ADC
  1463. * @arg @ref FL_RCC_GROUP2_OPCLK_LPTIM32
  1464. * @arg @ref FL_RCC_GROUP2_OPCLK_BSTIM32
  1465. * @retval None
  1466. */
  1467. __STATIC_INLINE void FL_RCC_EnableGroup2OperationClock(uint32_t Peripheral)
  1468. {
  1469. SET_BIT(RCC->OPCCR2, ((Peripheral & 0xffffffff) << 0x0U));
  1470. }
  1471. /**
  1472. * @brief Disable Group1 Periph Operation Clock
  1473. * @rmtoll OPCCR1 FL_RCC_DisableGroup1OperationClock
  1474. * @param Peripheral This parameter can be one of the following values:
  1475. * @arg @ref FL_RCC_GROUP1_OPCLK_EXTI
  1476. * @arg @ref FL_RCC_GROUP1_OPCLK_LPUART1
  1477. * @arg @ref FL_RCC_GROUP1_OPCLK_LPUART0
  1478. * @arg @ref FL_RCC_GROUP1_OPCLK_I2C
  1479. * @arg @ref FL_RCC_GROUP1_OPCLK_ATIM
  1480. * @arg @ref FL_RCC_GROUP1_OPCLK_UART1
  1481. * @retval None
  1482. */
  1483. __STATIC_INLINE void FL_RCC_DisableGroup1OperationClock(uint32_t Peripheral)
  1484. {
  1485. CLEAR_BIT(RCC->OPCCR1, ((Peripheral & 0xffffffff) << 0x0U));
  1486. }
  1487. /**
  1488. * @brief Disable Group2 Periph Operation Clock
  1489. * @rmtoll OPCCR2 FL_RCC_DisableGroup2OperationClock
  1490. * @param Peripheral This parameter can be one of the following values:
  1491. * @arg @ref FL_RCC_GROUP2_OPCLK_USB
  1492. * @arg @ref FL_RCC_GROUP2_OPCLK_FLASH
  1493. * @arg @ref FL_RCC_GROUP2_OPCLK_RNG
  1494. * @arg @ref FL_RCC_GROUP2_OPCLK_ADC
  1495. * @arg @ref FL_RCC_GROUP2_OPCLK_LPTIM32
  1496. * @arg @ref FL_RCC_GROUP2_OPCLK_BSTIM32
  1497. * @retval None
  1498. */
  1499. __STATIC_INLINE void FL_RCC_DisableGroup2OperationClock(uint32_t Peripheral)
  1500. {
  1501. CLEAR_BIT(RCC->OPCCR2, ((Peripheral & 0xffffffff) << 0x0U));
  1502. }
  1503. /**
  1504. * @brief Get Group1 Periph Operation Clock Enable Status
  1505. * @rmtoll OPCCR1 FL_RCC_IsEnabledGroup1OperationClock
  1506. * @param Peripheral This parameter can be one of the following values:
  1507. * @arg @ref FL_RCC_GROUP1_OPCLK_EXTI
  1508. * @arg @ref FL_RCC_GROUP1_OPCLK_LPUART1
  1509. * @arg @ref FL_RCC_GROUP1_OPCLK_LPUART0
  1510. * @arg @ref FL_RCC_GROUP1_OPCLK_I2C
  1511. * @arg @ref FL_RCC_GROUP1_OPCLK_ATIM
  1512. * @arg @ref FL_RCC_GROUP1_OPCLK_UART1
  1513. * @arg @ref FL_RCC_GROUP1_OPCLK_UART0
  1514. * @retval State of bit (1 or 0).
  1515. */
  1516. __STATIC_INLINE uint32_t FL_RCC_IsEnabledGroup1OperationClock(uint32_t Peripheral)
  1517. {
  1518. return (uint32_t)(READ_BIT(RCC->OPCCR1, ((Peripheral & 0xffffffff) << 0x0U)) == ((Peripheral & 0xffffffff) << 0x0U));
  1519. }
  1520. /**
  1521. * @brief Get Group2 Periph Operation Clock Enable Status
  1522. * @rmtoll OPCCR2 FL_RCC_IsEnabledGroup2OperationClock
  1523. * @param Peripheral This parameter can be one of the following values:
  1524. * @arg @ref FL_RCC_GROUP2_OPCLK_USB
  1525. * @arg @ref FL_RCC_GROUP2_OPCLK_FLASH
  1526. * @arg @ref FL_RCC_GROUP2_OPCLK_RNG
  1527. * @arg @ref FL_RCC_GROUP2_OPCLK_ADC
  1528. * @arg @ref FL_RCC_GROUP2_OPCLK_LPTIM32
  1529. * @arg @ref FL_RCC_GROUP2_OPCLK_BSTIM32
  1530. * @retval State of bit (1 or 0).
  1531. */
  1532. __STATIC_INLINE uint32_t FL_RCC_IsEnabledGroup2OperationClock(uint32_t Peripheral)
  1533. {
  1534. return (uint32_t)(READ_BIT(RCC->OPCCR2, ((Peripheral & 0xffffffff) << 0x0U)) == ((Peripheral & 0xffffffff) << 0x0U));
  1535. }
  1536. /**
  1537. * @brief Set EXTI Clock Source
  1538. * @rmtoll OPCCR1 EXTICKS FL_RCC_SetEXTIClockSource
  1539. * @param clock This parameter can be one of the following values:
  1540. * @arg @ref FL_RCC_EXTI_CLK_SOURCE_LSCLK
  1541. * @arg @ref FL_RCC_EXTI_CLK_SOURCE_HCLK
  1542. * @retval None
  1543. */
  1544. __STATIC_INLINE void FL_RCC_SetEXTIClockSource(uint32_t clock)
  1545. {
  1546. MODIFY_REG(RCC->OPCCR1, RCC_OPCCR1_EXTICKS_Msk, clock);
  1547. }
  1548. /**
  1549. * @brief Get EXTI Clock Source Setting
  1550. * @rmtoll OPCCR1 EXTICKS FL_RCC_GetEXTIClockSource
  1551. * @retval Returned value can be one of the following values:
  1552. * @arg @ref FL_RCC_EXTI_CLK_SOURCE_LSCLK
  1553. * @arg @ref FL_RCC_EXTI_CLK_SOURCE_HCLK
  1554. */
  1555. __STATIC_INLINE uint32_t FL_RCC_GetEXTIClockSource(void)
  1556. {
  1557. return (uint32_t)(READ_BIT(RCC->OPCCR1, RCC_OPCCR1_EXTICKS_Msk));
  1558. }
  1559. /**
  1560. * @brief Set LPUART1 Clock Source
  1561. * @rmtoll OPCCR1 LPUART1CKS FL_RCC_SetLPUART1ClockSource
  1562. * @param clock This parameter can be one of the following values:
  1563. * @arg @ref FL_RCC_LPUART1_CLK_SOURCE_LSCLK
  1564. * @arg @ref FL_RCC_LPUART1_CLK_SOURCE_RCHF
  1565. * @arg @ref FL_RCC_LPUART1_CLK_SOURCE_RCMF
  1566. * @retval None
  1567. */
  1568. __STATIC_INLINE void FL_RCC_SetLPUART1ClockSource(uint32_t clock)
  1569. {
  1570. MODIFY_REG(RCC->OPCCR1, RCC_OPCCR1_LPUART1CKS_Msk, clock);
  1571. }
  1572. /**
  1573. * @brief Get LPUART1 Clock Source Setting
  1574. * @rmtoll OPCCR1 LPUART1CKS FL_RCC_GetLPUART1ClockSource
  1575. * @retval Returned value can be one of the following values:
  1576. * @arg @ref FL_RCC_LPUART1_CLK_SOURCE_LSCLK
  1577. * @arg @ref FL_RCC_LPUART1_CLK_SOURCE_RCHF
  1578. * @arg @ref FL_RCC_LPUART1_CLK_SOURCE_RCMF
  1579. */
  1580. __STATIC_INLINE uint32_t FL_RCC_GetLPUART1ClockSource(void)
  1581. {
  1582. return (uint32_t)(READ_BIT(RCC->OPCCR1, RCC_OPCCR1_LPUART1CKS_Msk));
  1583. }
  1584. /**
  1585. * @brief Set LPUART0 Clock Source
  1586. * @rmtoll OPCCR1 LPUART0CKS FL_RCC_SetLPUART0ClockSource
  1587. * @param clock This parameter can be one of the following values:
  1588. * @arg @ref FL_RCC_LPUART0_CLK_SOURCE_LSCLK
  1589. * @arg @ref FL_RCC_LPUART0_CLK_SOURCE_RCHF
  1590. * @arg @ref FL_RCC_LPUART0_CLK_SOURCE_RCMF
  1591. * @retval None
  1592. */
  1593. __STATIC_INLINE void FL_RCC_SetLPUART0ClockSource(uint32_t clock)
  1594. {
  1595. MODIFY_REG(RCC->OPCCR1, RCC_OPCCR1_LPUART0CKS_Msk, clock);
  1596. }
  1597. /**
  1598. * @brief Get LPUART0 Clock Source Setting
  1599. * @rmtoll OPCCR1 LPUART0CKS FL_RCC_GetLPUART0ClockSource
  1600. * @retval Returned value can be one of the following values:
  1601. * @arg @ref FL_RCC_LPUART0_CLK_SOURCE_LSCLK
  1602. * @arg @ref FL_RCC_LPUART0_CLK_SOURCE_RCHF
  1603. * @arg @ref FL_RCC_LPUART0_CLK_SOURCE_RCMF
  1604. */
  1605. __STATIC_INLINE uint32_t FL_RCC_GetLPUART0ClockSource(void)
  1606. {
  1607. return (uint32_t)(READ_BIT(RCC->OPCCR1, RCC_OPCCR1_LPUART0CKS_Msk));
  1608. }
  1609. /**
  1610. * @brief Set I2C Clock Source
  1611. * @rmtoll OPCCR1 I2CCKS FL_RCC_SetI2CClockSource
  1612. * @param clock This parameter can be one of the following values:
  1613. * @arg @ref FL_RCC_I2C_CLK_SOURCE_APB1CLK
  1614. * @arg @ref FL_RCC_I2C_CLK_SOURCE_RCHF
  1615. * @arg @ref FL_RCC_I2C_CLK_SOURCE_SYSCLK
  1616. * @arg @ref FL_RCC_I2C_CLK_SOURCE_RCMF_PSC
  1617. * @retval None
  1618. */
  1619. __STATIC_INLINE void FL_RCC_SetI2CClockSource(uint32_t clock)
  1620. {
  1621. MODIFY_REG(RCC->OPCCR1, RCC_OPCCR1_I2CCKS_Msk, clock);
  1622. }
  1623. /**
  1624. * @brief Get I2C Clock Source Setting
  1625. * @rmtoll OPCCR1 I2CCKS FL_RCC_GetI2CClockSource
  1626. * @retval Returned value can be one of the following values:
  1627. * @arg @ref FL_RCC_I2C_CLK_SOURCE_APB1CLK
  1628. * @arg @ref FL_RCC_I2C_CLK_SOURCE_RCHF
  1629. * @arg @ref FL_RCC_I2C_CLK_SOURCE_SYSCLK
  1630. * @arg @ref FL_RCC_I2C_CLK_SOURCE_RCMF_PSC
  1631. */
  1632. __STATIC_INLINE uint32_t FL_RCC_GetI2CClockSource(void)
  1633. {
  1634. return (uint32_t)(READ_BIT(RCC->OPCCR1, RCC_OPCCR1_I2CCKS_Msk));
  1635. }
  1636. /**
  1637. * @brief Set ATIM Clock Source
  1638. * @rmtoll OPCCR1 ATCKS FL_RCC_SetATIMClockSource
  1639. * @param clock This parameter can be one of the following values:
  1640. * @arg @ref FL_RCC_ATIM_CLK_SOURCE_APB2CLK
  1641. * @arg @ref FL_RCC_ATIM_CLK_SOURCE_USBPHYBCK120M
  1642. * @arg @ref FL_RCC_ATIM_CLK_SOURCE_PLLx2
  1643. * @retval None
  1644. */
  1645. __STATIC_INLINE void FL_RCC_SetATIMClockSource(uint32_t clock)
  1646. {
  1647. MODIFY_REG(RCC->OPCCR1, RCC_OPCCR1_ATCKS_Msk, clock);
  1648. }
  1649. /**
  1650. * @brief Get ATIM Clock Source Setting
  1651. * @rmtoll OPCCR1 ATCKS FL_RCC_GetATIMClockSource
  1652. * @retval Returned value can be one of the following values:
  1653. * @arg @ref FL_RCC_ATIM_CLK_SOURCE_APB2CLK
  1654. * @arg @ref FL_RCC_ATIM_CLK_SOURCE_USBPHYBCK120M
  1655. * @arg @ref FL_RCC_ATIM_CLK_SOURCE_PLLx2
  1656. */
  1657. __STATIC_INLINE uint32_t FL_RCC_GetATIMClockSource(void)
  1658. {
  1659. return (uint32_t)(READ_BIT(RCC->OPCCR1, RCC_OPCCR1_ATCKS_Msk));
  1660. }
  1661. /**
  1662. * @brief Set UART1 Clock Source
  1663. * @rmtoll OPCCR1 UART1CKS FL_RCC_SetUART1ClockSource
  1664. * @param clock This parameter can be one of the following values:
  1665. * @arg @ref FL_RCC_UART1_CLK_SOURCE_APB1CLK
  1666. * @arg @ref FL_RCC_UART1_CLK_SOURCE_RCHF
  1667. * @arg @ref FL_RCC_UART1_CLK_SOURCE_SYSCLK
  1668. * @arg @ref FL_RCC_UART1_CLK_SOURCE_RCMF_PSC
  1669. * @retval None
  1670. */
  1671. __STATIC_INLINE void FL_RCC_SetUART1ClockSource(uint32_t clock)
  1672. {
  1673. MODIFY_REG(RCC->OPCCR1, RCC_OPCCR1_UART1CKS_Msk, clock);
  1674. }
  1675. /**
  1676. * @brief Get UART1 Clock Source Setting
  1677. * @rmtoll OPCCR1 UART1CKS FL_RCC_GetUART1ClockSource
  1678. * @retval Returned value can be one of the following values:
  1679. * @arg @ref FL_RCC_UART1_CLK_SOURCE_APB1CLK
  1680. * @arg @ref FL_RCC_UART1_CLK_SOURCE_RCHF
  1681. * @arg @ref FL_RCC_UART1_CLK_SOURCE_SYSCLK
  1682. * @arg @ref FL_RCC_UART1_CLK_SOURCE_RCMF_PSC
  1683. */
  1684. __STATIC_INLINE uint32_t FL_RCC_GetUART1ClockSource(void)
  1685. {
  1686. return (uint32_t)(READ_BIT(RCC->OPCCR1, RCC_OPCCR1_UART1CKS_Msk));
  1687. }
  1688. /**
  1689. * @brief Set UART0 Clock Source
  1690. * @rmtoll OPCCR1 UART0CKS FL_RCC_SetUART0ClockSource
  1691. * @param clock This parameter can be one of the following values:
  1692. * @arg @ref FL_RCC_UART0_CLK_SOURCE_APB1CLK
  1693. * @arg @ref FL_RCC_UART0_CLK_SOURCE_RCHF
  1694. * @arg @ref FL_RCC_UART0_CLK_SOURCE_SYSCLK
  1695. * @arg @ref FL_RCC_UART0_CLK_SOURCE_RCMF_PSC
  1696. * @retval None
  1697. */
  1698. __STATIC_INLINE void FL_RCC_SetUART0ClockSource(uint32_t clock)
  1699. {
  1700. MODIFY_REG(RCC->OPCCR1, RCC_OPCCR1_UART0CKS_Msk, clock);
  1701. }
  1702. /**
  1703. * @brief Get UART0 Clock Source Setting
  1704. * @rmtoll OPCCR1 UART0CKS FL_RCC_GetUART0ClockSource
  1705. * @retval Returned value can be one of the following values:
  1706. * @arg @ref FL_RCC_UART0_CLK_SOURCE_APB1CLK
  1707. * @arg @ref FL_RCC_UART0_CLK_SOURCE_RCHF
  1708. * @arg @ref FL_RCC_UART0_CLK_SOURCE_SYSCLK
  1709. * @arg @ref FL_RCC_UART0_CLK_SOURCE_RCMF_PSC
  1710. */
  1711. __STATIC_INLINE uint32_t FL_RCC_GetUART0ClockSource(void)
  1712. {
  1713. return (uint32_t)(READ_BIT(RCC->OPCCR1, RCC_OPCCR1_UART0CKS_Msk));
  1714. }
  1715. /**
  1716. * @brief Set RNG Prescaler
  1717. * @rmtoll OPCCR2 RNGPRSC FL_RCC_SetRNGPrescaler
  1718. * @param prescaler This parameter can be one of the following values:
  1719. * @arg @ref FL_RCC_RNG_PSC_DIV1
  1720. * @arg @ref FL_RCC_RNG_PSC_DIV2
  1721. * @arg @ref FL_RCC_RNG_PSC_DIV4
  1722. * @arg @ref FL_RCC_RNG_PSC_DIV8
  1723. * @arg @ref FL_RCC_RNG_PSC_DIV16
  1724. * @arg @ref FL_RCC_RNG_PSC_DIV32
  1725. * @retval None
  1726. */
  1727. __STATIC_INLINE void FL_RCC_SetRNGPrescaler(uint32_t prescaler)
  1728. {
  1729. MODIFY_REG(RCC->OPCCR2, RCC_OPCCR2_RNGPRSC_Msk, prescaler);
  1730. }
  1731. /**
  1732. * @brief Get RNG Prescaler Setting
  1733. * @rmtoll OPCCR2 RNGPRSC FL_RCC_GetRNGPrescaler
  1734. * @retval Returned value can be one of the following values:
  1735. * @arg @ref FL_RCC_RNG_PSC_DIV1
  1736. * @arg @ref FL_RCC_RNG_PSC_DIV2
  1737. * @arg @ref FL_RCC_RNG_PSC_DIV4
  1738. * @arg @ref FL_RCC_RNG_PSC_DIV8
  1739. * @arg @ref FL_RCC_RNG_PSC_DIV16
  1740. * @arg @ref FL_RCC_RNG_PSC_DIV32
  1741. */
  1742. __STATIC_INLINE uint32_t FL_RCC_GetRNGPrescaler(void)
  1743. {
  1744. return (uint32_t)(READ_BIT(RCC->OPCCR2, RCC_OPCCR2_RNGPRSC_Msk));
  1745. }
  1746. /**
  1747. * @brief Set ADC Prescaler
  1748. * @rmtoll OPCCR2 ADCPRSC FL_RCC_SetADCPrescaler
  1749. * @param prescaler This parameter can be one of the following values:
  1750. * @arg @ref FL_RCC_ADC_PSC_DIV1
  1751. * @arg @ref FL_RCC_ADC_PSC_DIV2
  1752. * @arg @ref FL_RCC_ADC_PSC_DIV4
  1753. * @arg @ref FL_RCC_ADC_PSC_DIV8
  1754. * @arg @ref FL_RCC_ADC_PSC_DIV16
  1755. * @arg @ref FL_RCC_ADC_PSC_DIV32
  1756. * @retval None
  1757. */
  1758. __STATIC_INLINE void FL_RCC_SetADCPrescaler(uint32_t prescaler)
  1759. {
  1760. MODIFY_REG(RCC->OPCCR2, RCC_OPCCR2_ADCPRSC_Msk, prescaler);
  1761. }
  1762. /**
  1763. * @brief Get ADC Prescaler Setting
  1764. * @rmtoll OPCCR2 ADCPRSC FL_RCC_GetADCPrescaler
  1765. * @retval Returned value can be one of the following values:
  1766. * @arg @ref FL_RCC_ADC_PSC_DIV1
  1767. * @arg @ref FL_RCC_ADC_PSC_DIV2
  1768. * @arg @ref FL_RCC_ADC_PSC_DIV4
  1769. * @arg @ref FL_RCC_ADC_PSC_DIV8
  1770. * @arg @ref FL_RCC_ADC_PSC_DIV16
  1771. * @arg @ref FL_RCC_ADC_PSC_DIV32
  1772. */
  1773. __STATIC_INLINE uint32_t FL_RCC_GetADCPrescaler(void)
  1774. {
  1775. return (uint32_t)(READ_BIT(RCC->OPCCR2, RCC_OPCCR2_ADCPRSC_Msk));
  1776. }
  1777. /**
  1778. * @brief Set USB Reference Clock
  1779. * @rmtoll OPCCR2 USBCKS FL_RCC_SetUSBClockReference
  1780. * @param ref This parameter can be one of the following values:
  1781. * @arg @ref FL_RCC_USB_CLK_REF_XTLF
  1782. * @arg @ref FL_RCC_USB_CLK_REF_XTHF
  1783. * @arg @ref FL_RCC_USB_CLK_REF_RCHF
  1784. * @retval None
  1785. */
  1786. __STATIC_INLINE void FL_RCC_SetUSBClockReference(uint32_t ref)
  1787. {
  1788. MODIFY_REG(RCC->OPCCR2, RCC_OPCCR2_USBCKS_Msk, ref);
  1789. }
  1790. /**
  1791. * @brief Get USB Reference Clock Setting
  1792. * @rmtoll OPCCR2 USBCKS FL_RCC_GetUSBClockReference
  1793. * @retval Returned value can be one of the following values:
  1794. * @arg @ref FL_RCC_USB_CLK_REF_XTLF
  1795. * @arg @ref FL_RCC_USB_CLK_REF_XTHF
  1796. * @arg @ref FL_RCC_USB_CLK_REF_RCHF
  1797. */
  1798. __STATIC_INLINE uint32_t FL_RCC_GetUSBClockReference(void)
  1799. {
  1800. return (uint32_t)(READ_BIT(RCC->OPCCR2, RCC_OPCCR2_USBCKS_Msk));
  1801. }
  1802. /**
  1803. * @brief Set ADC Clock Source
  1804. * @rmtoll OPCCR2 ADCCKS FL_RCC_SetADCClockSource
  1805. * @param clock This parameter can be one of the following values:
  1806. * @arg @ref FL_RCC_ADC_CLK_SOURCE_RCMF_PSC
  1807. * @arg @ref FL_RCC_ADC_CLK_SOURCE_RCHF
  1808. * @arg @ref FL_RCC_ADC_CLK_SOURCE_XTHF
  1809. * @arg @ref FL_RCC_ADC_CLK_SOURCE_PLL
  1810. * @retval None
  1811. */
  1812. __STATIC_INLINE void FL_RCC_SetADCClockSource(uint32_t clock)
  1813. {
  1814. MODIFY_REG(RCC->OPCCR2, RCC_OPCCR2_ADCCKS_Msk, clock);
  1815. }
  1816. /**
  1817. * @brief Get ADC Clock Source Setting
  1818. * @rmtoll OPCCR2 ADCCKS FL_RCC_GetADCClockSource
  1819. * @retval Returned value can be one of the following values:
  1820. * @arg @ref FL_RCC_ADC_CLK_SOURCE_RCMF_PSC
  1821. * @arg @ref FL_RCC_ADC_CLK_SOURCE_RCHF
  1822. * @arg @ref FL_RCC_ADC_CLK_SOURCE_XTHF
  1823. * @arg @ref FL_RCC_ADC_CLK_SOURCE_PLL
  1824. */
  1825. __STATIC_INLINE uint32_t FL_RCC_GetADCClockSource(void)
  1826. {
  1827. return (uint32_t)(READ_BIT(RCC->OPCCR2, RCC_OPCCR2_ADCCKS_Msk));
  1828. }
  1829. /**
  1830. * @brief Set LPTIM Clock Source
  1831. * @rmtoll OPCCR2 LPT32CKS FL_RCC_SetLPTIM32ClockSource
  1832. * @param clock This parameter can be one of the following values:
  1833. * @arg @ref FL_RCC_LPTIM32_CLK_SOURCE_APB1CLK
  1834. * @arg @ref FL_RCC_LPTIM32_CLK_SOURCE_LSCLK
  1835. * @arg @ref FL_RCC_LPTIM32_CLK_SOURCE_LPOSC
  1836. * @arg @ref FL_RCC_LPTIM32_CLK_SOURCE_RCMF_PSC
  1837. * @retval None
  1838. */
  1839. __STATIC_INLINE void FL_RCC_SetLPTIM32ClockSource(uint32_t clock)
  1840. {
  1841. MODIFY_REG(RCC->OPCCR2, RCC_OPCCR2_LPT32CKS_Msk, clock);
  1842. }
  1843. /**
  1844. * @brief Get LPTIM Clock Source Setting
  1845. * @rmtoll OPCCR2 LPT32CKS FL_RCC_GetLPTIM32ClockSource
  1846. * @retval Returned value can be one of the following values:
  1847. * @arg @ref FL_RCC_LPTIM32_CLK_SOURCE_APB1CLK
  1848. * @arg @ref FL_RCC_LPTIM32_CLK_SOURCE_LSCLK
  1849. * @arg @ref FL_RCC_LPTIM32_CLK_SOURCE_LPOSC
  1850. * @arg @ref FL_RCC_LPTIM32_CLK_SOURCE_RCMF_PSC
  1851. */
  1852. __STATIC_INLINE uint32_t FL_RCC_GetLPTIM32ClockSource(void)
  1853. {
  1854. return (uint32_t)(READ_BIT(RCC->OPCCR2, RCC_OPCCR2_LPT32CKS_Msk));
  1855. }
  1856. /**
  1857. * @brief Set BSTIM Clock Source
  1858. * @rmtoll OPCCR2 BT32CKS FL_RCC_SetBSTIM32ClockSource
  1859. * @param clock This parameter can be one of the following values:
  1860. * @arg @ref FL_RCC_BSTIM32_CLK_SOURCE_APB2CLK
  1861. * @arg @ref FL_RCC_BSTIM32_CLK_SOURCE_LSCLK
  1862. * @arg @ref FL_RCC_BSTIM32_CLK_SOURCE_LPOSC
  1863. * @arg @ref FL_RCC_BSTIM32_CLK_SOURCE_RCMF_PSC
  1864. * @retval None
  1865. */
  1866. __STATIC_INLINE void FL_RCC_SetBSTIM32ClockSource(uint32_t clock)
  1867. {
  1868. MODIFY_REG(RCC->OPCCR2, RCC_OPCCR2_BT32CKS_Msk, clock);
  1869. }
  1870. /**
  1871. * @brief Get BSTIM Clock Source Setting
  1872. * @rmtoll OPCCR2 BT32CKS FL_RCC_GetBSTIM32ClockSource
  1873. * @retval Returned value can be one of the following values:
  1874. * @arg @ref FL_RCC_BSTIM32_CLK_SOURCE_APB2CLK
  1875. * @arg @ref FL_RCC_BSTIM32_CLK_SOURCE_LSCLK
  1876. * @arg @ref FL_RCC_BSTIM32_CLK_SOURCE_LPOSC
  1877. * @arg @ref FL_RCC_BSTIM32_CLK_SOURCE_RCMF_PSC
  1878. */
  1879. __STATIC_INLINE uint32_t FL_RCC_GetBSTIM32ClockSource(void)
  1880. {
  1881. return (uint32_t)(READ_BIT(RCC->OPCCR2, RCC_OPCCR2_BT32CKS_Msk));
  1882. }
  1883. /**
  1884. * @brief Set AHB Master Priority
  1885. * @rmtoll AHBMCR MPRIL FL_RCC_SetAHBMasterPriority
  1886. * @param priority This parameter can be one of the following values:
  1887. * @arg @ref FL_RCC_AHB_MASTER_PRIORITY_DMA_FIRST
  1888. * @arg @ref FL_RCC_AHB_MASTER_PRIORITY_CPU_FIRST
  1889. * @retval None
  1890. */
  1891. __STATIC_INLINE void FL_RCC_SetAHBMasterPriority(uint32_t priority)
  1892. {
  1893. MODIFY_REG(RCC->AHBMCR, RCC_AHBMCR_MPRIL_Msk, priority);
  1894. }
  1895. /**
  1896. * @brief Get AHB Master Priority Setting
  1897. * @rmtoll AHBMCR MPRIL FL_RCC_GetAHBMasterPriority
  1898. * @retval Returned value can be one of the following values:
  1899. * @arg @ref FL_RCC_AHB_MASTER_PRIORITY_DMA_FIRST
  1900. * @arg @ref FL_RCC_AHB_MASTER_PRIORITY_CPU_FIRST
  1901. */
  1902. __STATIC_INLINE uint32_t FL_RCC_GetAHBMasterPriority(void)
  1903. {
  1904. return (uint32_t)(READ_BIT(RCC->AHBMCR, RCC_AHBMCR_MPRIL_Msk));
  1905. }
  1906. /**
  1907. * @brief Set LSCLK Clock Source
  1908. * @rmtoll LSCLKSEL SEL FL_RCC_SetLSCLKClockSource
  1909. * @param clock This parameter can be one of the following values:
  1910. * @arg @ref FL_RCC_LSCLK_CLK_SOURCE_LPOSC
  1911. * @arg @ref FL_RCC_LSCLK_CLK_SOURCE_XTLF
  1912. * @retval None
  1913. */
  1914. __STATIC_INLINE void FL_RCC_SetLSCLKClockSource(uint32_t clock)
  1915. {
  1916. MODIFY_REG(RCC->LSCLKSEL, RCC_LSCLKSEL_SEL_Msk, clock);
  1917. }
  1918. /**
  1919. * @brief Enable USB PHY Reset
  1920. * @rmtoll PHYCR PHYRST FL_RCC_EnableUSBPHYReset
  1921. * @retval None
  1922. */
  1923. __STATIC_INLINE void FL_RCC_EnableUSBPHYReset(void)
  1924. {
  1925. CLEAR_BIT(RCC->PHYCR, RCC_PHYCR_PHYRST_Msk);
  1926. }
  1927. /**
  1928. * @brief Get USB PHY Enable Status
  1929. * @rmtoll PHYCR PHYRST FL_RCC_IsEnabledUSBPHYReset
  1930. * @retval State of bit (1 or 0).
  1931. */
  1932. __STATIC_INLINE uint32_t FL_RCC_IsEnabledUSBPHYReset(void)
  1933. {
  1934. return (uint32_t)!(READ_BIT(RCC->PHYCR, RCC_PHYCR_PHYRST_Msk) == RCC_PHYCR_PHYRST_Msk);
  1935. }
  1936. /**
  1937. * @brief Disable USB PHY Reset
  1938. * @rmtoll PHYCR PHYRST FL_RCC_DisableUSBPHYReset
  1939. * @retval None
  1940. */
  1941. __STATIC_INLINE void FL_RCC_DisableUSBPHYReset(void)
  1942. {
  1943. SET_BIT(RCC->PHYCR, RCC_PHYCR_PHYRST_Msk);
  1944. }
  1945. /**
  1946. * @brief Enable USB PHY Power Down
  1947. * @rmtoll PHYCR PD FL_RCC_EnableUSBPHYPowerDown
  1948. * @retval None
  1949. */
  1950. __STATIC_INLINE void FL_RCC_EnableUSBPHYPowerDown(void)
  1951. {
  1952. SET_BIT(RCC->PHYCR, RCC_PHYCR_PD_Msk);
  1953. }
  1954. /**
  1955. * @brief Get USB PHY Power Down Enable Status
  1956. * @rmtoll PHYCR PD FL_RCC_IsEnabledUSBPHYPowerDown
  1957. * @retval State of bit (1 or 0).
  1958. */
  1959. __STATIC_INLINE uint32_t FL_RCC_IsEnabledUSBPHYPowerDown(void)
  1960. {
  1961. return (uint32_t)(READ_BIT(RCC->PHYCR, RCC_PHYCR_PD_Msk) == RCC_PHYCR_PD_Msk);
  1962. }
  1963. /**
  1964. * @brief Disable USB PHY Power Down
  1965. * @rmtoll PHYCR PD FL_RCC_DisableUSBPHYPowerDown
  1966. * @retval None
  1967. */
  1968. __STATIC_INLINE void FL_RCC_DisableUSBPHYPowerDown(void)
  1969. {
  1970. CLEAR_BIT(RCC->PHYCR, RCC_PHYCR_PD_Msk);
  1971. }
  1972. /**
  1973. * @brief Set USB PHY Power Ready Flag
  1974. * @rmtoll PHYCR PLVREADY FL_RCC_SetUSBPHYPowerReadyFlag
  1975. * @retval None
  1976. */
  1977. __STATIC_INLINE void FL_RCC_SetUSBPHYPowerReadyFlag(void)
  1978. {
  1979. SET_BIT(RCC->PHYCR, RCC_PHYCR_PLVREADY_Msk);
  1980. }
  1981. /**
  1982. * @brief Reset USB PHY Power Ready Flag
  1983. * @rmtoll PHYCR PLVREADY FL_RCC_ResetUSBPHYPowerReadyFlag
  1984. * @retval None
  1985. */
  1986. __STATIC_INLINE void FL_RCC_ResetUSBPHYPowerReadyFlag(void)
  1987. {
  1988. CLEAR_BIT(RCC->PHYCR, RCC_PHYCR_PLVREADY_Msk);
  1989. }
  1990. /**
  1991. * @brief Enable USB BCK
  1992. * @rmtoll PHYCR BCKPD FL_RCC_EnableUSBBCK
  1993. * @retval None
  1994. */
  1995. __STATIC_INLINE void FL_RCC_EnableUSBBCK(void)
  1996. {
  1997. CLEAR_BIT(RCC->PHYCR, RCC_PHYCR_BCKPD_Msk);
  1998. }
  1999. /**
  2000. * @brief Get USB BCK Enable Status
  2001. * @rmtoll PHYCR BCKPD FL_RCC_IsEnabledUSBBCK
  2002. * @retval State of bit (1 or 0).
  2003. */
  2004. __STATIC_INLINE uint32_t FL_RCC_IsEnabledUSBBCK(void)
  2005. {
  2006. return (uint32_t)(READ_BIT(RCC->PHYCR, RCC_PHYCR_BCKPD_Msk) == RCC_PHYCR_BCKPD_Msk);
  2007. }
  2008. /**
  2009. * @brief Disable USB BCK
  2010. * @rmtoll PHYCR BCKPD FL_RCC_DisableUSBBCK
  2011. * @retval None
  2012. */
  2013. __STATIC_INLINE void FL_RCC_DisableUSBBCK(void)
  2014. {
  2015. SET_BIT(RCC->PHYCR, RCC_PHYCR_BCKPD_Msk);
  2016. }
  2017. /**
  2018. * @brief Enable USB BCK Reset
  2019. * @rmtoll PHYCR BCKRST FL_RCC_EnableUSBBCKReset
  2020. * @retval None
  2021. */
  2022. __STATIC_INLINE void FL_RCC_EnableUSBBCKReset(void)
  2023. {
  2024. CLEAR_BIT(RCC->PHYCR, RCC_PHYCR_BCKRST_Msk);
  2025. }
  2026. /**
  2027. * @brief Get USB BCK Reset Enable Status
  2028. * @rmtoll PHYCR BCKRST FL_RCC_IsEnabledUSBBCKReset
  2029. * @retval State of bit (1 or 0).
  2030. */
  2031. __STATIC_INLINE uint32_t FL_RCC_IsEnabledUSBBCKReset(void)
  2032. {
  2033. return (uint32_t)!(READ_BIT(RCC->PHYCR, RCC_PHYCR_BCKRST_Msk) == RCC_PHYCR_BCKRST_Msk);
  2034. }
  2035. /**
  2036. * @brief Disable USB BCK Reset
  2037. * @rmtoll PHYCR BCKRST FL_RCC_DisableUSBBCKReset
  2038. * @retval None
  2039. */
  2040. __STATIC_INLINE void FL_RCC_DisableUSBBCKReset(void)
  2041. {
  2042. SET_BIT(RCC->PHYCR, RCC_PHYCR_BCKRST_Msk);
  2043. }
  2044. /**
  2045. * @brief Enable USB 48M Clock
  2046. * @rmtoll PHYBCKCR CK48M_EN FL_RCC_EnableUSB48MClock
  2047. * @retval None
  2048. */
  2049. __STATIC_INLINE void FL_RCC_EnableUSB48MClock(void)
  2050. {
  2051. SET_BIT(RCC->PHYBCKCR, RCC_PHYBCKCR_CK48M_EN_Msk);
  2052. }
  2053. /**
  2054. * @brief Get USB 48M Clock Enable Status
  2055. * @rmtoll PHYBCKCR CK48M_EN FL_RCC_IsEnabledUSB48MClock
  2056. * @retval State of bit (1 or 0).
  2057. */
  2058. __STATIC_INLINE uint32_t FL_RCC_IsEnabledUSB48MClock(void)
  2059. {
  2060. return (uint32_t)(READ_BIT(RCC->PHYBCKCR, RCC_PHYBCKCR_CK48M_EN_Msk) == RCC_PHYBCKCR_CK48M_EN_Msk);
  2061. }
  2062. /**
  2063. * @brief Disable USB 48M Clock
  2064. * @rmtoll PHYBCKCR CK48M_EN FL_RCC_DisableUSB48MClock
  2065. * @retval None
  2066. */
  2067. __STATIC_INLINE void FL_RCC_DisableUSB48MClock(void)
  2068. {
  2069. CLEAR_BIT(RCC->PHYBCKCR, RCC_PHYBCKCR_CK48M_EN_Msk);
  2070. }
  2071. /**
  2072. * @brief Get USB Clock Ready Flag
  2073. * @rmtoll PHYBCKCR CLKRDY FL_RCC_IsActiveFlag_USBClockReady
  2074. * @retval State of bit (1 or 0).
  2075. */
  2076. __STATIC_INLINE uint32_t FL_RCC_IsActiveFlag_USBClockReady(void)
  2077. {
  2078. return (uint32_t)(READ_BIT(RCC->PHYBCKCR, RCC_PHYBCKCR_CLKRDY_Msk) == RCC_PHYBCKCR_CLKRDY_Msk);
  2079. }
  2080. /**
  2081. * @brief Set USB Reference Clock Source
  2082. * @rmtoll PHYBCKCR OUTCLKSEL FL_RCC_SetUSBClockReferenceSource
  2083. * @param clock This parameter can be one of the following values:
  2084. * @arg @ref FL_RCC_USB_CLK_REF_SOURCE_SOF
  2085. * @arg @ref FL_RCC_USB_CLK_REF_SOURCE_CORECLKIN
  2086. * @retval None
  2087. */
  2088. __STATIC_INLINE void FL_RCC_SetUSBClockReferenceSource(uint32_t clock)
  2089. {
  2090. MODIFY_REG(RCC->PHYBCKCR, RCC_PHYBCKCR_OUTCLKSEL_Msk, clock);
  2091. }
  2092. /**
  2093. * @brief Get USB Reference Clock Source
  2094. * @rmtoll PHYBCKCR OUTCLKSEL FL_RCC_GetUSBClockReferenceSource
  2095. * @retval Returned value can be one of the following values:
  2096. * @arg @ref FL_RCC_USB_CLK_REF_SOURCE_SOF
  2097. * @arg @ref FL_RCC_USB_CLK_REF_SOURCE_CORECLKIN
  2098. */
  2099. __STATIC_INLINE uint32_t FL_RCC_GetUSBClockReferenceSource(void)
  2100. {
  2101. return (uint32_t)(READ_BIT(RCC->PHYBCKCR, RCC_PHYBCKCR_OUTCLKSEL_Msk));
  2102. }
  2103. /**
  2104. * @brief Get LockUp Reset Enable Status
  2105. * @rmtoll LKPCR RST_EN FL_RCC_IsEnabledLockUpReset
  2106. * @retval State of bit (1 or 0).
  2107. */
  2108. __STATIC_INLINE uint32_t FL_RCC_IsEnabledLockUpReset(void)
  2109. {
  2110. return (uint32_t)(READ_BIT(RCC->LKPCR, RCC_LKPCR_RST_EN_Msk) == RCC_LKPCR_RST_EN_Msk);
  2111. }
  2112. /**
  2113. * @brief Disable LockUp Reset
  2114. * @rmtoll LKPCR RST_EN FL_RCC_DisableLockUpReset
  2115. * @retval None
  2116. */
  2117. __STATIC_INLINE void FL_RCC_DisableLockUpReset(void)
  2118. {
  2119. CLEAR_BIT(RCC->LKPCR, RCC_LKPCR_RST_EN_Msk);
  2120. }
  2121. /**
  2122. * @brief Enable LockUp Reset
  2123. * @rmtoll LKPCR RST_EN FL_RCC_EnableLockUpReset
  2124. * @retval None
  2125. */
  2126. __STATIC_INLINE void FL_RCC_EnableLockUpReset(void)
  2127. {
  2128. SET_BIT(RCC->LKPCR, RCC_LKPCR_RST_EN_Msk);
  2129. }
  2130. /**
  2131. * @brief SoftReset Chip
  2132. * @rmtoll SOFTRST FL_RCC_SetSoftReset
  2133. * @retval None
  2134. */
  2135. __STATIC_INLINE void FL_RCC_SetSoftReset(void)
  2136. {
  2137. WRITE_REG(RCC->SOFTRST, FL_RCC_SOFTWARE_RESET_KEY);
  2138. }
  2139. /**
  2140. * @brief Get MDFN Reset Flag
  2141. * @rmtoll RSTFR MDFN_FLAG FL_RCC_IsActiveFlag_MDF
  2142. * @retval State of bit (1 or 0).
  2143. */
  2144. __STATIC_INLINE uint32_t FL_RCC_IsActiveFlag_MDF(void)
  2145. {
  2146. return (uint32_t)(READ_BIT(RCC->RSTFR, RCC_RSTFR_MDFN_FLAG_Msk) == (RCC_RSTFR_MDFN_FLAG_Msk));
  2147. }
  2148. /**
  2149. * @brief Clear MDFN Reset Flag
  2150. * @rmtoll RSTFR MDFN_FLAG FL_RCC_ClearFlag_MDF
  2151. * @retval None
  2152. */
  2153. __STATIC_INLINE void FL_RCC_ClearFlag_MDF(void)
  2154. {
  2155. WRITE_REG(RCC->RSTFR, RCC_RSTFR_MDFN_FLAG_Msk);
  2156. }
  2157. /**
  2158. * @brief Get NRST Reset Flag
  2159. * @rmtoll RSTFR NRSTN_FLAG FL_RCC_IsActiveFlag_NRSTN
  2160. * @retval State of bit (1 or 0).
  2161. */
  2162. __STATIC_INLINE uint32_t FL_RCC_IsActiveFlag_NRSTN(void)
  2163. {
  2164. return (uint32_t)(READ_BIT(RCC->RSTFR, RCC_RSTFR_NRSTN_FLAG_Msk) == (RCC_RSTFR_NRSTN_FLAG_Msk));
  2165. }
  2166. /**
  2167. * @brief Clear NRST Reset Flag
  2168. * @rmtoll RSTFR NRSTN_FLAG FL_RCC_ClearFlag_NRSTN
  2169. * @retval None
  2170. */
  2171. __STATIC_INLINE void FL_RCC_ClearFlag_NRSTN(void)
  2172. {
  2173. WRITE_REG(RCC->RSTFR, RCC_RSTFR_NRSTN_FLAG_Msk);
  2174. }
  2175. /**
  2176. * @brief Get TESTN Reset Flag
  2177. * @rmtoll RSTFR TESTN_FLAG FL_RCC_IsActiveFlag_TESTN
  2178. * @retval State of bit (1 or 0).
  2179. */
  2180. __STATIC_INLINE uint32_t FL_RCC_IsActiveFlag_TESTN(void)
  2181. {
  2182. return (uint32_t)(READ_BIT(RCC->RSTFR, RCC_RSTFR_TESTN_FLAG_Msk) == (RCC_RSTFR_TESTN_FLAG_Msk));
  2183. }
  2184. /**
  2185. * @brief Clear TESTN Reset Flag
  2186. * @rmtoll RSTFR TESTN_FLAG FL_RCC_ClearFlag_TESTN
  2187. * @retval None
  2188. */
  2189. __STATIC_INLINE void FL_RCC_ClearFlag_TESTN(void)
  2190. {
  2191. WRITE_REG(RCC->RSTFR, RCC_RSTFR_TESTN_FLAG_Msk);
  2192. }
  2193. /**
  2194. * @brief Get Power Up Reset Flag
  2195. * @rmtoll RSTFR PORN_FLAG FL_RCC_IsActiveFlag_PORN
  2196. * @retval State of bit (1 or 0).
  2197. */
  2198. __STATIC_INLINE uint32_t FL_RCC_IsActiveFlag_PORN(void)
  2199. {
  2200. return (uint32_t)(READ_BIT(RCC->RSTFR, RCC_RSTFR_PORN_FLAG_Msk) == (RCC_RSTFR_PORN_FLAG_Msk));
  2201. }
  2202. /**
  2203. * @brief Clear Power Up Reset Flag
  2204. * @rmtoll RSTFR PORN_FLAG FL_RCC_ClearFlag_PORN
  2205. * @retval None
  2206. */
  2207. __STATIC_INLINE void FL_RCC_ClearFlag_PORN(void)
  2208. {
  2209. WRITE_REG(RCC->RSTFR, RCC_RSTFR_PORN_FLAG_Msk);
  2210. }
  2211. /**
  2212. * @brief Get Power Down Reset Flag
  2213. * @rmtoll RSTFR PDRN_FLAG FL_RCC_IsActiveFlag_PDRN
  2214. * @retval State of bit (1 or 0).
  2215. */
  2216. __STATIC_INLINE uint32_t FL_RCC_IsActiveFlag_PDRN(void)
  2217. {
  2218. return (uint32_t)(READ_BIT(RCC->RSTFR, RCC_RSTFR_PDRN_FLAG_Msk) == (RCC_RSTFR_PDRN_FLAG_Msk));
  2219. }
  2220. /**
  2221. * @brief Clear Power Down Reset Flag
  2222. * @rmtoll RSTFR PDRN_FLAG FL_RCC_ClearFlag_PDRN
  2223. * @retval None
  2224. */
  2225. __STATIC_INLINE void FL_RCC_ClearFlag_PDRN(void)
  2226. {
  2227. WRITE_REG(RCC->RSTFR, RCC_RSTFR_PDRN_FLAG_Msk);
  2228. }
  2229. /**
  2230. * @brief Get Software Reset Flag
  2231. * @rmtoll RSTFR SOFTN_FLAG FL_RCC_IsActiveFlag_SOFTN
  2232. * @retval State of bit (1 or 0).
  2233. */
  2234. __STATIC_INLINE uint32_t FL_RCC_IsActiveFlag_SOFTN(void)
  2235. {
  2236. return (uint32_t)(READ_BIT(RCC->RSTFR, RCC_RSTFR_SOFTN_FLAG_Msk) == (RCC_RSTFR_SOFTN_FLAG_Msk));
  2237. }
  2238. /**
  2239. * @brief Clear Software Reset Flag
  2240. * @rmtoll RSTFR SOFTN_FLAG FL_RCC_ClearFlag_SOFTN
  2241. * @retval None
  2242. */
  2243. __STATIC_INLINE void FL_RCC_ClearFlag_SOFTN(void)
  2244. {
  2245. WRITE_REG(RCC->RSTFR, RCC_RSTFR_SOFTN_FLAG_Msk);
  2246. }
  2247. /**
  2248. * @brief Get IWDT Reset Flag
  2249. * @rmtoll RSTFR IWDTN_FLAG FL_RCC_IsActiveFlag_IWDTN
  2250. * @retval State of bit (1 or 0).
  2251. */
  2252. __STATIC_INLINE uint32_t FL_RCC_IsActiveFlag_IWDTN(void)
  2253. {
  2254. return (uint32_t)(READ_BIT(RCC->RSTFR, RCC_RSTFR_IWDTN_FLAG_Msk) == (RCC_RSTFR_IWDTN_FLAG_Msk));
  2255. }
  2256. /**
  2257. * @brief Clear IWDT Reset Flag
  2258. * @rmtoll RSTFR IWDTN_FLAG FL_RCC_ClearFlag_IWDTN
  2259. * @retval None
  2260. */
  2261. __STATIC_INLINE void FL_RCC_ClearFlag_IWDTN(void)
  2262. {
  2263. WRITE_REG(RCC->RSTFR, RCC_RSTFR_IWDTN_FLAG_Msk);
  2264. }
  2265. /**
  2266. * @brief Get WWDT Reset Flag
  2267. * @rmtoll RSTFR WWDTN_FLAG FL_RCC_IsActiveFlag_WWDTN
  2268. * @retval State of bit (1 or 0).
  2269. */
  2270. __STATIC_INLINE uint32_t FL_RCC_IsActiveFlag_WWDTN(void)
  2271. {
  2272. return (uint32_t)(READ_BIT(RCC->RSTFR, RCC_RSTFR_WWDTN_FLAG_Msk) == (RCC_RSTFR_WWDTN_FLAG_Msk));
  2273. }
  2274. /**
  2275. * @brief Clear WWDT Reset Flag
  2276. * @rmtoll RSTFR WWDTN_FLAG FL_RCC_ClearFlag_WWDTN
  2277. * @retval None
  2278. */
  2279. __STATIC_INLINE void FL_RCC_ClearFlag_WWDTN(void)
  2280. {
  2281. WRITE_REG(RCC->RSTFR, RCC_RSTFR_WWDTN_FLAG_Msk);
  2282. }
  2283. /**
  2284. * @brief Get LockUp Reset Flag
  2285. * @rmtoll RSTFR LKUPN_FLAG FL_RCC_IsActiveFlag_LKUPN
  2286. * @retval State of bit (1 or 0).
  2287. */
  2288. __STATIC_INLINE uint32_t FL_RCC_IsActiveFlag_LKUPN(void)
  2289. {
  2290. return (uint32_t)(READ_BIT(RCC->RSTFR, RCC_RSTFR_LKUPN_FLAG_Msk) == (RCC_RSTFR_LKUPN_FLAG_Msk));
  2291. }
  2292. /**
  2293. * @brief Clear LockUp Reset Flag
  2294. * @rmtoll RSTFR LKUPN_FLAG FL_RCC_ClearFlag_LKUPN
  2295. * @retval None
  2296. */
  2297. __STATIC_INLINE void FL_RCC_ClearFlag_LKUPN(void)
  2298. {
  2299. WRITE_REG(RCC->RSTFR, RCC_RSTFR_LKUPN_FLAG_Msk);
  2300. }
  2301. /**
  2302. * @brief Get NVIC Reset Flag
  2303. * @rmtoll RSTFR NVICN_FLAG FL_RCC_IsActiveFlag_NVICN
  2304. * @retval State of bit (1 or 0).
  2305. */
  2306. __STATIC_INLINE uint32_t FL_RCC_IsActiveFlag_NVICN(void)
  2307. {
  2308. return (uint32_t)(READ_BIT(RCC->RSTFR, RCC_RSTFR_NVICN_FLAG_Msk) == (RCC_RSTFR_NVICN_FLAG_Msk));
  2309. }
  2310. /**
  2311. * @brief Clear NVIC Reset Flag
  2312. * @rmtoll RSTFR NVICN_FLAG FL_RCC_ClearFlag_NVICN
  2313. * @retval None
  2314. */
  2315. __STATIC_INLINE void FL_RCC_ClearFlag_NVICN(void)
  2316. {
  2317. WRITE_REG(RCC->RSTFR, RCC_RSTFR_NVICN_FLAG_Msk);
  2318. }
  2319. /**
  2320. * @brief Disable Peripheral Reset
  2321. * @rmtoll PRSTEN FL_RCC_DisablePeripheralReset
  2322. * @retval None
  2323. */
  2324. __STATIC_INLINE void FL_RCC_DisablePeripheralReset(void)
  2325. {
  2326. WRITE_REG(RCC->PRSTEN, (~FL_RCC_PERIPHERAL_RESET_KEY));
  2327. }
  2328. /**
  2329. * @brief Enable Peripheral Reset
  2330. * @rmtoll PRSTEN FL_RCC_EnablePeripheralReset
  2331. * @retval None
  2332. */
  2333. __STATIC_INLINE void FL_RCC_EnablePeripheralReset(void)
  2334. {
  2335. WRITE_REG(RCC->PRSTEN, FL_RCC_PERIPHERAL_RESET_KEY);
  2336. }
  2337. /**
  2338. * @brief Enable AHB Peripheral Reset
  2339. * @rmtoll AHBRSTCR FL_RCC_EnableResetAHBPeripheral
  2340. * @param peripheral This parameter can be one of the following values:
  2341. * @arg @ref FL_RCC_RSTAHB_DMA
  2342. * @arg @ref FL_RCC_RSTAHB_USB
  2343. * @retval None
  2344. */
  2345. __STATIC_INLINE void FL_RCC_EnableResetAHBPeripheral(uint32_t peripheral)
  2346. {
  2347. SET_BIT(RCC->AHBRSTCR, ((peripheral & 0xffffffff) << 0x0U));
  2348. }
  2349. /**
  2350. * @brief Enable APB1 Peripheral Reset
  2351. * @rmtoll APBRSTCR1 FL_RCC_EnableResetAPB1Peripheral
  2352. * @param peripheral This parameter can be one of the following values:
  2353. * @arg @ref FL_RCC_RSTAPB_UART5
  2354. * @arg @ref FL_RCC_RSTAPB_UART4
  2355. * @arg @ref FL_RCC_RSTAPB_GPTIM1
  2356. * @arg @ref FL_RCC_RSTAPB_GPTIM0
  2357. * @arg @ref FL_RCC_RSTAPB_LCD
  2358. * @arg @ref FL_RCC_RSTAPB_U7816
  2359. * @arg @ref FL_RCC_RSTAPB_SPI2
  2360. * @arg @ref FL_RCC_RSTAPB_LPUART0
  2361. * @arg @ref FL_RCC_RSTAPB_I2C
  2362. * @arg @ref FL_RCC_RSTAPB_LPTIM32
  2363. * @retval None
  2364. */
  2365. __STATIC_INLINE void FL_RCC_EnableResetAPB1Peripheral(uint32_t peripheral)
  2366. {
  2367. SET_BIT(RCC->APBRSTCR1, ((peripheral & 0xffffffff) << 0x0U));
  2368. }
  2369. /**
  2370. * @brief Enable APB2 Peripheral Reset
  2371. * @rmtoll APBRSTCR2 FL_RCC_EnableResetAPB2Peripheral
  2372. * @param peripheral This parameter can be one of the following values:
  2373. * @arg @ref FL_RCC_RSTAPB_ATIM
  2374. * @arg @ref FL_RCC_RSTAPB_BSTIM32
  2375. * @arg @ref FL_RCC_RSTAPB_ADCCR
  2376. * @arg @ref FL_RCC_RSTAPB_ADC
  2377. * @arg @ref FL_RCC_RSTAPB_OPA
  2378. * @arg @ref FL_RCC_RSTAPB_DIVAS
  2379. * @arg @ref FL_RCC_RSTAPB_AES
  2380. * @arg @ref FL_RCC_RSTAPB_CRC
  2381. * @arg @ref FL_RCC_RSTAPB_RNG
  2382. * @arg @ref FL_RCC_RSTAPB_UART1
  2383. * @arg @ref FL_RCC_RSTAPB_UART0
  2384. * @arg @ref FL_RCC_RSTAPB_SPI1
  2385. * @arg @ref FL_RCC_RSTAPB_UCIR
  2386. * @arg @ref FL_RCC_RSTAPB_LPUART1
  2387. * @retval None
  2388. */
  2389. __STATIC_INLINE void FL_RCC_EnableResetAPB2Peripheral(uint32_t peripheral)
  2390. {
  2391. SET_BIT(RCC->APBRSTCR2, ((peripheral & 0xffffffff) << 0x0U));
  2392. }
  2393. /**
  2394. * @brief Disable AHB Peripheral Reset
  2395. * @rmtoll AHBRSTCR FL_RCC_DisableResetAHBPeripheral
  2396. * @param peripheral This parameter can be one of the following values:
  2397. * @arg @ref FL_RCC_RSTAHB_DMA
  2398. * @arg @ref FL_RCC_RSTAHB_USB
  2399. * @retval None
  2400. */
  2401. __STATIC_INLINE void FL_RCC_DisableResetAHBPeripheral(uint32_t peripheral)
  2402. {
  2403. CLEAR_BIT(RCC->AHBRSTCR, ((peripheral & 0xffffffff) << 0x0U));
  2404. }
  2405. /**
  2406. * @brief Disable APB1 Peripheral Reset
  2407. * @rmtoll APBRSTCR1 FL_RCC_DisableResetAPB1Peripheral
  2408. * @param peripheral This parameter can be one of the following values:
  2409. * @arg @ref FL_RCC_RSTAPB_UART5
  2410. * @arg @ref FL_RCC_RSTAPB_UART4
  2411. * @arg @ref FL_RCC_RSTAPB_GPTIM1
  2412. * @arg @ref FL_RCC_RSTAPB_GPTIM0
  2413. * @arg @ref FL_RCC_RSTAPB_LCD
  2414. * @arg @ref FL_RCC_RSTAPB_U7816
  2415. * @arg @ref FL_RCC_RSTAPB_SPI2
  2416. * @arg @ref FL_RCC_RSTAPB_LPUART0
  2417. * @arg @ref FL_RCC_RSTAPB_I2C
  2418. * @arg @ref FL_RCC_RSTAPB_LPTIM32
  2419. * @retval None
  2420. */
  2421. __STATIC_INLINE void FL_RCC_DisableResetAPB1Peripheral(uint32_t peripheral)
  2422. {
  2423. CLEAR_BIT(RCC->APBRSTCR1, ((peripheral & 0xffffffff) << 0x0U));
  2424. }
  2425. /**
  2426. * @brief Disable APB2 Peripheral Reset
  2427. * @rmtoll APBRSTCR2 FL_RCC_DisableResetAPB2Peripheral
  2428. * @param peripheral This parameter can be one of the following values:
  2429. * @arg @ref FL_RCC_RSTAPB_ATIM
  2430. * @arg @ref FL_RCC_RSTAPB_BSTIM32
  2431. * @arg @ref FL_RCC_RSTAPB_ADCCR
  2432. * @arg @ref FL_RCC_RSTAPB_ADC
  2433. * @arg @ref FL_RCC_RSTAPB_OPA
  2434. * @arg @ref FL_RCC_RSTAPB_DIVAS
  2435. * @arg @ref FL_RCC_RSTAPB_AES
  2436. * @arg @ref FL_RCC_RSTAPB_CRC
  2437. * @arg @ref FL_RCC_RSTAPB_RNG
  2438. * @arg @ref FL_RCC_RSTAPB_UART1
  2439. * @arg @ref FL_RCC_RSTAPB_UART0
  2440. * @arg @ref FL_RCC_RSTAPB_SPI1
  2441. * @arg @ref FL_RCC_RSTAPB_UCIR
  2442. * @arg @ref FL_RCC_RSTAPB_LPUART1
  2443. * @retval None
  2444. */
  2445. __STATIC_INLINE void FL_RCC_DisableResetAPB2Peripheral(uint32_t peripheral)
  2446. {
  2447. CLEAR_BIT(RCC->APBRSTCR2, ((peripheral & 0xffffffff) << 0x0U));
  2448. }
  2449. /**
  2450. * @}
  2451. */
  2452. /** @defgroup RCC_FL_EF_Init Initialization and de-initialization functions
  2453. * @{
  2454. */
  2455. /**
  2456. * @}
  2457. */
  2458. /** @defgroup RCC_FL_EF_Operation Opeartion functions
  2459. * @{
  2460. */
  2461. uint32_t FL_RCC_GetSystemClockFreq(void);
  2462. uint32_t FL_RCC_GetAHBClockFreq(void);
  2463. uint32_t FL_RCC_GetAPB1ClockFreq(void);
  2464. uint32_t FL_RCC_GetAPB2ClockFreq(void);
  2465. uint32_t FL_RCC_GetRCMFClockFreq(void);
  2466. uint32_t FL_RCC_GetRCHFClockFreq(void);
  2467. uint32_t FL_RCC_GetPLLClockFreq(void);
  2468. /**
  2469. * @}
  2470. */
  2471. /**
  2472. * @}
  2473. */
  2474. /**
  2475. * @}
  2476. */
  2477. #ifdef __cplusplus
  2478. }
  2479. #endif
  2480. #endif /* __FM33LC0XX_FL_RCC_H*/
  2481. /*************************Py_Code_Generator Version: 0.1-0.14-0.2 @ 2021-07-08*************************/
  2482. /********************** (C) COPYRIGHT Fudan Microelectronics **** END OF FILE ***********************/