stm32l5xx_ll_system.h 55 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345
  1. /**
  2. ******************************************************************************
  3. * @file stm32l5xx_ll_system.h
  4. * @author MCD Application Team
  5. * @brief Header file of SYSTEM LL module.
  6. *
  7. ******************************************************************************
  8. * @attention
  9. *
  10. * Copyright (c) 2019 STMicroelectronics.
  11. * All rights reserved.
  12. *
  13. * This software is licensed under terms that can be found in the LICENSE file
  14. * in the root directory of this software component.
  15. * If no LICENSE file comes with this software, it is provided AS-IS.
  16. *
  17. ******************************************************************************
  18. @verbatim
  19. ==============================================================================
  20. ##### How to use this driver #####
  21. ==============================================================================
  22. [..]
  23. The LL SYSTEM driver contains a set of generic APIs that can be
  24. used by user:
  25. (+) Some of the FLASH features need to be handled in the SYSTEM file.
  26. (+) Access to DBGCMU registers
  27. (+) Access to SYSCFG registers
  28. (+) Access to VREFBUF registers
  29. @endverbatim
  30. ******************************************************************************
  31. */
  32. /* Define to prevent recursive inclusion -------------------------------------*/
  33. #ifndef STM32L5xx_LL_SYSTEM_H
  34. #define STM32L5xx_LL_SYSTEM_H
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif
  38. /* Includes ------------------------------------------------------------------*/
  39. #include "stm32l5xx.h"
  40. /** @addtogroup STM32L5xx_LL_Driver
  41. * @{
  42. */
  43. #if defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) || defined (VREFBUF)
  44. /** @defgroup SYSTEM_LL SYSTEM
  45. * @{
  46. */
  47. /* Private types -------------------------------------------------------------*/
  48. /* Private variables ---------------------------------------------------------*/
  49. /* Private constants ---------------------------------------------------------*/
  50. /** @defgroup SYSTEM_LL_Private_Constants SYSTEM Private Constants
  51. * @{
  52. */
  53. /**
  54. * @brief VREFBUF VREF_SC0 & VREF_SC1 calibration values
  55. */
  56. #define VREFBUF_SC0_CAL_ADDR ((uint8_t*) (0x0BFA0579UL)) /*!< Address of VREFBUF trimming value for VRS=0,
  57. VREF_SC0 in STM32L5 datasheet */
  58. #define VREFBUF_SC1_CAL_ADDR ((uint8_t*) (0x0BFA0530UL)) /*!< Address of VREFBUF trimming value for VRS=1,
  59. VREF_SC1 in STM32L5 datasheet */
  60. /**
  61. * @brief Power-down in Run mode Flash key
  62. */
  63. #define FLASH_PDKEY1 0x04152637U /*!< Flash power down key1 */
  64. #define FLASH_PDKEY2 0xFAFBFCFDU /*!< Flash power down key2: used with FLASH_PDKEY1
  65. to unlock the RUN_PD bit in FLASH_ACR */
  66. /**
  67. * @}
  68. */
  69. /* Private macros ------------------------------------------------------------*/
  70. /* Exported types ------------------------------------------------------------*/
  71. /* Exported constants --------------------------------------------------------*/
  72. /** @defgroup SYSTEM_LL_Exported_Constants SYSTEM Exported Constants
  73. * @{
  74. */
  75. /** @defgroup SYSTEM_LL_EC_I2C_FASTMODEPLUS SYSCFG I2C FASTMODEPLUS
  76. * @{
  77. */
  78. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB6 SYSCFG_CFGR1_I2C_PB6_FMP /*!< Enable Fast Mode Plus on PB6 */
  79. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB7 SYSCFG_CFGR1_I2C_PB7_FMP /*!< Enable Fast Mode Plus on PB7 */
  80. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB8 SYSCFG_CFGR1_I2C_PB8_FMP /*!< Enable Fast Mode Plus on PB8 */
  81. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB9 SYSCFG_CFGR1_I2C_PB9_FMP /*!< Enable Fast Mode Plus on PB9 */
  82. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 SYSCFG_CFGR1_I2C1_FMP /*!< Enable Fast Mode Plus on I2C1 pins */
  83. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 SYSCFG_CFGR1_I2C2_FMP /*!< Enable Fast Mode Plus on I2C2 pins */
  84. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 SYSCFG_CFGR1_I2C3_FMP /*!< Enable Fast Mode Plus on I2C3 pins */
  85. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C4 SYSCFG_CFGR1_I2C4_FMP /*!< Enable Fast Mode Plus on I2C4 pins */
  86. /**
  87. * @}
  88. */
  89. /** @defgroup SYSTEM_LL_EC_TIMBREAK SYSCFG TIMER BREAK
  90. * @{
  91. */
  92. #define LL_SYSCFG_TIMBREAK_ECC SYSCFG_CFGR2_ECCL /*!< Enables and locks the ECC error signal
  93. with Break Input of TIM1/8/15/16/17 */
  94. #define LL_SYSCFG_TIMBREAK_PVD SYSCFG_CFGR2_PVDL /*!< Enables and locks the PVD connection
  95. with TIM1/8/15/16/17 Break Input
  96. and also the PVDE and PLS bits of the Power Control Interface */
  97. #define LL_SYSCFG_TIMBREAK_SRAM2_PARITY SYSCFG_CFGR2_SPL /*!< Enables and locks the SRAM2_PARITY error signal
  98. with Break Input of TIM1/8/15/16/17 */
  99. #define LL_SYSCFG_TIMBREAK_LOCKUP SYSCFG_CFGR2_CLL /*!< Enables and locks the LOCKUP output of CortexM4
  100. with Break Input of TIM1/15/16/17 */
  101. /**
  102. * @}
  103. */
  104. /** @defgroup SYSTEM_LL_EC_SRAM2WRP SYSCFG SRAM2 WRP
  105. * @{
  106. */
  107. #define LL_SYSCFG_SRAM2WRP_PAGE0 SYSCFG_SWPR_P0WP /*!< SRAM2 Write protection page 0 */
  108. #define LL_SYSCFG_SRAM2WRP_PAGE1 SYSCFG_SWPR_P1WP /*!< SRAM2 Write protection page 1 */
  109. #define LL_SYSCFG_SRAM2WRP_PAGE2 SYSCFG_SWPR_P2WP /*!< SRAM2 Write protection page 2 */
  110. #define LL_SYSCFG_SRAM2WRP_PAGE3 SYSCFG_SWPR_P3WP /*!< SRAM2 Write protection page 3 */
  111. #define LL_SYSCFG_SRAM2WRP_PAGE4 SYSCFG_SWPR_P4WP /*!< SRAM2 Write protection page 4 */
  112. #define LL_SYSCFG_SRAM2WRP_PAGE5 SYSCFG_SWPR_P5WP /*!< SRAM2 Write protection page 5 */
  113. #define LL_SYSCFG_SRAM2WRP_PAGE6 SYSCFG_SWPR_P6WP /*!< SRAM2 Write protection page 6 */
  114. #define LL_SYSCFG_SRAM2WRP_PAGE7 SYSCFG_SWPR_P7WP /*!< SRAM2 Write protection page 7 */
  115. #define LL_SYSCFG_SRAM2WRP_PAGE8 SYSCFG_SWPR_P8WP /*!< SRAM2 Write protection page 8 */
  116. #define LL_SYSCFG_SRAM2WRP_PAGE9 SYSCFG_SWPR_P9WP /*!< SRAM2 Write protection page 9 */
  117. #define LL_SYSCFG_SRAM2WRP_PAGE10 SYSCFG_SWPR_P10WP /*!< SRAM2 Write protection page 10 */
  118. #define LL_SYSCFG_SRAM2WRP_PAGE11 SYSCFG_SWPR_P11WP /*!< SRAM2 Write protection page 11 */
  119. #define LL_SYSCFG_SRAM2WRP_PAGE12 SYSCFG_SWPR_P12WP /*!< SRAM2 Write protection page 12 */
  120. #define LL_SYSCFG_SRAM2WRP_PAGE13 SYSCFG_SWPR_P13WP /*!< SRAM2 Write protection page 13 */
  121. #define LL_SYSCFG_SRAM2WRP_PAGE14 SYSCFG_SWPR_P14WP /*!< SRAM2 Write protection page 14 */
  122. #define LL_SYSCFG_SRAM2WRP_PAGE15 SYSCFG_SWPR_P15WP /*!< SRAM2 Write protection page 15 */
  123. #define LL_SYSCFG_SRAM2WRP_PAGE16 SYSCFG_SWPR_P16WP /*!< SRAM2 Write protection page 16 */
  124. #define LL_SYSCFG_SRAM2WRP_PAGE17 SYSCFG_SWPR_P17WP /*!< SRAM2 Write protection page 17 */
  125. #define LL_SYSCFG_SRAM2WRP_PAGE18 SYSCFG_SWPR_P18WP /*!< SRAM2 Write protection page 18 */
  126. #define LL_SYSCFG_SRAM2WRP_PAGE19 SYSCFG_SWPR_P19WP /*!< SRAM2 Write protection page 19 */
  127. #define LL_SYSCFG_SRAM2WRP_PAGE20 SYSCFG_SWPR_P20WP /*!< SRAM2 Write protection page 20 */
  128. #define LL_SYSCFG_SRAM2WRP_PAGE21 SYSCFG_SWPR_P21WP /*!< SRAM2 Write protection page 21 */
  129. #define LL_SYSCFG_SRAM2WRP_PAGE22 SYSCFG_SWPR_P22WP /*!< SRAM2 Write protection page 22 */
  130. #define LL_SYSCFG_SRAM2WRP_PAGE23 SYSCFG_SWPR_P23WP /*!< SRAM2 Write protection page 23 */
  131. #define LL_SYSCFG_SRAM2WRP_PAGE24 SYSCFG_SWPR_P24WP /*!< SRAM2 Write protection page 24 */
  132. #define LL_SYSCFG_SRAM2WRP_PAGE25 SYSCFG_SWPR_P25WP /*!< SRAM2 Write protection page 25 */
  133. #define LL_SYSCFG_SRAM2WRP_PAGE26 SYSCFG_SWPR_P26WP /*!< SRAM2 Write protection page 26 */
  134. #define LL_SYSCFG_SRAM2WRP_PAGE27 SYSCFG_SWPR_P27WP /*!< SRAM2 Write protection page 27 */
  135. #define LL_SYSCFG_SRAM2WRP_PAGE28 SYSCFG_SWPR_P28WP /*!< SRAM2 Write protection page 28 */
  136. #define LL_SYSCFG_SRAM2WRP_PAGE29 SYSCFG_SWPR_P29WP /*!< SRAM2 Write protection page 29 */
  137. #define LL_SYSCFG_SRAM2WRP_PAGE30 SYSCFG_SWPR_P30WP /*!< SRAM2 Write protection page 30 */
  138. #define LL_SYSCFG_SRAM2WRP_PAGE31 SYSCFG_SWPR_P31WP /*!< SRAM2 Write protection page 31 */
  139. #define LL_SYSCFG_SRAM2WRP_PAGE32 SYSCFG_SWPR2_P32WP /*!< SRAM2 Write protection page 32 */
  140. #define LL_SYSCFG_SRAM2WRP_PAGE33 SYSCFG_SWPR2_P33WP /*!< SRAM2 Write protection page 33 */
  141. #define LL_SYSCFG_SRAM2WRP_PAGE34 SYSCFG_SWPR2_P34WP /*!< SRAM2 Write protection page 34 */
  142. #define LL_SYSCFG_SRAM2WRP_PAGE35 SYSCFG_SWPR2_P35WP /*!< SRAM2 Write protection page 35 */
  143. #define LL_SYSCFG_SRAM2WRP_PAGE36 SYSCFG_SWPR2_P36WP /*!< SRAM2 Write protection page 36 */
  144. #define LL_SYSCFG_SRAM2WRP_PAGE37 SYSCFG_SWPR2_P37WP /*!< SRAM2 Write protection page 37 */
  145. #define LL_SYSCFG_SRAM2WRP_PAGE38 SYSCFG_SWPR2_P38WP /*!< SRAM2 Write protection page 38 */
  146. #define LL_SYSCFG_SRAM2WRP_PAGE39 SYSCFG_SWPR2_P39WP /*!< SRAM2 Write protection page 39 */
  147. #define LL_SYSCFG_SRAM2WRP_PAGE40 SYSCFG_SWPR2_P40WP /*!< SRAM2 Write protection page 40 */
  148. #define LL_SYSCFG_SRAM2WRP_PAGE41 SYSCFG_SWPR2_P41WP /*!< SRAM2 Write protection page 41 */
  149. #define LL_SYSCFG_SRAM2WRP_PAGE42 SYSCFG_SWPR2_P42WP /*!< SRAM2 Write protection page 42 */
  150. #define LL_SYSCFG_SRAM2WRP_PAGE43 SYSCFG_SWPR2_P43WP /*!< SRAM2 Write protection page 43 */
  151. #define LL_SYSCFG_SRAM2WRP_PAGE44 SYSCFG_SWPR2_P44WP /*!< SRAM2 Write protection page 44 */
  152. #define LL_SYSCFG_SRAM2WRP_PAGE45 SYSCFG_SWPR2_P45WP /*!< SRAM2 Write protection page 45 */
  153. #define LL_SYSCFG_SRAM2WRP_PAGE46 SYSCFG_SWPR2_P46WP /*!< SRAM2 Write protection page 46 */
  154. #define LL_SYSCFG_SRAM2WRP_PAGE47 SYSCFG_SWPR2_P47WP /*!< SRAM2 Write protection page 47 */
  155. #define LL_SYSCFG_SRAM2WRP_PAGE48 SYSCFG_SWPR2_P48WP /*!< SRAM2 Write protection page 48 */
  156. #define LL_SYSCFG_SRAM2WRP_PAGE49 SYSCFG_SWPR2_P49WP /*!< SRAM2 Write protection page 49 */
  157. #define LL_SYSCFG_SRAM2WRP_PAGE50 SYSCFG_SWPR2_P50WP /*!< SRAM2 Write protection page 50 */
  158. #define LL_SYSCFG_SRAM2WRP_PAGE51 SYSCFG_SWPR2_P51WP /*!< SRAM2 Write protection page 51 */
  159. #define LL_SYSCFG_SRAM2WRP_PAGE52 SYSCFG_SWPR2_P52WP /*!< SRAM2 Write protection page 52 */
  160. #define LL_SYSCFG_SRAM2WRP_PAGE53 SYSCFG_SWPR2_P53WP /*!< SRAM2 Write protection page 53 */
  161. #define LL_SYSCFG_SRAM2WRP_PAGE54 SYSCFG_SWPR2_P54WP /*!< SRAM2 Write protection page 54 */
  162. #define LL_SYSCFG_SRAM2WRP_PAGE55 SYSCFG_SWPR2_P55WP /*!< SRAM2 Write protection page 55 */
  163. #define LL_SYSCFG_SRAM2WRP_PAGE56 SYSCFG_SWPR2_P56WP /*!< SRAM2 Write protection page 56 */
  164. #define LL_SYSCFG_SRAM2WRP_PAGE57 SYSCFG_SWPR2_P57WP /*!< SRAM2 Write protection page 57 */
  165. #define LL_SYSCFG_SRAM2WRP_PAGE58 SYSCFG_SWPR2_P58WP /*!< SRAM2 Write protection page 58 */
  166. #define LL_SYSCFG_SRAM2WRP_PAGE59 SYSCFG_SWPR2_P59WP /*!< SRAM2 Write protection page 59 */
  167. #define LL_SYSCFG_SRAM2WRP_PAGE60 SYSCFG_SWPR2_P60WP /*!< SRAM2 Write protection page 60 */
  168. #define LL_SYSCFG_SRAM2WRP_PAGE61 SYSCFG_SWPR2_P61WP /*!< SRAM2 Write protection page 61 */
  169. #define LL_SYSCFG_SRAM2WRP_PAGE62 SYSCFG_SWPR2_P62WP /*!< SRAM2 Write protection page 62 */
  170. #define LL_SYSCFG_SRAM2WRP_PAGE63 SYSCFG_SWPR2_P63WP /*!< SRAM2 Write protection page 63 */
  171. /**
  172. * @}
  173. */
  174. /** @defgroup SYSTEM_LL_EC_SECURE_ATTRIBUTES Secure attributes
  175. * @note Only available when system implements security (TZEN=1)
  176. * @{
  177. */
  178. #define LL_SYSCFG_CLOCK_SEC SYSCFG_SECCFGR_SYSCFGSEC /*!< SYSCFG clock configuration secure-only access */
  179. #define LL_SYSCFG_CLOCK_NSEC 0U /*!< SYSCFG clock configuration secure/non-secure access */
  180. #define LL_SYSCFG_CLASSB_SEC SYSCFG_SECCFGR_CLASSBSEC /*!< Class B configuration secure-only access */
  181. #define LL_SYSCFG_CLASSB_NSEC 0U /*!< Class B configuration secure/non-secure access */
  182. #define LL_SYSCFG_SRAM2_SEC SYSCFG_SECCFGR_SRAM2SEC /*!< SRAM2 configuration secure-only access */
  183. #define LL_SYSCFG_SRAM2_NSEC 0U /*!< SRAM2 configuration secure/non-secure access */
  184. #define LL_SYSCFG_FPU_SEC SYSCFG_SECCFGR_FPUSEC /*!< FPU configuration secure-only access */
  185. #define LL_SYSCFG_FPU_NSEC 0U /*!< FPU configuration secure/non-secure access */
  186. /**
  187. * @}
  188. */
  189. /** @defgroup SYSTEM_LL_EC_TRACE DBGMCU TRACE Pin Assignment
  190. * @{
  191. */
  192. #define LL_DBGMCU_TRACE_NONE 0x00000000U /*!< TRACE pins not assigned (default state) */
  193. #define LL_DBGMCU_TRACE_ASYNCH DBGMCU_CR_TRACE_IOEN /*!< TRACE pin assignment for Asynchronous Mode */
  194. #define LL_DBGMCU_TRACE_SYNCH_SIZE1 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE_0) /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 1 */
  195. #define LL_DBGMCU_TRACE_SYNCH_SIZE2 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE_1) /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 2 */
  196. #define LL_DBGMCU_TRACE_SYNCH_SIZE4 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE) /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 4 */
  197. /**
  198. * @}
  199. */
  200. /** @defgroup SYSTEM_LL_EC_APB1_GRP1_STOP DBGMCU APB1 GRP1 STOP
  201. * @{
  202. */
  203. #define LL_DBGMCU_APB1_GRP1_TIM2_STOP DBGMCU_APB1FZR1_DBG_TIM2_STOP /*!< The counter clock of TIM2 is stopped when the core is halted*/
  204. #define LL_DBGMCU_APB1_GRP1_TIM3_STOP DBGMCU_APB1FZR1_DBG_TIM3_STOP /*!< The counter clock of TIM3 is stopped when the core is halted*/
  205. #define LL_DBGMCU_APB1_GRP1_TIM4_STOP DBGMCU_APB1FZR1_DBG_TIM4_STOP /*!< The counter clock of TIM4 is stopped when the core is halted*/
  206. #define LL_DBGMCU_APB1_GRP1_TIM5_STOP DBGMCU_APB1FZR1_DBG_TIM5_STOP /*!< The counter clock of TIM5 is stopped when the core is halted*/
  207. #define LL_DBGMCU_APB1_GRP1_TIM6_STOP DBGMCU_APB1FZR1_DBG_TIM6_STOP /*!< The counter clock of TIM6 is stopped when the core is halted*/
  208. #define LL_DBGMCU_APB1_GRP1_TIM7_STOP DBGMCU_APB1FZR1_DBG_TIM7_STOP /*!< The counter clock of TIM7 is stopped when the core is halted*/
  209. #define LL_DBGMCU_APB1_GRP1_RTC_STOP DBGMCU_APB1FZR1_DBG_RTC_STOP /*!< The clock of the RTC counter is stopped when the core is halted*/
  210. #define LL_DBGMCU_APB1_GRP1_WWDG_STOP DBGMCU_APB1FZR1_DBG_WWDG_STOP /*!< The window watchdog counter clock is stopped when the core is halted*/
  211. #define LL_DBGMCU_APB1_GRP1_IWDG_STOP DBGMCU_APB1FZR1_DBG_IWDG_STOP /*!< The independent watchdog counter clock is stopped when the core is halted*/
  212. #define LL_DBGMCU_APB1_GRP1_I2C1_STOP DBGMCU_APB1FZR1_DBG_I2C1_STOP /*!< The I2C1 SMBus timeout is frozen*/
  213. #define LL_DBGMCU_APB1_GRP1_I2C2_STOP DBGMCU_APB1FZR1_DBG_I2C2_STOP /*!< The I2C2 SMBus timeout is frozen*/
  214. #define LL_DBGMCU_APB1_GRP1_I2C3_STOP DBGMCU_APB1FZR1_DBG_I2C3_STOP /*!< The I2C3 SMBus timeout is frozen*/
  215. #define LL_DBGMCU_APB1_GRP1_FDCAN1_STOP DBGMCU_APB1FZR1_DBG_FDCAN1_STOP /*!< The FDCAN1 receive registers are frozen*/
  216. #define LL_DBGMCU_APB1_GRP1_LPTIM1_STOP DBGMCU_APB1FZR1_DBG_LPTIM1_STOP /*!< The counter clock of LPTIM1 is stopped when the core is halted*/
  217. /**
  218. * @}
  219. */
  220. /** @defgroup SYSTEM_LL_EC_APB1_GRP2_STOP DBGMCU APB1 GRP2 STOP
  221. * @{
  222. */
  223. #define LL_DBGMCU_APB1_GRP2_I2C4_STOP DBGMCU_APB1FZR2_DBG_I2C4_STOP /*!< The I2C4 SMBus timeout is frozen*/
  224. #define LL_DBGMCU_APB1_GRP2_LPTIM2_STOP DBGMCU_APB1FZR2_DBG_LPTIM2_STOP /*!< The counter clock of LPTIM2 is stopped when the core is halted*/
  225. #define LL_DBGMCU_APB1_GRP2_LPTIM3_STOP DBGMCU_APB1FZR2_DBG_LPTIM3_STOP /*!< The counter clock of LPTIM2 is stopped when the core is halted*/
  226. /**
  227. * @}
  228. */
  229. /** @defgroup SYSTEM_LL_EC_APB2_GRP1_STOP DBGMCU APB2 GRP1 STOP
  230. * @{
  231. */
  232. #define LL_DBGMCU_APB2_GRP1_TIM1_STOP DBGMCU_APB2FZR_DBG_TIM1_STOP /*!< The counter clock of TIM1 is stopped when the core is halted*/
  233. #define LL_DBGMCU_APB2_GRP1_TIM8_STOP DBGMCU_APB2FZR_DBG_TIM8_STOP /*!< The counter clock of TIM8 is stopped when the core is halted*/
  234. #define LL_DBGMCU_APB2_GRP1_TIM15_STOP DBGMCU_APB2FZR_DBG_TIM15_STOP /*!< The counter clock of TIM15 is stopped when the core is halted*/
  235. #define LL_DBGMCU_APB2_GRP1_TIM16_STOP DBGMCU_APB2FZR_DBG_TIM16_STOP /*!< The counter clock of TIM16 is stopped when the core is halted*/
  236. #define LL_DBGMCU_APB2_GRP1_TIM17_STOP DBGMCU_APB2FZR_DBG_TIM17_STOP /*!< The counter clock of TIM17 is stopped when the core is halted*/
  237. /**
  238. * @}
  239. */
  240. #if defined(VREFBUF)
  241. /** @defgroup SYSTEM_LL_EC_VOLTAGE VREFBUF VOLTAGE
  242. * @{
  243. */
  244. #define LL_VREFBUF_VOLTAGE_SCALE0 ((uint32_t)0x00000000) /*!< Voltage reference scale 0 (VREF_OUT1) */
  245. #define LL_VREFBUF_VOLTAGE_SCALE1 VREFBUF_CSR_VRS /*!< Voltage reference scale 1 (VREF_OUT2) */
  246. /**
  247. * @}
  248. */
  249. #endif /* VREFBUF */
  250. /** @defgroup SYSTEM_LL_EC_LATENCY FLASH LATENCY
  251. * @{
  252. */
  253. #define LL_FLASH_LATENCY_0 FLASH_ACR_LATENCY_0WS /*!< FLASH zero wait state */
  254. #define LL_FLASH_LATENCY_1 FLASH_ACR_LATENCY_1WS /*!< FLASH one wait state */
  255. #define LL_FLASH_LATENCY_2 FLASH_ACR_LATENCY_2WS /*!< FLASH two wait states */
  256. #define LL_FLASH_LATENCY_3 FLASH_ACR_LATENCY_3WS /*!< FLASH three wait states */
  257. #define LL_FLASH_LATENCY_4 FLASH_ACR_LATENCY_4WS /*!< FLASH four wait states */
  258. #define LL_FLASH_LATENCY_5 FLASH_ACR_LATENCY_5WS /*!< FLASH five wait states */
  259. #define LL_FLASH_LATENCY_6 FLASH_ACR_LATENCY_6WS /*!< FLASH six wait state */
  260. #define LL_FLASH_LATENCY_7 FLASH_ACR_LATENCY_7WS /*!< FLASH Seven wait states */
  261. #define LL_FLASH_LATENCY_8 FLASH_ACR_LATENCY_8WS /*!< FLASH Eight wait states */
  262. #define LL_FLASH_LATENCY_9 FLASH_ACR_LATENCY_9WS /*!< FLASH nine wait states */
  263. #define LL_FLASH_LATENCY_10 FLASH_ACR_LATENCY_10WS /*!< FLASH ten wait states */
  264. #define LL_FLASH_LATENCY_11 FLASH_ACR_LATENCY_11WS /*!< FLASH eleven wait states */
  265. #define LL_FLASH_LATENCY_12 FLASH_ACR_LATENCY_12WS /*!< FLASH twelve wait states */
  266. #define LL_FLASH_LATENCY_13 FLASH_ACR_LATENCY_13WS /*!< FLASH thirteen wait states */
  267. #define LL_FLASH_LATENCY_14 FLASH_ACR_LATENCY_14WS /*!< FLASH fourteen wait states */
  268. #define LL_FLASH_LATENCY_15 FLASH_ACR_LATENCY_15WS /*!< FLASH fifteen wait states */
  269. /**
  270. * @}
  271. */
  272. /**
  273. * @}
  274. */
  275. /* Exported macro ------------------------------------------------------------*/
  276. /* Exported functions --------------------------------------------------------*/
  277. /** @defgroup SYSTEM_LL_Exported_Functions SYSTEM Exported Functions
  278. * @{
  279. */
  280. /** @defgroup SYSTEM_LL_EF_SYSCFG SYSCFG
  281. * @{
  282. */
  283. /**
  284. * @brief Enable I/O analog switches supplied by VDD.
  285. * @rmtoll SYSCFG_CFGR1 ANASWVDD LL_SYSCFG_EnableAnalogSwitchVdd
  286. * @retval None
  287. */
  288. __STATIC_INLINE void LL_SYSCFG_EnableAnalogSwitchVdd(void)
  289. {
  290. SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_ANASWVDD);
  291. }
  292. /**
  293. * @brief Disable I/O analog switches supplied by VDD.
  294. * @note I/O analog switches are supplied by VDDA or booster
  295. * when booster in on.
  296. * Dedicated voltage booster (supplied by VDD) is the recommended
  297. * configuration with low VDDA voltage operation.
  298. * @rmtoll SYSCFG_CFGR1 ANASWVDD LL_SYSCFG_DisableAnalogSwitchVdd
  299. * @retval None
  300. */
  301. __STATIC_INLINE void LL_SYSCFG_DisableAnalogSwitchVdd(void)
  302. {
  303. CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_ANASWVDD);
  304. }
  305. /**
  306. * @brief Enable I/O analog switch voltage booster.
  307. * @note When voltage booster is enabled, I/O analog switches are supplied
  308. * by a dedicated voltage booster, from VDD power domain. This is
  309. * the recommended configuration with low VDDA voltage operation.
  310. * @note The I/O analog switch voltage booster is relevant for peripherals
  311. * using I/O in analog input: ADC, COMP, OPAMP.
  312. * However, COMP and OPAMP inputs have a high impedance and
  313. * voltage booster do not impact performance significantly.
  314. * Therefore, the voltage booster is mainly intended for
  315. * usage with ADC.
  316. * @rmtoll SYSCFG_CFGR1 BOOSTEN LL_SYSCFG_EnableAnalogBooster
  317. * @retval None
  318. */
  319. __STATIC_INLINE void LL_SYSCFG_EnableAnalogBooster(void)
  320. {
  321. SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_BOOSTEN);
  322. }
  323. /**
  324. * @brief Disable I/O analog switch voltage booster.
  325. * @note When voltage booster is enabled, I/O analog switches are supplied
  326. * by a dedicated voltage booster, from VDD power domain. This is
  327. * the recommended configuration with low VDDA voltage operation.
  328. * @note The I/O analog switch voltage booster is relevant for peripherals
  329. * using I/O in analog input: ADC, COMP, OPAMP.
  330. * However, COMP and OPAMP inputs have a high impedance and
  331. * voltage booster do not impact performance significantly.
  332. * Therefore, the voltage booster is mainly intended for
  333. * usage with ADC.
  334. * @rmtoll SYSCFG_CFGR1 BOOSTEN LL_SYSCFG_DisableAnalogBooster
  335. * @retval None
  336. */
  337. __STATIC_INLINE void LL_SYSCFG_DisableAnalogBooster(void)
  338. {
  339. CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_BOOSTEN);
  340. }
  341. /**
  342. * @brief Enable the I2C fast mode plus driving capability.
  343. * @rmtoll SYSCFG_CFGR1 I2C_PBx_FMP LL_SYSCFG_EnableFastModePlus\n
  344. * SYSCFG_CFGR1 I2Cx_FMP LL_SYSCFG_EnableFastModePlus
  345. * @param ConfigFastModePlus This parameter can be a combination of the following values:
  346. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6
  347. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7
  348. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8
  349. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9
  350. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1
  351. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2
  352. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3
  353. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C4
  354. * @retval None
  355. */
  356. __STATIC_INLINE void LL_SYSCFG_EnableFastModePlus(uint32_t ConfigFastModePlus)
  357. {
  358. SET_BIT(SYSCFG->CFGR1, ConfigFastModePlus);
  359. }
  360. /**
  361. * @brief Disable the I2C fast mode plus driving capability.
  362. * @rmtoll SYSCFG_CFGR1 I2C_PBx_FMP LL_SYSCFG_DisableFastModePlus\n
  363. * SYSCFG_CFGR1 I2Cx_FMP LL_SYSCFG_DisableFastModePlus
  364. * @param ConfigFastModePlus This parameter can be a combination of the following values:
  365. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6
  366. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7
  367. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8
  368. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9
  369. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1
  370. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2
  371. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3
  372. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C4
  373. * @retval None
  374. */
  375. __STATIC_INLINE void LL_SYSCFG_DisableFastModePlus(uint32_t ConfigFastModePlus)
  376. {
  377. CLEAR_BIT(SYSCFG->CFGR1, ConfigFastModePlus);
  378. }
  379. /**
  380. * @brief Enable Floating Point Unit Invalid operation Interrupt
  381. * @rmtoll SYSCFG_FPUIMR FPU_IE_0 LL_SYSCFG_EnableIT_FPU_IOC
  382. * @retval None
  383. */
  384. __STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_IOC(void)
  385. {
  386. SET_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_0);
  387. }
  388. /**
  389. * @brief Enable Floating Point Unit Divide-by-zero Interrupt
  390. * @rmtoll SYSCFG_FPUIMR FPU_IE_1 LL_SYSCFG_EnableIT_FPU_DZC
  391. * @retval None
  392. */
  393. __STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_DZC(void)
  394. {
  395. SET_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_1);
  396. }
  397. /**
  398. * @brief Enable Floating Point Unit Underflow Interrupt
  399. * @rmtoll SYSCFG_FPUIMR FPU_IE_2 LL_SYSCFG_EnableIT_FPU_UFC
  400. * @retval None
  401. */
  402. __STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_UFC(void)
  403. {
  404. SET_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_2);
  405. }
  406. /**
  407. * @brief Enable Floating Point Unit Overflow Interrupt
  408. * @rmtoll SYSCFG_FPUIMR FPU_IE_3 LL_SYSCFG_EnableIT_FPU_OFC
  409. * @retval None
  410. */
  411. __STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_OFC(void)
  412. {
  413. SET_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_3);
  414. }
  415. /**
  416. * @brief Enable Floating Point Unit Input denormal Interrupt
  417. * @rmtoll SYSCFG_FPUIMR FPU_IE_4 LL_SYSCFG_EnableIT_FPU_IDC
  418. * @retval None
  419. */
  420. __STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_IDC(void)
  421. {
  422. SET_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_4);
  423. }
  424. /**
  425. * @brief Enable Floating Point Unit Inexact Interrupt
  426. * @rmtoll SYSCFG_FPUIMR FPU_IE_5 LL_SYSCFG_EnableIT_FPU_IXC
  427. * @retval None
  428. */
  429. __STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_IXC(void)
  430. {
  431. SET_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_5);
  432. }
  433. /**
  434. * @brief Disable Floating Point Unit Invalid operation Interrupt
  435. * @rmtoll SYSCFG_FPUIMR FPU_IE_0 LL_SYSCFG_DisableIT_FPU_IOC
  436. * @retval None
  437. */
  438. __STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_IOC(void)
  439. {
  440. CLEAR_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_0);
  441. }
  442. /**
  443. * @brief Disable Floating Point Unit Divide-by-zero Interrupt
  444. * @rmtoll SYSCFG_FPUIMR FPU_IE_1 LL_SYSCFG_DisableIT_FPU_DZC
  445. * @retval None
  446. */
  447. __STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_DZC(void)
  448. {
  449. CLEAR_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_1);
  450. }
  451. /**
  452. * @brief Disable Floating Point Unit Underflow Interrupt
  453. * @rmtoll SYSCFG_FPUIMR FPU_IE_2 LL_SYSCFG_DisableIT_FPU_UFC
  454. * @retval None
  455. */
  456. __STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_UFC(void)
  457. {
  458. CLEAR_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_2);
  459. }
  460. /**
  461. * @brief Disable Floating Point Unit Overflow Interrupt
  462. * @rmtoll SYSCFG_FPUIMR FPU_IE_3 LL_SYSCFG_DisableIT_FPU_OFC
  463. * @retval None
  464. */
  465. __STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_OFC(void)
  466. {
  467. CLEAR_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_3);
  468. }
  469. /**
  470. * @brief Disable Floating Point Unit Input denormal Interrupt
  471. * @rmtoll SYSCFG_FPUIMR FPU_IE_4 LL_SYSCFG_DisableIT_FPU_IDC
  472. * @retval None
  473. */
  474. __STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_IDC(void)
  475. {
  476. CLEAR_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_4);
  477. }
  478. /**
  479. * @brief Disable Floating Point Unit Inexact Interrupt
  480. * @rmtoll SYSCFG_FPUIMR FPU_IE_5 LL_SYSCFG_DisableIT_FPU_IXC
  481. * @retval None
  482. */
  483. __STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_IXC(void)
  484. {
  485. CLEAR_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_5);
  486. }
  487. /**
  488. * @brief Check if Floating Point Unit Invalid operation Interrupt source is enabled or disabled.
  489. * @rmtoll SYSCFG_FPUIMR FPU_IE_0 LL_SYSCFG_IsEnabledIT_FPU_IOC
  490. * @retval State of bit (1 or 0).
  491. */
  492. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_IOC(void)
  493. {
  494. return ((READ_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_0) == SYSCFG_FPUIMR_FPU_IE_0) ? 1UL : 0UL);
  495. }
  496. /**
  497. * @brief Check if Floating Point Unit Divide-by-zero Interrupt source is enabled or disabled.
  498. * @rmtoll SYSCFG_FPUIMR FPU_IE_1 LL_SYSCFG_IsEnabledIT_FPU_DZC
  499. * @retval State of bit (1 or 0).
  500. */
  501. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_DZC(void)
  502. {
  503. return ((READ_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_1) == SYSCFG_FPUIMR_FPU_IE_1) ? 1UL : 0UL);
  504. }
  505. /**
  506. * @brief Check if Floating Point Unit Underflow Interrupt source is enabled or disabled.
  507. * @rmtoll SYSCFG_FPUIMR FPU_IE_2 LL_SYSCFG_IsEnabledIT_FPU_UFC
  508. * @retval State of bit (1 or 0).
  509. */
  510. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_UFC(void)
  511. {
  512. return ((READ_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_2) == SYSCFG_FPUIMR_FPU_IE_2) ? 1UL : 0UL);
  513. }
  514. /**
  515. * @brief Check if Floating Point Unit Overflow Interrupt source is enabled or disabled.
  516. * @rmtoll SYSCFG_FPUIMR FPU_IE_3 LL_SYSCFG_IsEnabledIT_FPU_OFC
  517. * @retval State of bit (1 or 0).
  518. */
  519. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_OFC(void)
  520. {
  521. return ((READ_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_3) == SYSCFG_FPUIMR_FPU_IE_3) ? 1UL : 0UL);
  522. }
  523. /**
  524. * @brief Check if Floating Point Unit Input denormal Interrupt source is enabled or disabled.
  525. * @rmtoll SYSCFG_FPUIMR FPU_IE_4 LL_SYSCFG_IsEnabledIT_FPU_IDC
  526. * @retval State of bit (1 or 0).
  527. */
  528. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_IDC(void)
  529. {
  530. return ((READ_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_4) == SYSCFG_FPUIMR_FPU_IE_4) ? 1UL : 0UL);
  531. }
  532. /**
  533. * @brief Check if Floating Point Unit Inexact Interrupt source is enabled or disabled.
  534. * @rmtoll SYSCFG_FPUIMR FPU_IE_5 LL_SYSCFG_IsEnabledIT_FPU_IXC
  535. * @retval State of bit (1 or 0).
  536. */
  537. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_IXC(void)
  538. {
  539. return ((READ_BIT(SYSCFG->FPUIMR, SYSCFG_FPUIMR_FPU_IE_5) == SYSCFG_FPUIMR_FPU_IE_5) ? 1UL : 0UL);
  540. }
  541. /**
  542. * @brief Enable SRAM2 Erase (starts a hardware SRAM2 erase operation. This bit is
  543. * automatically cleared at the end of the SRAM2 erase operation.)
  544. * @note This bit is write-protected: setting this bit is possible only after the
  545. * correct key sequence is written in the SYSCFG_SKR register as described in
  546. * the Reference Manual.
  547. * @rmtoll SYSCFG_SCSR SRAM2ER LL_SYSCFG_EnableSRAM2Erase
  548. * @retval None
  549. */
  550. __STATIC_INLINE void LL_SYSCFG_EnableSRAM2Erase(void)
  551. {
  552. /* Starts a hardware SRAM2 erase operation*/
  553. SET_BIT(SYSCFG->SCSR, SYSCFG_SCSR_SRAM2ER);
  554. }
  555. /**
  556. * @brief Check if SRAM2 erase operation is on going
  557. * @rmtoll SYSCFG_SCSR SRAM2BSY LL_SYSCFG_IsSRAM2EraseOngoing
  558. * @retval State of bit (1 or 0).
  559. */
  560. __STATIC_INLINE uint32_t LL_SYSCFG_IsSRAM2EraseOngoing(void)
  561. {
  562. return ((READ_BIT(SYSCFG->SCSR, SYSCFG_SCSR_SRAM2BSY) == SYSCFG_SCSR_SRAM2BSY) ? 1UL : 0UL);
  563. }
  564. /**
  565. * @brief Set connections to TIM1/8/15/16/17 Break inputs
  566. * @rmtoll SYSCFG_CFGR2 CLL LL_SYSCFG_SetTIMBreakInputs\n
  567. * SYSCFG_CFGR2 SPL LL_SYSCFG_SetTIMBreakInputs\n
  568. * SYSCFG_CFGR2 PVDL LL_SYSCFG_SetTIMBreakInputs\n
  569. * SYSCFG_CFGR2 ECCL LL_SYSCFG_SetTIMBreakInputs
  570. * @param Break This parameter can be a combination of the following values:
  571. * @arg @ref LL_SYSCFG_TIMBREAK_ECC
  572. * @arg @ref LL_SYSCFG_TIMBREAK_PVD
  573. * @arg @ref LL_SYSCFG_TIMBREAK_SRAM2_PARITY
  574. * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP
  575. * @retval None
  576. */
  577. __STATIC_INLINE void LL_SYSCFG_SetTIMBreakInputs(uint32_t Break)
  578. {
  579. MODIFY_REG(SYSCFG->CFGR2, SYSCFG_CFGR2_CLL | SYSCFG_CFGR2_SPL | SYSCFG_CFGR2_PVDL | SYSCFG_CFGR2_ECCL, Break);
  580. }
  581. /**
  582. * @brief Get connections to TIM1/8/15/16/17 Break inputs
  583. * @rmtoll SYSCFG_CFGR2 CLL LL_SYSCFG_GetTIMBreakInputs\n
  584. * SYSCFG_CFGR2 SPL LL_SYSCFG_GetTIMBreakInputs\n
  585. * SYSCFG_CFGR2 PVDL LL_SYSCFG_GetTIMBreakInputs\n
  586. * SYSCFG_CFGR2 ECCL LL_SYSCFG_GetTIMBreakInputs
  587. * @retval Returned value can be can be a combination of the following values:
  588. * @arg @ref LL_SYSCFG_TIMBREAK_ECC
  589. * @arg @ref LL_SYSCFG_TIMBREAK_PVD
  590. * @arg @ref LL_SYSCFG_TIMBREAK_SRAM2_PARITY
  591. * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP
  592. */
  593. __STATIC_INLINE uint32_t LL_SYSCFG_GetTIMBreakInputs(void)
  594. {
  595. return (uint32_t)(READ_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_CLL | SYSCFG_CFGR2_SPL | SYSCFG_CFGR2_PVDL | SYSCFG_CFGR2_ECCL));
  596. }
  597. /**
  598. * @brief Check if SRAM2 parity error detected
  599. * @rmtoll SYSCFG_CFGR2 SPF LL_SYSCFG_IsActiveFlag_SP
  600. * @retval State of bit (1 or 0).
  601. */
  602. __STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_SP(void)
  603. {
  604. return ((READ_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_SPF) == SYSCFG_CFGR2_SPF) ? 1UL : 0UL);
  605. }
  606. /**
  607. * @brief Clear SRAM2 parity error flag
  608. * @rmtoll SYSCFG_CFGR2 SPF LL_SYSCFG_ClearFlag_SP
  609. * @retval None
  610. */
  611. __STATIC_INLINE void LL_SYSCFG_ClearFlag_SP(void)
  612. {
  613. SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_SPF);
  614. }
  615. /**
  616. * @brief Enable SRAM2 page write protection
  617. * @note Write protection is cleared only by a system reset
  618. * @rmtoll SYSCFG_SWPR PxWP LL_SYSCFG_EnableSRAM2PageWRP_0_31
  619. * @param SRAM2WRP This parameter can be a combination of the following values:
  620. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE0
  621. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE1
  622. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE2
  623. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE3
  624. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE4
  625. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE5
  626. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE6
  627. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE7
  628. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE8
  629. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE9
  630. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE10
  631. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE11
  632. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE12
  633. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE13
  634. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE14
  635. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE15
  636. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE16
  637. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE17
  638. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE18
  639. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE19
  640. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE20
  641. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE21
  642. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE22
  643. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE23
  644. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE24
  645. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE25
  646. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE26
  647. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE27
  648. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE28
  649. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE29
  650. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE30
  651. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE31
  652. * @retval None
  653. */
  654. __STATIC_INLINE void LL_SYSCFG_EnableSRAM2PageWRP_0_31(uint32_t SRAM2WRP)
  655. {
  656. SET_BIT(SYSCFG->SWPR, SRAM2WRP);
  657. }
  658. /**
  659. * @brief Enable SRAM2 page write protection for Pages in range 32 to 63
  660. * @note Write protection is cleared only by a system reset
  661. * @rmtoll SYSCFG_SWPR2 PxWP LL_SYSCFG_EnableSRAM2PageWRP_32_63
  662. * @param SRAM2WRP This parameter can be a combination of the following values:
  663. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE32
  664. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE33
  665. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE34
  666. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE35
  667. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE36
  668. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE37
  669. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE38
  670. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE39
  671. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE40
  672. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE41
  673. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE42
  674. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE43
  675. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE44
  676. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE45
  677. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE46
  678. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE47
  679. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE48
  680. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE49
  681. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE50
  682. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE51
  683. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE52
  684. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE53
  685. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE54
  686. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE55
  687. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE56
  688. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE57
  689. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE58
  690. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE59
  691. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE60
  692. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE61
  693. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE62
  694. * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE63
  695. * @retval None
  696. */
  697. __STATIC_INLINE void LL_SYSCFG_EnableSRAM2PageWRP_32_63(uint32_t SRAM2WRP)
  698. {
  699. SET_BIT(SYSCFG->SWPR2, SRAM2WRP);
  700. }
  701. /**
  702. * @brief SRAM2 page write protection lock prior to erase
  703. * @rmtoll SYSCFG_SKR KEY LL_SYSCFG_LockSRAM2WRP
  704. * @retval None
  705. */
  706. __STATIC_INLINE void LL_SYSCFG_LockSRAM2WRP(void)
  707. {
  708. /* Writing a wrong key reactivates the write protection */
  709. WRITE_REG(SYSCFG->SKR, 0x00);
  710. }
  711. /**
  712. * @brief SRAM2 page write protection unlock prior to erase
  713. * @rmtoll SYSCFG_SKR KEY LL_SYSCFG_UnlockSRAM2WRP
  714. * @retval None
  715. */
  716. __STATIC_INLINE void LL_SYSCFG_UnlockSRAM2WRP(void)
  717. {
  718. /* unlock the write protection of the SRAM2ER bit */
  719. WRITE_REG(SYSCFG->SKR, 0xCA);
  720. WRITE_REG(SYSCFG->SKR, 0x53);
  721. }
  722. /** @defgroup SYSTEM_LL_EF_SYSCFG_Secure_Management Secure Management
  723. * @{
  724. */
  725. #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
  726. /**
  727. * @brief Configure Secure mode
  728. * @note Only available from secure state when system implements security (TZEN=1)
  729. * @rmtoll SYSCFG_SECCFGR SYSCFGSEC LL_SYSCFG_ConfigSecure\n
  730. * SYSCFG_SECCFGR CLASSBSEC LL_SYSCFG_ConfigSecure\n
  731. * SYSCFG_SECCFGR SRAM2SEC LL_SYSCFG_ConfigSecure\n
  732. * SYSCFG_SECCFGR FPUSEC LL_SYSCFG_ConfigSecure
  733. * @param Configuration This parameter shall be the full combination
  734. * of the following values:
  735. * @arg @ref LL_SYSCFG_CLOCK_SEC or @arg @ref LL_SYSCFG_CLOCK_NSEC
  736. * @arg @ref LL_SYSCFG_CLASSB_SEC or @arg @ref LL_SYSCFG_CLASSB_NSEC
  737. * @arg @ref LL_SYSCFG_SRAM2_SEC or @arg @ref LL_SYSCFG_SRAM2_NSEC
  738. * @arg @ref LL_SYSCFG_FPU_SEC or @arg @ref LL_SYSCFG_FPU_NSEC
  739. * @retval None
  740. */
  741. __STATIC_INLINE void LL_SYSCFG_ConfigSecure(uint32_t Configuration)
  742. {
  743. WRITE_REG(SYSCFG->SECCFGR, Configuration);
  744. }
  745. #endif /* __ARM_FEATURE_CMSE && (__ARM_FEATURE_CMSE == 3U) */
  746. /**
  747. * @brief Get Secure mode configuration
  748. * @note Only available when system implements security (TZEN=1)
  749. * @rmtoll SYSCFG_SECCFGR SYSCFGSEC LL_SYSCFG_ConfigSecure\n
  750. * SYSCFG_SECCFGR CLASSBSEC LL_SYSCFG_ConfigSecure\n
  751. * SYSCFG_SECCFGR SRAM2SEC LL_SYSCFG_ConfigSecure\n
  752. * SYSCFG_SECCFGR FPUSEC LL_SYSCFG_ConfigSecure
  753. * @retval Returned value is the combination of the following values:
  754. * @arg @ref LL_SYSCFG_CLOCK_SEC or @arg @ref LL_SYSCFG_CLOCK_NSEC
  755. * @arg @ref LL_SYSCFG_CLASSB_SEC or @arg @ref LL_SYSCFG_CLASSB_NSEC
  756. * @arg @ref LL_SYSCFG_SRAM2_SEC or @arg @ref LL_SYSCFG_SRAM2_NSEC
  757. * @arg @ref LL_SYSCFG_FPU_SEC or @arg @ref LL_SYSCFG_FPU_NSEC
  758. */
  759. __STATIC_INLINE uint32_t LL_SYSCFG_GetConfigSecure(void)
  760. {
  761. return (uint32_t)(READ_BIT(SYSCFG->SECCFGR, 0xFU));
  762. }
  763. /**
  764. * @}
  765. */
  766. /**
  767. * @}
  768. */
  769. /** @defgroup SYSTEM_LL_EF_DBGMCU DBGMCU
  770. * @{
  771. */
  772. /**
  773. * @brief Return the device identifier
  774. * @rmtoll DBGMCU_IDCODE DEV_ID LL_DBGMCU_GetDeviceID
  775. * @retval Values between Min_Data=0x00 and Max_Data=0xFFFF (ex: device ID is 0x6415)
  776. */
  777. __STATIC_INLINE uint32_t LL_DBGMCU_GetDeviceID(void)
  778. {
  779. return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_DEV_ID));
  780. }
  781. /**
  782. * @brief Return the device revision identifier
  783. * @note This field indicates the revision of the device.
  784. * @rmtoll DBGMCU_IDCODE REV_ID LL_DBGMCU_GetRevisionID
  785. * @retval Values between Min_Data=0x00 and Max_Data=0xFFFF
  786. */
  787. __STATIC_INLINE uint32_t LL_DBGMCU_GetRevisionID(void)
  788. {
  789. return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_REV_ID) >> DBGMCU_IDCODE_REV_ID_Pos);
  790. }
  791. /**
  792. * @brief Enable the Debug Module during STOP mode
  793. * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_EnableDBGStopMode
  794. * @retval None
  795. */
  796. __STATIC_INLINE void LL_DBGMCU_EnableDBGStopMode(void)
  797. {
  798. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
  799. }
  800. /**
  801. * @brief Disable the Debug Module during STOP mode
  802. * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_DisableDBGStopMode
  803. * @retval None
  804. */
  805. __STATIC_INLINE void LL_DBGMCU_DisableDBGStopMode(void)
  806. {
  807. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
  808. }
  809. /**
  810. * @brief Enable the Debug Module during STANDBY mode
  811. * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_EnableDBGStandbyMode
  812. * @retval None
  813. */
  814. __STATIC_INLINE void LL_DBGMCU_EnableDBGStandbyMode(void)
  815. {
  816. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);
  817. }
  818. /**
  819. * @brief Disable the Debug Module during STANDBY mode
  820. * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_DisableDBGStandbyMode
  821. * @retval None
  822. */
  823. __STATIC_INLINE void LL_DBGMCU_DisableDBGStandbyMode(void)
  824. {
  825. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);
  826. }
  827. /**
  828. * @brief Enable the clock for Trace port
  829. * @rmtoll DBGMCU_CR TRACE_EN LL_DBGMCU_EnableTraceClock
  830. * @retval None
  831. */
  832. __STATIC_INLINE void LL_DBGMCU_EnableTraceClock(void)
  833. {
  834. SET_BIT(DBGMCU->CR, DBGMCU_CR_TRACE_EN);
  835. }
  836. /**
  837. * @brief Disable the clock for Trace port
  838. * @rmtoll DBGMCU_CR TRACE_EN LL_DBGMCU_DisableTraceClock
  839. * @retval None
  840. */
  841. __STATIC_INLINE void LL_DBGMCU_DisableTraceClock(void)
  842. {
  843. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_TRACE_EN);
  844. }
  845. /**
  846. * @brief Indicate if the clock for Trace port is enabled
  847. * @rmtoll DBGMCU_CR TRACE_EN LL_DBGMCU_IsEnabledTraceClock
  848. * @retval State of bit (1 or 0).
  849. */
  850. __STATIC_INLINE uint32_t LL_DBGMCU_IsEnabledTraceClock(void)
  851. {
  852. return ((READ_BIT(DBGMCU->CR, DBGMCU_CR_TRACE_EN) == (DBGMCU_CR_TRACE_EN)) ? 1UL : 0UL);
  853. }
  854. /**
  855. * @brief Set Trace pin assignment control
  856. * @rmtoll DBGMCU_CR TRACE_IOEN LL_DBGMCU_SetTracePinAssignment\n
  857. * DBGMCU_CR TRACE_MODE LL_DBGMCU_SetTracePinAssignment
  858. * @param PinAssignment This parameter can be one of the following values:
  859. * @arg @ref LL_DBGMCU_TRACE_NONE
  860. * @arg @ref LL_DBGMCU_TRACE_ASYNCH
  861. * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE1
  862. * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE2
  863. * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE4
  864. * @retval None
  865. */
  866. __STATIC_INLINE void LL_DBGMCU_SetTracePinAssignment(uint32_t PinAssignment)
  867. {
  868. MODIFY_REG(DBGMCU->CR, DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE, PinAssignment);
  869. }
  870. /**
  871. * @brief Get Trace pin assignment control
  872. * @rmtoll DBGMCU_CR TRACE_IOEN LL_DBGMCU_GetTracePinAssignment\n
  873. * DBGMCU_CR TRACE_MODE LL_DBGMCU_GetTracePinAssignment
  874. * @retval Returned value can be one of the following values:
  875. * @arg @ref LL_DBGMCU_TRACE_NONE
  876. * @arg @ref LL_DBGMCU_TRACE_ASYNCH
  877. * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE1
  878. * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE2
  879. * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE4
  880. */
  881. __STATIC_INLINE uint32_t LL_DBGMCU_GetTracePinAssignment(void)
  882. {
  883. return (uint32_t)(READ_BIT(DBGMCU->CR, DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE));
  884. }
  885. /**
  886. * @brief Freeze APB1 peripherals (group1 peripherals)
  887. * @rmtoll DBGMCU_APB1FZR1 DBG_xxxx_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph
  888. * @param Periphs This parameter can be a combination of the following values:
  889. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP
  890. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP
  891. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP
  892. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP
  893. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP
  894. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP
  895. * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP
  896. * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP
  897. * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP
  898. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP
  899. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP
  900. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP
  901. * @arg @ref LL_DBGMCU_APB1_GRP1_FDCAN1_STOP
  902. * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP
  903. * @retval None
  904. */
  905. __STATIC_INLINE void LL_DBGMCU_APB1_GRP1_FreezePeriph(uint32_t Periphs)
  906. {
  907. SET_BIT(DBGMCU->APB1FZR1, Periphs);
  908. }
  909. /**
  910. * @brief Freeze APB1 peripherals (group2 peripherals)
  911. * @rmtoll DBGMCU_APB1FZR2 DBG_xxxx_STOP LL_DBGMCU_APB1_GRP2_FreezePeriph
  912. * @param Periphs This parameter can be a combination of the following values:
  913. * @arg @ref LL_DBGMCU_APB1_GRP2_I2C4_STOP
  914. * @arg @ref LL_DBGMCU_APB1_GRP2_LPTIM2_STOP
  915. * @arg @ref LL_DBGMCU_APB1_GRP2_LPTIM3_STOP
  916. * @retval None
  917. */
  918. __STATIC_INLINE void LL_DBGMCU_APB1_GRP2_FreezePeriph(uint32_t Periphs)
  919. {
  920. SET_BIT(DBGMCU->APB1FZR2, Periphs);
  921. }
  922. /**
  923. * @brief Unfreeze APB1 peripherals (group1 peripherals)
  924. * @rmtoll DBGMCU_APB1FZR1 DBG_xxxx_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph
  925. * @param Periphs This parameter can be a combination of the following values:
  926. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP
  927. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP
  928. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP
  929. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP
  930. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP
  931. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP
  932. * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP
  933. * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP
  934. * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP
  935. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP
  936. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP
  937. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP
  938. * @arg @ref LL_DBGMCU_APB1_GRP1_FDCAN1_STOP
  939. * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP
  940. * @retval None
  941. */
  942. __STATIC_INLINE void LL_DBGMCU_APB1_GRP1_UnFreezePeriph(uint32_t Periphs)
  943. {
  944. CLEAR_BIT(DBGMCU->APB1FZR1, Periphs);
  945. }
  946. /**
  947. * @brief Unfreeze APB1 peripherals (group2 peripherals)
  948. * @rmtoll DBGMCU_APB1FZR2 DBG_xxxx_STOP LL_DBGMCU_APB1_GRP2_UnFreezePeriph
  949. * @param Periphs This parameter can be a combination of the following values:
  950. * @arg @ref LL_DBGMCU_APB1_GRP2_I2C4_STOP
  951. * @arg @ref LL_DBGMCU_APB1_GRP2_LPTIM2_STOP
  952. * @arg @ref LL_DBGMCU_APB1_GRP2_LPTIM3_STOP
  953. * @retval None
  954. */
  955. __STATIC_INLINE void LL_DBGMCU_APB1_GRP2_UnFreezePeriph(uint32_t Periphs)
  956. {
  957. CLEAR_BIT(DBGMCU->APB1FZR2, Periphs);
  958. }
  959. /**
  960. * @brief Freeze APB2 peripherals
  961. * @rmtoll DBGMCU_APB2FZR DBG_TIMx_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph
  962. * @param Periphs This parameter can be a combination of the following values:
  963. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP
  964. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP
  965. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM15_STOP
  966. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM16_STOP
  967. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM17_STOP
  968. * @retval None
  969. */
  970. __STATIC_INLINE void LL_DBGMCU_APB2_GRP1_FreezePeriph(uint32_t Periphs)
  971. {
  972. SET_BIT(DBGMCU->APB2FZR, Periphs);
  973. }
  974. /**
  975. * @brief Unfreeze APB2 peripherals
  976. * @rmtoll DBGMCU_APB2FZR DBG_TIMx_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph
  977. * @param Periphs This parameter can be a combination of the following values:
  978. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP
  979. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP
  980. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM15_STOP
  981. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM16_STOP
  982. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM17_STOP
  983. * @retval None
  984. */
  985. __STATIC_INLINE void LL_DBGMCU_APB2_GRP1_UnFreezePeriph(uint32_t Periphs)
  986. {
  987. CLEAR_BIT(DBGMCU->APB2FZR, Periphs);
  988. }
  989. /**
  990. * @}
  991. */
  992. #if defined(VREFBUF)
  993. /** @defgroup SYSTEM_LL_EF_VREFBUF VREFBUF
  994. * @{
  995. */
  996. /**
  997. * @brief Enable Internal voltage reference
  998. * @rmtoll VREFBUF_CSR ENVR LL_VREFBUF_Enable
  999. * @retval None
  1000. */
  1001. __STATIC_INLINE void LL_VREFBUF_Enable(void)
  1002. {
  1003. SET_BIT(VREFBUF->CSR, VREFBUF_CSR_ENVR);
  1004. }
  1005. /**
  1006. * @brief Disable Internal voltage reference
  1007. * @rmtoll VREFBUF_CSR ENVR LL_VREFBUF_Disable
  1008. * @retval None
  1009. */
  1010. __STATIC_INLINE void LL_VREFBUF_Disable(void)
  1011. {
  1012. CLEAR_BIT(VREFBUF->CSR, VREFBUF_CSR_ENVR);
  1013. }
  1014. /**
  1015. * @brief Enable high impedance (VREF+pin is high impedance)
  1016. * @rmtoll VREFBUF_CSR HIZ LL_VREFBUF_EnableHIZ
  1017. * @retval None
  1018. */
  1019. __STATIC_INLINE void LL_VREFBUF_EnableHIZ(void)
  1020. {
  1021. SET_BIT(VREFBUF->CSR, VREFBUF_CSR_HIZ);
  1022. }
  1023. /**
  1024. * @brief Disable high impedance (VREF+pin is internally connected to the voltage reference buffer output)
  1025. * @rmtoll VREFBUF_CSR HIZ LL_VREFBUF_DisableHIZ
  1026. * @retval None
  1027. */
  1028. __STATIC_INLINE void LL_VREFBUF_DisableHIZ(void)
  1029. {
  1030. CLEAR_BIT(VREFBUF->CSR, VREFBUF_CSR_HIZ);
  1031. }
  1032. /**
  1033. * @brief Set the Voltage reference scale
  1034. * @rmtoll VREFBUF_CSR VRS LL_VREFBUF_SetVoltageScaling
  1035. * @param Scale This parameter can be one of the following values:
  1036. * @arg @ref LL_VREFBUF_VOLTAGE_SCALE0
  1037. * @arg @ref LL_VREFBUF_VOLTAGE_SCALE1
  1038. * @retval None
  1039. */
  1040. __STATIC_INLINE void LL_VREFBUF_SetVoltageScaling(uint32_t Scale)
  1041. {
  1042. MODIFY_REG(VREFBUF->CSR, VREFBUF_CSR_VRS, Scale);
  1043. }
  1044. /**
  1045. * @brief Get the Voltage reference scale
  1046. * @rmtoll VREFBUF_CSR VRS LL_VREFBUF_GetVoltageScaling
  1047. * @retval Returned value can be one of the following values:
  1048. * @arg @ref LL_VREFBUF_VOLTAGE_SCALE0
  1049. * @arg @ref LL_VREFBUF_VOLTAGE_SCALE1
  1050. */
  1051. __STATIC_INLINE uint32_t LL_VREFBUF_GetVoltageScaling(void)
  1052. {
  1053. return (uint32_t)(READ_BIT(VREFBUF->CSR, VREFBUF_CSR_VRS));
  1054. }
  1055. /**
  1056. * @brief Get the VREFBUF trimming value for VRS=0 (VREF_SC0)
  1057. * @retval Between 0 and 0x3F
  1058. */
  1059. __STATIC_INLINE uint32_t LL_VREFBUF_SC0_GetCalibration(void)
  1060. {
  1061. return (uint32_t)(*VREFBUF_SC0_CAL_ADDR);
  1062. }
  1063. /**
  1064. * @brief Get the VREFBUF trimming value for VRS=1 (VREF_SC1)
  1065. * @retval Between 0 and 0x3F
  1066. */
  1067. __STATIC_INLINE uint32_t LL_VREFBUF_SC1_GetCalibration(void)
  1068. {
  1069. return (uint32_t)(*VREFBUF_SC1_CAL_ADDR);
  1070. }
  1071. /**
  1072. * @brief Check if Voltage reference buffer is ready
  1073. * @rmtoll VREFBUF_CSR VRR LL_VREFBUF_IsVREFReady
  1074. * @retval State of bit (1 or 0).
  1075. */
  1076. __STATIC_INLINE uint32_t LL_VREFBUF_IsVREFReady(void)
  1077. {
  1078. return ((READ_BIT(VREFBUF->CSR, VREFBUF_CSR_VRR) == VREFBUF_CSR_VRR) ? 1UL : 0UL);
  1079. }
  1080. /**
  1081. * @brief Get the trimming code for VREFBUF calibration
  1082. * @rmtoll VREFBUF_CCR TRIM LL_VREFBUF_GetTrimming
  1083. * @retval Between 0 and 0x3F
  1084. */
  1085. __STATIC_INLINE uint32_t LL_VREFBUF_GetTrimming(void)
  1086. {
  1087. return (uint32_t)(READ_BIT(VREFBUF->CCR, VREFBUF_CCR_TRIM));
  1088. }
  1089. /**
  1090. * @brief Set the trimming code for VREFBUF calibration (Tune the internal reference buffer voltage)
  1091. * @rmtoll VREFBUF_CCR TRIM LL_VREFBUF_SetTrimming
  1092. * @param Value Between 0 and 0x3F
  1093. * @retval None
  1094. */
  1095. __STATIC_INLINE void LL_VREFBUF_SetTrimming(uint32_t Value)
  1096. {
  1097. WRITE_REG(VREFBUF->CCR, Value);
  1098. }
  1099. /**
  1100. * @}
  1101. */
  1102. #endif /* VREFBUF */
  1103. /** @defgroup SYSTEM_LL_EF_FLASH FLASH
  1104. * @{
  1105. */
  1106. /**
  1107. * @brief Set FLASH Latency
  1108. * @rmtoll FLASH_ACR LATENCY LL_FLASH_SetLatency
  1109. * @param Latency This parameter can be one of the following values:
  1110. * @arg @ref LL_FLASH_LATENCY_0
  1111. * @arg @ref LL_FLASH_LATENCY_1
  1112. * @arg @ref LL_FLASH_LATENCY_2
  1113. * @arg @ref LL_FLASH_LATENCY_3
  1114. * @arg @ref LL_FLASH_LATENCY_4
  1115. * @arg @ref LL_FLASH_LATENCY_5
  1116. * @arg @ref LL_FLASH_LATENCY_6
  1117. * @arg @ref LL_FLASH_LATENCY_7
  1118. * @arg @ref LL_FLASH_LATENCY_8
  1119. * @arg @ref LL_FLASH_LATENCY_9
  1120. * @arg @ref LL_FLASH_LATENCY_10
  1121. * @arg @ref LL_FLASH_LATENCY_11
  1122. * @arg @ref LL_FLASH_LATENCY_12
  1123. * @arg @ref LL_FLASH_LATENCY_13
  1124. * @arg @ref LL_FLASH_LATENCY_14
  1125. * @arg @ref LL_FLASH_LATENCY_15
  1126. * @retval None
  1127. */
  1128. __STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency)
  1129. {
  1130. MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency);
  1131. }
  1132. /**
  1133. * @brief Get FLASH Latency
  1134. * @rmtoll FLASH_ACR LATENCY LL_FLASH_GetLatency
  1135. * @retval Returned value can be one of the following values:
  1136. * @arg @ref LL_FLASH_LATENCY_0
  1137. * @arg @ref LL_FLASH_LATENCY_1
  1138. * @arg @ref LL_FLASH_LATENCY_2
  1139. * @arg @ref LL_FLASH_LATENCY_3
  1140. * @arg @ref LL_FLASH_LATENCY_4
  1141. * @arg @ref LL_FLASH_LATENCY_5
  1142. * @arg @ref LL_FLASH_LATENCY_6
  1143. * @arg @ref LL_FLASH_LATENCY_7
  1144. * @arg @ref LL_FLASH_LATENCY_8
  1145. * @arg @ref LL_FLASH_LATENCY_9
  1146. * @arg @ref LL_FLASH_LATENCY_10
  1147. * @arg @ref LL_FLASH_LATENCY_11
  1148. * @arg @ref LL_FLASH_LATENCY_12
  1149. * @arg @ref LL_FLASH_LATENCY_13
  1150. * @arg @ref LL_FLASH_LATENCY_14
  1151. * @arg @ref LL_FLASH_LATENCY_15
  1152. */
  1153. __STATIC_INLINE uint32_t LL_FLASH_GetLatency(void)
  1154. {
  1155. return (uint32_t)(READ_BIT(FLASH->ACR, FLASH_ACR_LATENCY));
  1156. }
  1157. /**
  1158. * @brief Enable Flash Power-down mode during run mode or Low-power run mode
  1159. * @note Flash memory can be put in power-down mode only when the code is executed
  1160. * from RAM
  1161. * @note Flash must not be accessed when power down is enabled
  1162. * @note Flash must not be put in power-down while a program or an erase operation
  1163. * is on-going
  1164. * @rmtoll FLASH_ACR RUN_PD LL_FLASH_EnableRunPowerDown\n
  1165. * FLASH_PDKEYR PDKEY1 LL_FLASH_EnableRunPowerDown\n
  1166. * FLASH_PDKEYR PDKEY2 LL_FLASH_EnableRunPowerDown
  1167. * @retval None
  1168. */
  1169. __STATIC_INLINE void LL_FLASH_EnableRunPowerDown(void)
  1170. {
  1171. /* Following values must be written consecutively to unlock the RUN_PD bit in
  1172. FLASH_ACR */
  1173. WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY1);
  1174. WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY2);
  1175. SET_BIT(FLASH->ACR, FLASH_ACR_RUN_PD);
  1176. }
  1177. /**
  1178. * @brief Disable Flash Power-down mode during run mode or Low-power run mode
  1179. * @rmtoll FLASH_ACR RUN_PD LL_FLASH_DisableRunPowerDown\n
  1180. * FLASH_PDKEYR PDKEY1 LL_FLASH_DisableRunPowerDown\n
  1181. * FLASH_PDKEYR PDKEY2 LL_FLASH_DisableRunPowerDown
  1182. * @retval None
  1183. */
  1184. __STATIC_INLINE void LL_FLASH_DisableRunPowerDown(void)
  1185. {
  1186. /* Following values must be written consecutively to unlock the RUN_PD bit in
  1187. FLASH_ACR */
  1188. WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY1);
  1189. WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY2);
  1190. CLEAR_BIT(FLASH->ACR, FLASH_ACR_RUN_PD);
  1191. }
  1192. /**
  1193. * @brief Enable Flash Power-down mode during Sleep or Low-power sleep mode
  1194. * @note Flash must not be put in power-down while a program or an erase operation
  1195. * is on-going
  1196. * @rmtoll FLASH_ACR SLEEP_PD LL_FLASH_EnableSleepPowerDown
  1197. * @retval None
  1198. */
  1199. __STATIC_INLINE void LL_FLASH_EnableSleepPowerDown(void)
  1200. {
  1201. SET_BIT(FLASH->ACR, FLASH_ACR_SLEEP_PD);
  1202. }
  1203. /**
  1204. * @brief Disable Flash Power-down mode during Sleep or Low-power sleep mode
  1205. * @rmtoll FLASH_ACR SLEEP_PD LL_FLASH_DisableSleepPowerDown
  1206. * @retval None
  1207. */
  1208. __STATIC_INLINE void LL_FLASH_DisableSleepPowerDown(void)
  1209. {
  1210. CLEAR_BIT(FLASH->ACR, FLASH_ACR_SLEEP_PD);
  1211. }
  1212. /**
  1213. * @}
  1214. */
  1215. /**
  1216. * @}
  1217. */
  1218. /**
  1219. * @}
  1220. */
  1221. #endif /* defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) || defined (VREFBUF) */
  1222. /**
  1223. * @}
  1224. */
  1225. #ifdef __cplusplus
  1226. }
  1227. #endif
  1228. #endif /* STM32L5xx_LL_SYSTEM_H */