fm33lc0xx_fl_rcc.h 98 KB

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