stm32g4xx_ll_system.h 58 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519
  1. /**
  2. ******************************************************************************
  3. * @file stm32g4xx_ll_system.h
  4. * @author MCD Application Team
  5. * @brief Header file of SYSTEM LL module.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) 2019 STMicroelectronics.
  10. * All rights reserved.
  11. *
  12. * This software is licensed under terms that can be found in the LICENSE file
  13. * in the root directory of this software component.
  14. * If no LICENSE file comes with this software, it is provided AS-IS.
  15. *
  16. ******************************************************************************
  17. @verbatim
  18. ==============================================================================
  19. ##### How to use this driver #####
  20. ==============================================================================
  21. [..]
  22. The LL SYSTEM driver contains a set of generic APIs that can be
  23. used by user:
  24. (+) Some of the FLASH features need to be handled in the SYSTEM file.
  25. (+) Access to DBGCMU registers
  26. (+) Access to SYSCFG registers
  27. (+) Access to VREFBUF registers
  28. @endverbatim
  29. ******************************************************************************
  30. */
  31. /* Define to prevent recursive inclusion -------------------------------------*/
  32. #ifndef __STM32G4xx_LL_SYSTEM_H
  33. #define __STM32G4xx_LL_SYSTEM_H
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37. /* Includes ------------------------------------------------------------------*/
  38. #include "stm32g4xx.h"
  39. /** @addtogroup STM32G4xx_LL_Driver
  40. * @{
  41. */
  42. #if defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) || defined (VREFBUF)
  43. /** @defgroup SYSTEM_LL SYSTEM
  44. * @{
  45. */
  46. /* Private types -------------------------------------------------------------*/
  47. /* Private variables ---------------------------------------------------------*/
  48. /* Private constants ---------------------------------------------------------*/
  49. /** @defgroup SYSTEM_LL_Private_Constants SYSTEM Private Constants
  50. * @{
  51. */
  52. /* Defines used for position in the register */
  53. #define DBGMCU_REVID_POSITION (uint32_t)POSITION_VAL(DBGMCU_IDCODE_REV_ID)
  54. /**
  55. * @brief Power-down in Run mode Flash key
  56. */
  57. #define FLASH_PDKEY1 0x04152637U /*!< Flash power down key1 */
  58. #define FLASH_PDKEY2 0xFAFBFCFDU /*!< Flash power down key2: used with FLASH_PDKEY1
  59. to unlock the RUN_PD bit in FLASH_ACR */
  60. /**
  61. * @}
  62. */
  63. /* Private macros ------------------------------------------------------------*/
  64. /* Exported types ------------------------------------------------------------*/
  65. /* Exported constants --------------------------------------------------------*/
  66. /** @defgroup SYSTEM_LL_Exported_Constants SYSTEM Exported Constants
  67. * @{
  68. */
  69. /** @defgroup SYSTEM_LL_EC_REMAP SYSCFG REMAP
  70. * @{
  71. */
  72. #define LL_SYSCFG_REMAP_FLASH 0x00000000U /*!< Main Flash memory mapped at 0x00000000 */
  73. #define LL_SYSCFG_REMAP_SYSTEMFLASH SYSCFG_MEMRMP_MEM_MODE_0 /*!< System Flash memory mapped at 0x00000000 */
  74. #define LL_SYSCFG_REMAP_SRAM (SYSCFG_MEMRMP_MEM_MODE_1 | SYSCFG_MEMRMP_MEM_MODE_0) /*!< SRAM1 mapped at 0x00000000 */
  75. #if defined(FMC_Bank1_R)
  76. #define LL_SYSCFG_REMAP_FMC SYSCFG_MEMRMP_MEM_MODE_1 /*!< FMC bank 1 (NOR/PSRAM 1 and 2) mapped at 0x00000000 */
  77. #endif /* FMC_Bank1_R */
  78. #define LL_SYSCFG_REMAP_QUADSPI (SYSCFG_MEMRMP_MEM_MODE_2 | SYSCFG_MEMRMP_MEM_MODE_1) /*!< QUADSPI memory mapped at 0x00000000 */
  79. /**
  80. * @}
  81. */
  82. #if defined(SYSCFG_MEMRMP_FB_MODE)
  83. /** @defgroup SYSTEM_LL_EC_BANKMODE SYSCFG BANK MODE
  84. * @{
  85. */
  86. #define LL_SYSCFG_BANKMODE_BANK1 0x00000000U /*!< Flash Bank1 mapped at 0x08000000 (and aliased @0x00000000)
  87. and Flash Bank2 mapped at 0x08040000 (and aliased at 0x00080000) */
  88. #define LL_SYSCFG_BANKMODE_BANK2 SYSCFG_MEMRMP_FB_MODE /*!< Flash Bank2 mapped at 0x08000000 (and aliased @0x00000000)
  89. and Flash Bank1 mapped at 0x08040000 (and aliased at 0x00080000) */
  90. /**
  91. * @}
  92. */
  93. #endif /* SYSCFG_MEMRMP_FB_MODE */
  94. /** @defgroup SYSTEM_LL_EC_I2C_FASTMODEPLUS SYSCFG I2C FASTMODEPLUS
  95. * @{
  96. */
  97. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB6 SYSCFG_CFGR1_I2C_PB6_FMP /*!< Enable Fast Mode Plus on PB6 */
  98. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB7 SYSCFG_CFGR1_I2C_PB7_FMP /*!< Enable Fast Mode Plus on PB7 */
  99. #if defined(SYSCFG_CFGR1_I2C_PB8_FMP)
  100. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB8 SYSCFG_CFGR1_I2C_PB8_FMP /*!< Enable Fast Mode Plus on PB8 */
  101. #endif /* SYSCFG_CFGR1_I2C_PB8_FMP */
  102. #if defined(SYSCFG_CFGR1_I2C_PB9_FMP)
  103. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB9 SYSCFG_CFGR1_I2C_PB9_FMP /*!< Enable Fast Mode Plus on PB9 */
  104. #endif /* SYSCFG_CFGR1_I2C_PB9_FMP */
  105. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 SYSCFG_CFGR1_I2C1_FMP /*!< Enable Fast Mode Plus on I2C1 pins */
  106. #if defined(I2C2)
  107. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 SYSCFG_CFGR1_I2C2_FMP /*!< Enable Fast Mode Plus on I2C2 pins */
  108. #endif /* I2C2 */
  109. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 SYSCFG_CFGR1_I2C3_FMP /*!< Enable Fast Mode Plus on I2C3 pins */
  110. #if defined(I2C4)
  111. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C4 SYSCFG_CFGR1_I2C4_FMP /*!< Enable Fast Mode Plus on I2C4 pins */
  112. #endif /* I2C4 */
  113. /**
  114. * @}
  115. */
  116. /** @defgroup SYSTEM_LL_EC_EXTI_PORT SYSCFG EXTI PORT
  117. * @{
  118. */
  119. #define LL_SYSCFG_EXTI_PORTA 0U /*!< EXTI PORT A */
  120. #define LL_SYSCFG_EXTI_PORTB 1U /*!< EXTI PORT B */
  121. #define LL_SYSCFG_EXTI_PORTC 2U /*!< EXTI PORT C */
  122. #define LL_SYSCFG_EXTI_PORTD 3U /*!< EXTI PORT D */
  123. #define LL_SYSCFG_EXTI_PORTE 4U /*!< EXTI PORT E */
  124. #define LL_SYSCFG_EXTI_PORTF 5U /*!< EXTI PORT F */
  125. #define LL_SYSCFG_EXTI_PORTG 6U /*!< EXTI PORT G */
  126. /**
  127. * @}
  128. */
  129. /** @defgroup SYSTEM_LL_EC_EXTI_LINE SYSCFG EXTI LINE
  130. * @{
  131. */
  132. #define LL_SYSCFG_EXTI_LINE0 (uint32_t)((0x000FU << 16U) | 0U) /* !< EXTI_POSITION_0 | EXTICR[0] */
  133. #define LL_SYSCFG_EXTI_LINE1 (uint32_t)((0x00F0U << 16U) | 0U) /* !< EXTI_POSITION_4 | EXTICR[0] */
  134. #define LL_SYSCFG_EXTI_LINE2 (uint32_t)((0x0F00U << 16U) | 0U) /* !< EXTI_POSITION_8 | EXTICR[0] */
  135. #define LL_SYSCFG_EXTI_LINE3 (uint32_t)((0xF000U << 16U) | 0U) /* !< EXTI_POSITION_12 | EXTICR[0] */
  136. #define LL_SYSCFG_EXTI_LINE4 (uint32_t)((0x000FU << 16U) | 1U) /* !< EXTI_POSITION_0 | EXTICR[1] */
  137. #define LL_SYSCFG_EXTI_LINE5 (uint32_t)((0x00F0U << 16U) | 1U) /* !< EXTI_POSITION_4 | EXTICR[1] */
  138. #define LL_SYSCFG_EXTI_LINE6 (uint32_t)((0x0F00U << 16U) | 1U) /* !< EXTI_POSITION_8 | EXTICR[1] */
  139. #define LL_SYSCFG_EXTI_LINE7 (uint32_t)((0xF000U << 16U) | 1U) /* !< EXTI_POSITION_12 | EXTICR[1] */
  140. #define LL_SYSCFG_EXTI_LINE8 (uint32_t)((0x000FU << 16U) | 2U) /* !< EXTI_POSITION_0 | EXTICR[2] */
  141. #define LL_SYSCFG_EXTI_LINE9 (uint32_t)((0x00F0U << 16U) | 2U) /* !< EXTI_POSITION_4 | EXTICR[2] */
  142. #define LL_SYSCFG_EXTI_LINE10 (uint32_t)((0x0F00U << 16U) | 2U) /* !< EXTI_POSITION_8 | EXTICR[2] */
  143. #define LL_SYSCFG_EXTI_LINE11 (uint32_t)((0xF000U << 16U) | 2U) /* !< EXTI_POSITION_12 | EXTICR[2] */
  144. #define LL_SYSCFG_EXTI_LINE12 (uint32_t)((0x000FU << 16U) | 3U) /* !< EXTI_POSITION_0 | EXTICR[3] */
  145. #define LL_SYSCFG_EXTI_LINE13 (uint32_t)((0x00F0U << 16U) | 3U) /* !< EXTI_POSITION_4 | EXTICR[3] */
  146. #define LL_SYSCFG_EXTI_LINE14 (uint32_t)((0x0F00U << 16U) | 3U) /* !< EXTI_POSITION_8 | EXTICR[3] */
  147. #define LL_SYSCFG_EXTI_LINE15 (uint32_t)((0xF000U << 16U) | 3U) /* !< EXTI_POSITION_12 | EXTICR[3] */
  148. /**
  149. * @}
  150. */
  151. /** @defgroup SYSTEM_LL_EC_TIMBREAK SYSCFG TIMER BREAK
  152. * @{
  153. */
  154. #define LL_SYSCFG_TIMBREAK_ECC SYSCFG_CFGR2_ECCL /*!< Enables and locks the ECC error signal
  155. with Break Input of TIM1/8/15/16/17 */
  156. #define LL_SYSCFG_TIMBREAK_PVD SYSCFG_CFGR2_PVDL /*!< Enables and locks the PVD connection
  157. with TIM1/8/15/16/17 Break Input
  158. and also the PVDE and PLS bits of the Power Control Interface */
  159. #define LL_SYSCFG_TIMBREAK_SRAM_PARITY SYSCFG_CFGR2_SPL /*!< Enables and locks the SRAM_PARITY error signal
  160. with Break Input of TIM1/8/15/16/17 */
  161. #define LL_SYSCFG_TIMBREAK_LOCKUP SYSCFG_CFGR2_CLL /*!< Enables and locks the LOCKUP output of CortexM4
  162. with Break Input of TIM1/15/16/17 */
  163. /**
  164. * @}
  165. */
  166. /** @defgroup SYSTEM_LL_EC_CCMSRAMWRP SYSCFG CCMSRAM WRP
  167. * @{
  168. */
  169. #define LL_SYSCFG_CCMSRAMWRP_PAGE0 SYSCFG_SWPR_PAGE0 /*!< CCMSRAM Write protection page 0 */
  170. #define LL_SYSCFG_CCMSRAMWRP_PAGE1 SYSCFG_SWPR_PAGE1 /*!< CCMSRAM Write protection page 1 */
  171. #define LL_SYSCFG_CCMSRAMWRP_PAGE2 SYSCFG_SWPR_PAGE2 /*!< CCMSRAM Write protection page 2 */
  172. #define LL_SYSCFG_CCMSRAMWRP_PAGE3 SYSCFG_SWPR_PAGE3 /*!< CCMSRAM Write protection page 3 */
  173. #define LL_SYSCFG_CCMSRAMWRP_PAGE4 SYSCFG_SWPR_PAGE4 /*!< CCMSRAM Write protection page 4 */
  174. #define LL_SYSCFG_CCMSRAMWRP_PAGE5 SYSCFG_SWPR_PAGE5 /*!< CCMSRAM Write protection page 5 */
  175. #define LL_SYSCFG_CCMSRAMWRP_PAGE6 SYSCFG_SWPR_PAGE6 /*!< CCMSRAM Write protection page 6 */
  176. #define LL_SYSCFG_CCMSRAMWRP_PAGE7 SYSCFG_SWPR_PAGE7 /*!< CCMSRAM Write protection page 7 */
  177. #define LL_SYSCFG_CCMSRAMWRP_PAGE8 SYSCFG_SWPR_PAGE8 /*!< CCMSRAM Write protection page 8 */
  178. #define LL_SYSCFG_CCMSRAMWRP_PAGE9 SYSCFG_SWPR_PAGE9 /*!< CCMSRAM Write protection page 9 */
  179. #if defined(SYSCFG_SWPR_PAGE10)
  180. #define LL_SYSCFG_CCMSRAMWRP_PAGE10 SYSCFG_SWPR_PAGE10 /*!< CCMSRAM Write protection page 10 */
  181. #define LL_SYSCFG_CCMSRAMWRP_PAGE11 SYSCFG_SWPR_PAGE11 /*!< CCMSRAM Write protection page 11 */
  182. #define LL_SYSCFG_CCMSRAMWRP_PAGE12 SYSCFG_SWPR_PAGE12 /*!< CCMSRAM Write protection page 12 */
  183. #define LL_SYSCFG_CCMSRAMWRP_PAGE13 SYSCFG_SWPR_PAGE13 /*!< CCMSRAM Write protection page 13 */
  184. #define LL_SYSCFG_CCMSRAMWRP_PAGE14 SYSCFG_SWPR_PAGE14 /*!< CCMSRAM Write protection page 14 */
  185. #define LL_SYSCFG_CCMSRAMWRP_PAGE15 SYSCFG_SWPR_PAGE15 /*!< CCMSRAM Write protection page 15 */
  186. #define LL_SYSCFG_CCMSRAMWRP_PAGE16 SYSCFG_SWPR_PAGE16 /*!< CCMSRAM Write protection page 16 */
  187. #define LL_SYSCFG_CCMSRAMWRP_PAGE17 SYSCFG_SWPR_PAGE17 /*!< CCMSRAM Write protection page 17 */
  188. #define LL_SYSCFG_CCMSRAMWRP_PAGE18 SYSCFG_SWPR_PAGE18 /*!< CCMSRAM Write protection page 18 */
  189. #define LL_SYSCFG_CCMSRAMWRP_PAGE19 SYSCFG_SWPR_PAGE19 /*!< CCMSRAM Write protection page 19 */
  190. #endif /* SYSCFG_SWPR_PAGE10 */
  191. #if defined(SYSCFG_SWPR_PAGE20)
  192. #define LL_SYSCFG_CCMSRAMWRP_PAGE20 SYSCFG_SWPR_PAGE20 /*!< CCMSRAM Write protection page 20 */
  193. #define LL_SYSCFG_CCMSRAMWRP_PAGE21 SYSCFG_SWPR_PAGE21 /*!< CCMSRAM Write protection page 21 */
  194. #define LL_SYSCFG_CCMSRAMWRP_PAGE22 SYSCFG_SWPR_PAGE22 /*!< CCMSRAM Write protection page 22 */
  195. #define LL_SYSCFG_CCMSRAMWRP_PAGE23 SYSCFG_SWPR_PAGE23 /*!< CCMSRAM Write protection page 23 */
  196. #define LL_SYSCFG_CCMSRAMWRP_PAGE24 SYSCFG_SWPR_PAGE24 /*!< CCMSRAM Write protection page 24 */
  197. #define LL_SYSCFG_CCMSRAMWRP_PAGE25 SYSCFG_SWPR_PAGE25 /*!< CCMSRAM Write protection page 25 */
  198. #define LL_SYSCFG_CCMSRAMWRP_PAGE26 SYSCFG_SWPR_PAGE26 /*!< CCMSRAM Write protection page 26 */
  199. #define LL_SYSCFG_CCMSRAMWRP_PAGE27 SYSCFG_SWPR_PAGE27 /*!< CCMSRAM Write protection page 27 */
  200. #define LL_SYSCFG_CCMSRAMWRP_PAGE28 SYSCFG_SWPR_PAGE28 /*!< CCMSRAM Write protection page 28 */
  201. #define LL_SYSCFG_CCMSRAMWRP_PAGE29 SYSCFG_SWPR_PAGE29 /*!< CCMSRAM Write protection page 29 */
  202. #define LL_SYSCFG_CCMSRAMWRP_PAGE30 SYSCFG_SWPR_PAGE30 /*!< CCMSRAM Write protection page 30 */
  203. #define LL_SYSCFG_CCMSRAMWRP_PAGE31 SYSCFG_SWPR_PAGE31 /*!< CCMSRAM Write protection page 31 */
  204. #endif /* SYSCFG_SWPR_PAGE20 */
  205. /**
  206. * @}
  207. */
  208. /** @defgroup SYSTEM_LL_EC_TRACE DBGMCU TRACE Pin Assignment
  209. * @{
  210. */
  211. #define LL_DBGMCU_TRACE_NONE 0x00000000U /*!< TRACE pins not assigned (default state) */
  212. #define LL_DBGMCU_TRACE_ASYNCH DBGMCU_CR_TRACE_IOEN /*!< TRACE pin assignment for Asynchronous Mode */
  213. #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 */
  214. #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 */
  215. #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 */
  216. /**
  217. * @}
  218. */
  219. /** @defgroup SYSTEM_LL_EC_APB1_GRP1_STOP_IP DBGMCU APB1 GRP1 STOP IP
  220. * @{
  221. */
  222. #define LL_DBGMCU_APB1_GRP1_TIM2_STOP DBGMCU_APB1FZR1_DBG_TIM2_STOP /*!< The counter clock of TIM2 is stopped when the core is halted*/
  223. #if defined(TIM3)
  224. #define LL_DBGMCU_APB1_GRP1_TIM3_STOP DBGMCU_APB1FZR1_DBG_TIM3_STOP /*!< The counter clock of TIM3 is stopped when the core is halted*/
  225. #endif /* TIM3 */
  226. #if defined(TIM4)
  227. #define LL_DBGMCU_APB1_GRP1_TIM4_STOP DBGMCU_APB1FZR1_DBG_TIM4_STOP /*!< The counter clock of TIM4 is stopped when the core is halted*/
  228. #endif /* TIM4 */
  229. #if defined(TIM5)
  230. #define LL_DBGMCU_APB1_GRP1_TIM5_STOP DBGMCU_APB1FZR1_DBG_TIM5_STOP /*!< The counter clock of TIM5 is stopped when the core is halted*/
  231. #endif /* TIM5 */
  232. #define LL_DBGMCU_APB1_GRP1_TIM6_STOP DBGMCU_APB1FZR1_DBG_TIM6_STOP /*!< The counter clock of TIM6 is stopped when the core is halted*/
  233. #if defined(TIM7)
  234. #define LL_DBGMCU_APB1_GRP1_TIM7_STOP DBGMCU_APB1FZR1_DBG_TIM7_STOP /*!< The counter clock of TIM7 is stopped when the core is halted*/
  235. #endif /* TIM7 */
  236. #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*/
  237. #define LL_DBGMCU_APB1_GRP1_WWDG_STOP DBGMCU_APB1FZR1_DBG_WWDG_STOP /*!< The window watchdog counter clock is stopped when the core is halted*/
  238. #define LL_DBGMCU_APB1_GRP1_IWDG_STOP DBGMCU_APB1FZR1_DBG_IWDG_STOP /*!< The independent watchdog counter clock is stopped when the core is halted*/
  239. #define LL_DBGMCU_APB1_GRP1_I2C1_STOP DBGMCU_APB1FZR1_DBG_I2C1_STOP /*!< The I2C1 SMBus timeout is frozen*/
  240. #if defined(I2C2)
  241. #define LL_DBGMCU_APB1_GRP1_I2C2_STOP DBGMCU_APB1FZR1_DBG_I2C2_STOP /*!< The I2C2 SMBus timeout is frozen*/
  242. #endif /* I2C2 */
  243. #if defined(I2C3)
  244. #define LL_DBGMCU_APB1_GRP1_I2C3_STOP DBGMCU_APB1FZR1_DBG_I2C3_STOP /*!< The I2C3 SMBus timeout is frozen*/
  245. #endif /* I2C3 */
  246. #define LL_DBGMCU_APB1_GRP1_LPTIM1_STOP DBGMCU_APB1FZR1_DBG_LPTIM1_STOP /*!< The counter clock of LPTIM1 is stopped when the core is halted*/
  247. /**
  248. * @}
  249. */
  250. /** @defgroup SYSTEM_LL_EC_APB1_GRP2_STOP_IP DBGMCU APB1 GRP2 STOP IP
  251. * @{
  252. */
  253. #if defined(I2C4)
  254. #define LL_DBGMCU_APB1_GRP2_I2C4_STOP DBGMCU_APB1FZR2_DBG_I2C4_STOP /*!< The I2C4 SMBus timeout is frozen*/
  255. #endif /* I2C4 */
  256. /**
  257. * @}
  258. */
  259. /** @defgroup SYSTEM_LL_EC_APB2_GRP1_STOP_IP DBGMCU APB2 GRP1 STOP IP
  260. * @{
  261. */
  262. #define LL_DBGMCU_APB2_GRP1_TIM1_STOP DBGMCU_APB2FZ_DBG_TIM1_STOP /*!< The counter clock of TIM1 is stopped when the core is halted*/
  263. #if defined(TIM8)
  264. #define LL_DBGMCU_APB2_GRP1_TIM8_STOP DBGMCU_APB2FZ_DBG_TIM8_STOP /*!< The counter clock of TIM8 is stopped when the core is halted*/
  265. #endif /* TIM8 */
  266. #define LL_DBGMCU_APB2_GRP1_TIM15_STOP DBGMCU_APB2FZ_DBG_TIM15_STOP /*!< The counter clock of TIM15 is stopped when the core is halted*/
  267. #define LL_DBGMCU_APB2_GRP1_TIM16_STOP DBGMCU_APB2FZ_DBG_TIM16_STOP /*!< The counter clock of TIM16 is stopped when the core is halted*/
  268. #if defined(TIM17)
  269. #define LL_DBGMCU_APB2_GRP1_TIM17_STOP DBGMCU_APB2FZ_DBG_TIM17_STOP /*!< The counter clock of TIM17 is stopped when the core is halted*/
  270. #endif /* TIM17 */
  271. #if defined(TIM20)
  272. #define LL_DBGMCU_APB2_GRP1_TIM20_STOP DBGMCU_APB2FZ_DBG_TIM20_STOP /*!< The counter clock of TIM20 is stopped when the core is halted*/
  273. #endif /* TIM20 */
  274. #if defined(HRTIM1)
  275. #define LL_DBGMCU_APB2_GRP1_HRTIM1_STOP DBGMCU_APB2FZ_DBG_HRTIM1_STOP /*!< The counter clock of HRTIM1 is stopped when the core is halted*/
  276. #endif /* HRTIM1 */
  277. /**
  278. * @}
  279. */
  280. #if defined(VREFBUF)
  281. /** @defgroup SYSTEM_LL_EC_VOLTAGE VREFBUF VOLTAGE
  282. * @{
  283. */
  284. #define LL_VREFBUF_VOLTAGE_SCALE0 ((uint32_t)0x00000000) /*!< Voltage reference scale 0 (VREFBUF_OUT = 2.048V) */
  285. #define LL_VREFBUF_VOLTAGE_SCALE1 VREFBUF_CSR_VRS_0 /*!< Voltage reference scale 1 (VREFBUF_OUT = 2.5V) */
  286. #define LL_VREFBUF_VOLTAGE_SCALE2 VREFBUF_CSR_VRS_1 /*!< Voltage reference scale 2 (VREFBUF_OUT = 2.9V) */
  287. /**
  288. * @}
  289. */
  290. #endif /* VREFBUF */
  291. /** @defgroup SYSTEM_LL_EC_LATENCY FLASH LATENCY
  292. * @{
  293. */
  294. #define LL_FLASH_LATENCY_0 FLASH_ACR_LATENCY_0WS /*!< FLASH Zero wait state */
  295. #define LL_FLASH_LATENCY_1 FLASH_ACR_LATENCY_1WS /*!< FLASH One wait state */
  296. #define LL_FLASH_LATENCY_2 FLASH_ACR_LATENCY_2WS /*!< FLASH Two wait states */
  297. #define LL_FLASH_LATENCY_3 FLASH_ACR_LATENCY_3WS /*!< FLASH Three wait states */
  298. #define LL_FLASH_LATENCY_4 FLASH_ACR_LATENCY_4WS /*!< FLASH Four wait states */
  299. #if defined(FLASH_ACR_LATENCY_5WS)
  300. #define LL_FLASH_LATENCY_5 FLASH_ACR_LATENCY_5WS /*!< FLASH five wait state */
  301. #define LL_FLASH_LATENCY_6 FLASH_ACR_LATENCY_6WS /*!< FLASH six wait state */
  302. #define LL_FLASH_LATENCY_7 FLASH_ACR_LATENCY_7WS /*!< FLASH seven wait states */
  303. #define LL_FLASH_LATENCY_8 FLASH_ACR_LATENCY_8WS /*!< FLASH eight wait states */
  304. #define LL_FLASH_LATENCY_9 FLASH_ACR_LATENCY_9WS /*!< FLASH nine wait states */
  305. #define LL_FLASH_LATENCY_10 FLASH_ACR_LATENCY_10WS /*!< FLASH ten wait states */
  306. #define LL_FLASH_LATENCY_11 FLASH_ACR_LATENCY_11WS /*!< FLASH eleven wait states */
  307. #define LL_FLASH_LATENCY_12 FLASH_ACR_LATENCY_12WS /*!< FLASH twelve wait states */
  308. #define LL_FLASH_LATENCY_13 FLASH_ACR_LATENCY_13WS /*!< FLASH thirteen wait states */
  309. #define LL_FLASH_LATENCY_14 FLASH_ACR_LATENCY_14WS /*!< FLASH fourteen wait states */
  310. #define LL_FLASH_LATENCY_15 FLASH_ACR_LATENCY_15WS /*!< FLASH fifteen wait states */
  311. #endif /* FLASH_ACR_LATENCY_5WS */
  312. /**
  313. * @}
  314. */
  315. /**
  316. * @}
  317. */
  318. /* Exported macro ------------------------------------------------------------*/
  319. /* Exported functions --------------------------------------------------------*/
  320. /** @defgroup SYSTEM_LL_Exported_Functions SYSTEM Exported Functions
  321. * @{
  322. */
  323. /** @defgroup SYSTEM_LL_EF_SYSCFG SYSCFG
  324. * @{
  325. */
  326. /**
  327. * @brief Set memory mapping at address 0x00000000
  328. * @rmtoll SYSCFG_MEMRMP MEM_MODE LL_SYSCFG_SetRemapMemory
  329. * @param Memory This parameter can be one of the following values:
  330. * @arg @ref LL_SYSCFG_REMAP_FLASH
  331. * @arg @ref LL_SYSCFG_REMAP_SYSTEMFLASH
  332. * @arg @ref LL_SYSCFG_REMAP_SRAM
  333. * @arg @ref LL_SYSCFG_REMAP_FMC (*)
  334. * @arg @ref LL_SYSCFG_REMAP_QUADSPI (*)
  335. *
  336. * (*) value not defined in all devices
  337. * @retval None
  338. */
  339. __STATIC_INLINE void LL_SYSCFG_SetRemapMemory(uint32_t Memory)
  340. {
  341. MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE, Memory);
  342. }
  343. /**
  344. * @brief Get memory mapping at address 0x00000000
  345. * @rmtoll SYSCFG_MEMRMP MEM_MODE LL_SYSCFG_GetRemapMemory
  346. * @retval Returned value can be one of the following values:
  347. * @arg @ref LL_SYSCFG_REMAP_FLASH
  348. * @arg @ref LL_SYSCFG_REMAP_SYSTEMFLASH
  349. * @arg @ref LL_SYSCFG_REMAP_SRAM
  350. * @arg @ref LL_SYSCFG_REMAP_FMC (*)
  351. * @arg @ref LL_SYSCFG_REMAP_QUADSPI (*)
  352. *
  353. * (*) value not defined in all devices
  354. */
  355. __STATIC_INLINE uint32_t LL_SYSCFG_GetRemapMemory(void)
  356. {
  357. return (uint32_t)(READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE));
  358. }
  359. #if defined(SYSCFG_MEMRMP_FB_MODE)
  360. /**
  361. * @brief Select Flash bank mode (Bank flashed at 0x08000000)
  362. * @rmtoll SYSCFG_MEMRMP FB_MODE LL_SYSCFG_SetFlashBankMode
  363. * @param Bank This parameter can be one of the following values:
  364. * @arg @ref LL_SYSCFG_BANKMODE_BANK1
  365. * @arg @ref LL_SYSCFG_BANKMODE_BANK2
  366. * @retval None
  367. */
  368. __STATIC_INLINE void LL_SYSCFG_SetFlashBankMode(uint32_t Bank)
  369. {
  370. MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_FB_MODE, Bank);
  371. }
  372. /**
  373. * @brief Get Flash bank mode (Bank flashed at 0x08000000)
  374. * @rmtoll SYSCFG_MEMRMP FB_MODE LL_SYSCFG_GetFlashBankMode
  375. * @retval Returned value can be one of the following values:
  376. * @arg @ref LL_SYSCFG_BANKMODE_BANK1
  377. * @arg @ref LL_SYSCFG_BANKMODE_BANK2
  378. */
  379. __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashBankMode(void)
  380. {
  381. return (uint32_t)(READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_FB_MODE));
  382. }
  383. #endif /* SYSCFG_MEMRMP_FB_MODE */
  384. /**
  385. * @brief Enable I/O analog switch voltage booster.
  386. * @note When voltage booster is enabled, I/O analog switches are supplied
  387. * by a dedicated voltage booster, from VDD power domain. This is
  388. * the recommended configuration with low VDDA voltage operation.
  389. * @note The I/O analog switch voltage booster is relevant for peripherals
  390. * using I/O in analog input: ADC, COMP, OPAMP.
  391. * However, COMP and OPAMP inputs have a high impedance and
  392. * voltage booster do not impact performance significantly.
  393. * Therefore, the voltage booster is mainly intended for
  394. * usage with ADC.
  395. * @rmtoll SYSCFG_CFGR1 BOOSTEN LL_SYSCFG_EnableAnalogBooster
  396. * @retval None
  397. */
  398. __STATIC_INLINE void LL_SYSCFG_EnableAnalogBooster(void)
  399. {
  400. SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_BOOSTEN);
  401. }
  402. /**
  403. * @brief Disable I/O analog switch voltage booster.
  404. * @note When voltage booster is enabled, I/O analog switches are supplied
  405. * by a dedicated voltage booster, from VDD power domain. This is
  406. * the recommended configuration with low VDDA voltage operation.
  407. * @note The I/O analog switch voltage booster is relevant for peripherals
  408. * using I/O in analog input: ADC, COMP, OPAMP.
  409. * However, COMP and OPAMP inputs have a high impedance and
  410. * voltage booster do not impact performance significantly.
  411. * Therefore, the voltage booster is mainly intended for
  412. * usage with ADC.
  413. * @rmtoll SYSCFG_CFGR1 BOOSTEN LL_SYSCFG_DisableAnalogBooster
  414. * @retval None
  415. */
  416. __STATIC_INLINE void LL_SYSCFG_DisableAnalogBooster(void)
  417. {
  418. CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_BOOSTEN);
  419. }
  420. /**
  421. * @brief Enable the I2C fast mode plus driving capability.
  422. * @rmtoll SYSCFG_CFGR1 I2C_PBx_FMP LL_SYSCFG_EnableFastModePlus\n
  423. * SYSCFG_CFGR1 I2Cx_FMP LL_SYSCFG_EnableFastModePlus
  424. * @param ConfigFastModePlus This parameter can be a combination of the following values:
  425. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6
  426. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7
  427. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8 (*)
  428. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9 (*)
  429. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1
  430. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*)
  431. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3
  432. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C4 (*)
  433. *
  434. * (*) value not defined in all devices
  435. * @retval None
  436. */
  437. __STATIC_INLINE void LL_SYSCFG_EnableFastModePlus(uint32_t ConfigFastModePlus)
  438. {
  439. SET_BIT(SYSCFG->CFGR1, ConfigFastModePlus);
  440. }
  441. /**
  442. * @brief Disable the I2C fast mode plus driving capability.
  443. * @rmtoll SYSCFG_CFGR1 I2C_PBx_FMP LL_SYSCFG_DisableFastModePlus\n
  444. * SYSCFG_CFGR1 I2Cx_FMP LL_SYSCFG_DisableFastModePlus
  445. * @param ConfigFastModePlus This parameter can be a combination of the following values:
  446. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6
  447. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7
  448. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8 (*)
  449. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9 (*)
  450. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1
  451. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*)
  452. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3
  453. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C4 (*)
  454. *
  455. * (*) value not defined in all devices
  456. * @retval None
  457. */
  458. __STATIC_INLINE void LL_SYSCFG_DisableFastModePlus(uint32_t ConfigFastModePlus)
  459. {
  460. CLEAR_BIT(SYSCFG->CFGR1, ConfigFastModePlus);
  461. }
  462. /**
  463. * @brief Enable Floating Point Unit Invalid operation Interrupt
  464. * @rmtoll SYSCFG_CFGR1 FPU_IE_0 LL_SYSCFG_EnableIT_FPU_IOC
  465. * @retval None
  466. */
  467. __STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_IOC(void)
  468. {
  469. SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_0);
  470. }
  471. /**
  472. * @brief Enable Floating Point Unit Divide-by-zero Interrupt
  473. * @rmtoll SYSCFG_CFGR1 FPU_IE_1 LL_SYSCFG_EnableIT_FPU_DZC
  474. * @retval None
  475. */
  476. __STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_DZC(void)
  477. {
  478. SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_1);
  479. }
  480. /**
  481. * @brief Enable Floating Point Unit Underflow Interrupt
  482. * @rmtoll SYSCFG_CFGR1 FPU_IE_2 LL_SYSCFG_EnableIT_FPU_UFC
  483. * @retval None
  484. */
  485. __STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_UFC(void)
  486. {
  487. SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_2);
  488. }
  489. /**
  490. * @brief Enable Floating Point Unit Overflow Interrupt
  491. * @rmtoll SYSCFG_CFGR1 FPU_IE_3 LL_SYSCFG_EnableIT_FPU_OFC
  492. * @retval None
  493. */
  494. __STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_OFC(void)
  495. {
  496. SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_3);
  497. }
  498. /**
  499. * @brief Enable Floating Point Unit Input denormal Interrupt
  500. * @rmtoll SYSCFG_CFGR1 FPU_IE_4 LL_SYSCFG_EnableIT_FPU_IDC
  501. * @retval None
  502. */
  503. __STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_IDC(void)
  504. {
  505. SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_4);
  506. }
  507. /**
  508. * @brief Enable Floating Point Unit Inexact Interrupt
  509. * @rmtoll SYSCFG_CFGR1 FPU_IE_5 LL_SYSCFG_EnableIT_FPU_IXC
  510. * @retval None
  511. */
  512. __STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_IXC(void)
  513. {
  514. SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_5);
  515. }
  516. /**
  517. * @brief Disable Floating Point Unit Invalid operation Interrupt
  518. * @rmtoll SYSCFG_CFGR1 FPU_IE_0 LL_SYSCFG_DisableIT_FPU_IOC
  519. * @retval None
  520. */
  521. __STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_IOC(void)
  522. {
  523. CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_0);
  524. }
  525. /**
  526. * @brief Disable Floating Point Unit Divide-by-zero Interrupt
  527. * @rmtoll SYSCFG_CFGR1 FPU_IE_1 LL_SYSCFG_DisableIT_FPU_DZC
  528. * @retval None
  529. */
  530. __STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_DZC(void)
  531. {
  532. CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_1);
  533. }
  534. /**
  535. * @brief Disable Floating Point Unit Underflow Interrupt
  536. * @rmtoll SYSCFG_CFGR1 FPU_IE_2 LL_SYSCFG_DisableIT_FPU_UFC
  537. * @retval None
  538. */
  539. __STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_UFC(void)
  540. {
  541. CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_2);
  542. }
  543. /**
  544. * @brief Disable Floating Point Unit Overflow Interrupt
  545. * @rmtoll SYSCFG_CFGR1 FPU_IE_3 LL_SYSCFG_DisableIT_FPU_OFC
  546. * @retval None
  547. */
  548. __STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_OFC(void)
  549. {
  550. CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_3);
  551. }
  552. /**
  553. * @brief Disable Floating Point Unit Input denormal Interrupt
  554. * @rmtoll SYSCFG_CFGR1 FPU_IE_4 LL_SYSCFG_DisableIT_FPU_IDC
  555. * @retval None
  556. */
  557. __STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_IDC(void)
  558. {
  559. CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_4);
  560. }
  561. /**
  562. * @brief Disable Floating Point Unit Inexact Interrupt
  563. * @rmtoll SYSCFG_CFGR1 FPU_IE_5 LL_SYSCFG_DisableIT_FPU_IXC
  564. * @retval None
  565. */
  566. __STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_IXC(void)
  567. {
  568. CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_5);
  569. }
  570. /**
  571. * @brief Check if Floating Point Unit Invalid operation Interrupt source is enabled or disabled.
  572. * @rmtoll SYSCFG_CFGR1 FPU_IE_0 LL_SYSCFG_IsEnabledIT_FPU_IOC
  573. * @retval State of bit (1 or 0).
  574. */
  575. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_IOC(void)
  576. {
  577. return ((READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_0) == (SYSCFG_CFGR1_FPU_IE_0)) ? 1UL : 0UL);
  578. }
  579. /**
  580. * @brief Check if Floating Point Unit Divide-by-zero Interrupt source is enabled or disabled.
  581. * @rmtoll SYSCFG_CFGR1 FPU_IE_1 LL_SYSCFG_IsEnabledIT_FPU_DZC
  582. * @retval State of bit (1 or 0).
  583. */
  584. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_DZC(void)
  585. {
  586. return ((READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_1) == (SYSCFG_CFGR1_FPU_IE_1)) ? 1UL : 0UL);
  587. }
  588. /**
  589. * @brief Check if Floating Point Unit Underflow Interrupt source is enabled or disabled.
  590. * @rmtoll SYSCFG_CFGR1 FPU_IE_2 LL_SYSCFG_IsEnabledIT_FPU_UFC
  591. * @retval State of bit (1 or 0).
  592. */
  593. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_UFC(void)
  594. {
  595. return ((READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_2) == (SYSCFG_CFGR1_FPU_IE_2)) ? 1UL : 0UL);
  596. }
  597. /**
  598. * @brief Check if Floating Point Unit Overflow Interrupt source is enabled or disabled.
  599. * @rmtoll SYSCFG_CFGR1 FPU_IE_3 LL_SYSCFG_IsEnabledIT_FPU_OFC
  600. * @retval State of bit (1 or 0).
  601. */
  602. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_OFC(void)
  603. {
  604. return ((READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_3) == (SYSCFG_CFGR1_FPU_IE_3)) ? 1UL : 0UL);
  605. }
  606. /**
  607. * @brief Check if Floating Point Unit Input denormal Interrupt source is enabled or disabled.
  608. * @rmtoll SYSCFG_CFGR1 FPU_IE_4 LL_SYSCFG_IsEnabledIT_FPU_IDC
  609. * @retval State of bit (1 or 0).
  610. */
  611. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_IDC(void)
  612. {
  613. return ((READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_4) == (SYSCFG_CFGR1_FPU_IE_4)) ? 1UL : 0UL);
  614. }
  615. /**
  616. * @brief Check if Floating Point Unit Inexact Interrupt source is enabled or disabled.
  617. * @rmtoll SYSCFG_CFGR1 FPU_IE_5 LL_SYSCFG_IsEnabledIT_FPU_IXC
  618. * @retval State of bit (1 or 0).
  619. */
  620. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_IXC(void)
  621. {
  622. return ((READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_5) == (SYSCFG_CFGR1_FPU_IE_5)) ? 1UL : 0UL);
  623. }
  624. /**
  625. * @brief Configure source input for the EXTI external interrupt.
  626. * @rmtoll SYSCFG_EXTICR1 EXTIx LL_SYSCFG_SetEXTISource\n
  627. * SYSCFG_EXTICR2 EXTIx LL_SYSCFG_SetEXTISource\n
  628. * SYSCFG_EXTICR3 EXTIx LL_SYSCFG_SetEXTISource\n
  629. * SYSCFG_EXTICR4 EXTIx LL_SYSCFG_SetEXTISource
  630. * @param Port This parameter can be one of the following values:
  631. * @arg @ref LL_SYSCFG_EXTI_PORTA
  632. * @arg @ref LL_SYSCFG_EXTI_PORTB
  633. * @arg @ref LL_SYSCFG_EXTI_PORTC
  634. * @arg @ref LL_SYSCFG_EXTI_PORTD
  635. * @arg @ref LL_SYSCFG_EXTI_PORTE
  636. * @arg @ref LL_SYSCFG_EXTI_PORTF
  637. * @arg @ref LL_SYSCFG_EXTI_PORTG
  638. *
  639. * (*) value not defined in all devices
  640. * @param Line This parameter can be one of the following values:
  641. * @arg @ref LL_SYSCFG_EXTI_LINE0
  642. * @arg @ref LL_SYSCFG_EXTI_LINE1
  643. * @arg @ref LL_SYSCFG_EXTI_LINE2
  644. * @arg @ref LL_SYSCFG_EXTI_LINE3
  645. * @arg @ref LL_SYSCFG_EXTI_LINE4
  646. * @arg @ref LL_SYSCFG_EXTI_LINE5
  647. * @arg @ref LL_SYSCFG_EXTI_LINE6
  648. * @arg @ref LL_SYSCFG_EXTI_LINE7
  649. * @arg @ref LL_SYSCFG_EXTI_LINE8
  650. * @arg @ref LL_SYSCFG_EXTI_LINE9
  651. * @arg @ref LL_SYSCFG_EXTI_LINE10
  652. * @arg @ref LL_SYSCFG_EXTI_LINE11
  653. * @arg @ref LL_SYSCFG_EXTI_LINE12
  654. * @arg @ref LL_SYSCFG_EXTI_LINE13
  655. * @arg @ref LL_SYSCFG_EXTI_LINE14
  656. * @arg @ref LL_SYSCFG_EXTI_LINE15
  657. * @retval None
  658. */
  659. __STATIC_INLINE void LL_SYSCFG_SetEXTISource(uint32_t Port, uint32_t Line)
  660. {
  661. MODIFY_REG(SYSCFG->EXTICR[Line & 0x3U], (Line >> 16U), Port << (POSITION_VAL((Line >> 16U)) & 0x1FU) );
  662. }
  663. /**
  664. * @brief Get the configured defined for specific EXTI Line
  665. * @rmtoll SYSCFG_EXTICR1 EXTIx LL_SYSCFG_GetEXTISource\n
  666. * SYSCFG_EXTICR2 EXTIx LL_SYSCFG_GetEXTISource\n
  667. * SYSCFG_EXTICR3 EXTIx LL_SYSCFG_GetEXTISource\n
  668. * SYSCFG_EXTICR4 EXTIx LL_SYSCFG_GetEXTISource
  669. * @param Line This parameter can be one of the following values:
  670. * @arg @ref LL_SYSCFG_EXTI_LINE0
  671. * @arg @ref LL_SYSCFG_EXTI_LINE1
  672. * @arg @ref LL_SYSCFG_EXTI_LINE2
  673. * @arg @ref LL_SYSCFG_EXTI_LINE3
  674. * @arg @ref LL_SYSCFG_EXTI_LINE4
  675. * @arg @ref LL_SYSCFG_EXTI_LINE5
  676. * @arg @ref LL_SYSCFG_EXTI_LINE6
  677. * @arg @ref LL_SYSCFG_EXTI_LINE7
  678. * @arg @ref LL_SYSCFG_EXTI_LINE8
  679. * @arg @ref LL_SYSCFG_EXTI_LINE9
  680. * @arg @ref LL_SYSCFG_EXTI_LINE10
  681. * @arg @ref LL_SYSCFG_EXTI_LINE11
  682. * @arg @ref LL_SYSCFG_EXTI_LINE12
  683. * @arg @ref LL_SYSCFG_EXTI_LINE13
  684. * @arg @ref LL_SYSCFG_EXTI_LINE14
  685. * @arg @ref LL_SYSCFG_EXTI_LINE15
  686. * @retval Returned value can be one of the following values:
  687. * @arg @ref LL_SYSCFG_EXTI_PORTA
  688. * @arg @ref LL_SYSCFG_EXTI_PORTB
  689. * @arg @ref LL_SYSCFG_EXTI_PORTC
  690. * @arg @ref LL_SYSCFG_EXTI_PORTD
  691. * @arg @ref LL_SYSCFG_EXTI_PORTE
  692. * @arg @ref LL_SYSCFG_EXTI_PORTF
  693. * @arg @ref LL_SYSCFG_EXTI_PORTG
  694. *
  695. * (*) value not defined in all devices
  696. */
  697. __STATIC_INLINE uint32_t LL_SYSCFG_GetEXTISource(uint32_t Line)
  698. {
  699. return (uint32_t)(READ_BIT(SYSCFG->EXTICR[Line & 0x3U], (Line >> 16U)) >> (POSITION_VAL(Line >> 16U) & 0x1FU));
  700. }
  701. /**
  702. * @brief Enable CCMSRAM Erase (starts a hardware CCMSRAM erase operation. This bit is
  703. * automatically cleared at the end of the CCMSRAM erase operation.)
  704. * @note This bit is write-protected: setting this bit is possible only after the
  705. * correct key sequence is written in the SYSCFG_SKR register as described in
  706. * the Reference Manual.
  707. * @rmtoll SYSCFG_SCSR CCMER LL_SYSCFG_EnableCCMSRAMErase
  708. * @retval None
  709. */
  710. __STATIC_INLINE void LL_SYSCFG_EnableCCMSRAMErase(void)
  711. {
  712. /* Starts a hardware CCMSRAM erase operation*/
  713. SET_BIT(SYSCFG->SCSR, SYSCFG_SCSR_CCMER);
  714. }
  715. /**
  716. * @brief Check if CCMSRAM erase operation is on going
  717. * @rmtoll SYSCFG_SCSR CCMBSY LL_SYSCFG_IsCCMSRAMEraseOngoing
  718. * @retval State of bit (1 or 0).
  719. */
  720. __STATIC_INLINE uint32_t LL_SYSCFG_IsCCMSRAMEraseOngoing(void)
  721. {
  722. return ((READ_BIT(SYSCFG->SCSR, SYSCFG_SCSR_CCMBSY) == (SYSCFG_SCSR_CCMBSY)) ? 1UL : 0UL);
  723. }
  724. /**
  725. * @brief Set connections to TIM1/8/15/16/17 Break inputs
  726. * @rmtoll SYSCFG_CFGR2 CLL LL_SYSCFG_SetTIMBreakInputs\n
  727. * SYSCFG_CFGR2 SPL LL_SYSCFG_SetTIMBreakInputs\n
  728. * SYSCFG_CFGR2 PVDL LL_SYSCFG_SetTIMBreakInputs\n
  729. * SYSCFG_CFGR2 ECCL LL_SYSCFG_SetTIMBreakInputs
  730. * @param Break This parameter can be a combination of the following values:
  731. * @arg @ref LL_SYSCFG_TIMBREAK_ECC
  732. * @arg @ref LL_SYSCFG_TIMBREAK_PVD
  733. * @arg @ref LL_SYSCFG_TIMBREAK_SRAM_PARITY
  734. * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP
  735. * @retval None
  736. */
  737. __STATIC_INLINE void LL_SYSCFG_SetTIMBreakInputs(uint32_t Break)
  738. {
  739. MODIFY_REG(SYSCFG->CFGR2, SYSCFG_CFGR2_CLL | SYSCFG_CFGR2_SPL | SYSCFG_CFGR2_PVDL | SYSCFG_CFGR2_ECCL, Break);
  740. }
  741. /**
  742. * @brief Get connections to TIM1/8/15/16/17 Break inputs
  743. * @rmtoll SYSCFG_CFGR2 CLL LL_SYSCFG_GetTIMBreakInputs\n
  744. * SYSCFG_CFGR2 SPL LL_SYSCFG_GetTIMBreakInputs\n
  745. * SYSCFG_CFGR2 PVDL LL_SYSCFG_GetTIMBreakInputs\n
  746. * SYSCFG_CFGR2 ECCL LL_SYSCFG_GetTIMBreakInputs
  747. * @retval Returned value can be can be a combination of the following values:
  748. * @arg @ref LL_SYSCFG_TIMBREAK_ECC
  749. * @arg @ref LL_SYSCFG_TIMBREAK_PVD
  750. * @arg @ref LL_SYSCFG_TIMBREAK_SRAM_PARITY
  751. * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP
  752. */
  753. __STATIC_INLINE uint32_t LL_SYSCFG_GetTIMBreakInputs(void)
  754. {
  755. return (uint32_t)(READ_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_CLL | SYSCFG_CFGR2_SPL | SYSCFG_CFGR2_PVDL | SYSCFG_CFGR2_ECCL));
  756. }
  757. /**
  758. * @brief Check if SRAM parity error detected
  759. * @rmtoll SYSCFG_CFGR2 SPF LL_SYSCFG_IsActiveFlag_SP
  760. * @retval State of bit (1 or 0).
  761. */
  762. __STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_SP(void)
  763. {
  764. return ((READ_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_SPF) == (SYSCFG_CFGR2_SPF)) ? 1UL : 0UL);
  765. }
  766. /**
  767. * @brief Clear SRAM parity error flag
  768. * @rmtoll SYSCFG_CFGR2 SPF LL_SYSCFG_ClearFlag_SP
  769. * @retval None
  770. */
  771. __STATIC_INLINE void LL_SYSCFG_ClearFlag_SP(void)
  772. {
  773. SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_SPF);
  774. }
  775. /**
  776. * @brief Enable CCMSRAM page write protection
  777. * @note Write protection is cleared only by a system reset
  778. * @rmtoll SYSCFG_SWPR PAGEx LL_SYSCFG_EnableCCMSRAMPageWRP
  779. * @param CCMSRAMWRP This parameter can be a combination of the following values:
  780. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE0
  781. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE1
  782. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE2
  783. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE3
  784. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE4
  785. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE5
  786. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE6
  787. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE7
  788. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE8
  789. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE9
  790. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE10 (*)
  791. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE11 (*)
  792. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE12 (*)
  793. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE13 (*)
  794. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE14 (*)
  795. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE15 (*)
  796. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE16 (*)
  797. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE17 (*)
  798. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE18 (*)
  799. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE19 (*)
  800. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE20 (*)
  801. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE21 (*)
  802. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE22 (*)
  803. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE23 (*)
  804. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE24 (*)
  805. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE25 (*)
  806. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE26 (*)
  807. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE27 (*)
  808. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE28 (*)
  809. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE29 (*)
  810. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE30 (*)
  811. * @arg @ref LL_SYSCFG_CCMSRAMWRP_PAGE31 (*)
  812. *
  813. * (*) value not defined in all devices
  814. * @retval None
  815. */
  816. __STATIC_INLINE void LL_SYSCFG_EnableCCMSRAMPageWRP(uint32_t CCMSRAMWRP)
  817. {
  818. SET_BIT(SYSCFG->SWPR, CCMSRAMWRP);
  819. }
  820. /**
  821. * @brief CCMSRAM page write protection lock prior to erase
  822. * @rmtoll SYSCFG_SKR KEY LL_SYSCFG_LockCCMSRAMWRP
  823. * @retval None
  824. */
  825. __STATIC_INLINE void LL_SYSCFG_LockCCMSRAMWRP(void)
  826. {
  827. /* Writing a wrong key reactivates the write protection */
  828. WRITE_REG(SYSCFG->SKR, 0x00);
  829. }
  830. /**
  831. * @brief CCMSRAM page write protection unlock prior to erase
  832. * @rmtoll SYSCFG_SKR KEY LL_SYSCFG_UnlockCCMSRAMWRP
  833. * @retval None
  834. */
  835. __STATIC_INLINE void LL_SYSCFG_UnlockCCMSRAMWRP(void)
  836. {
  837. /* unlock the write protection of the CCMER bit */
  838. WRITE_REG(SYSCFG->SKR, 0xCA);
  839. WRITE_REG(SYSCFG->SKR, 0x53);
  840. }
  841. /**
  842. * @}
  843. */
  844. /** @defgroup SYSTEM_LL_EF_DBGMCU DBGMCU
  845. * @{
  846. */
  847. /**
  848. * @brief Return the device identifier
  849. * @rmtoll DBGMCU_IDCODE DEV_ID LL_DBGMCU_GetDeviceID
  850. * @retval Values between Min_Data=0x00 and Max_Data=0x0FFF (ex: device ID is 0x6415)
  851. */
  852. __STATIC_INLINE uint32_t LL_DBGMCU_GetDeviceID(void)
  853. {
  854. return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_DEV_ID));
  855. }
  856. /**
  857. * @brief Return the device revision identifier
  858. * @note This field indicates the revision of the device.
  859. * @rmtoll DBGMCU_IDCODE REV_ID LL_DBGMCU_GetRevisionID
  860. * @retval Values between Min_Data=0x00 and Max_Data=0xFFFF
  861. */
  862. __STATIC_INLINE uint32_t LL_DBGMCU_GetRevisionID(void)
  863. {
  864. return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_REV_ID) >> (DBGMCU_REVID_POSITION & 0x1FU));
  865. }
  866. /**
  867. * @brief Enable the Debug Module during SLEEP mode
  868. * @rmtoll DBGMCU_CR DBG_SLEEP LL_DBGMCU_EnableDBGSleepMode
  869. * @retval None
  870. */
  871. __STATIC_INLINE void LL_DBGMCU_EnableDBGSleepMode(void)
  872. {
  873. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP);
  874. }
  875. /**
  876. * @brief Disable the Debug Module during SLEEP mode
  877. * @rmtoll DBGMCU_CR DBG_SLEEP LL_DBGMCU_DisableDBGSleepMode
  878. * @retval None
  879. */
  880. __STATIC_INLINE void LL_DBGMCU_DisableDBGSleepMode(void)
  881. {
  882. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP);
  883. }
  884. /**
  885. * @brief Enable the Debug Module during STOP mode
  886. * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_EnableDBGStopMode
  887. * @retval None
  888. */
  889. __STATIC_INLINE void LL_DBGMCU_EnableDBGStopMode(void)
  890. {
  891. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
  892. }
  893. /**
  894. * @brief Disable the Debug Module during STOP mode
  895. * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_DisableDBGStopMode
  896. * @retval None
  897. */
  898. __STATIC_INLINE void LL_DBGMCU_DisableDBGStopMode(void)
  899. {
  900. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
  901. }
  902. /**
  903. * @brief Enable the Debug Module during STANDBY mode
  904. * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_EnableDBGStandbyMode
  905. * @retval None
  906. */
  907. __STATIC_INLINE void LL_DBGMCU_EnableDBGStandbyMode(void)
  908. {
  909. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);
  910. }
  911. /**
  912. * @brief Disable the Debug Module during STANDBY mode
  913. * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_DisableDBGStandbyMode
  914. * @retval None
  915. */
  916. __STATIC_INLINE void LL_DBGMCU_DisableDBGStandbyMode(void)
  917. {
  918. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);
  919. }
  920. /**
  921. * @brief Set Trace pin assignment control
  922. * @rmtoll DBGMCU_CR TRACE_IOEN LL_DBGMCU_SetTracePinAssignment\n
  923. * DBGMCU_CR TRACE_MODE LL_DBGMCU_SetTracePinAssignment
  924. * @param PinAssignment This parameter can be one of the following values:
  925. * @arg @ref LL_DBGMCU_TRACE_NONE
  926. * @arg @ref LL_DBGMCU_TRACE_ASYNCH
  927. * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE1
  928. * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE2
  929. * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE4
  930. * @retval None
  931. */
  932. __STATIC_INLINE void LL_DBGMCU_SetTracePinAssignment(uint32_t PinAssignment)
  933. {
  934. MODIFY_REG(DBGMCU->CR, DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE, PinAssignment);
  935. }
  936. /**
  937. * @brief Get Trace pin assignment control
  938. * @rmtoll DBGMCU_CR TRACE_IOEN LL_DBGMCU_GetTracePinAssignment\n
  939. * DBGMCU_CR TRACE_MODE LL_DBGMCU_GetTracePinAssignment
  940. * @retval Returned value can be one of the following values:
  941. * @arg @ref LL_DBGMCU_TRACE_NONE
  942. * @arg @ref LL_DBGMCU_TRACE_ASYNCH
  943. * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE1
  944. * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE2
  945. * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE4
  946. */
  947. __STATIC_INLINE uint32_t LL_DBGMCU_GetTracePinAssignment(void)
  948. {
  949. return (uint32_t)(READ_BIT(DBGMCU->CR, DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE));
  950. }
  951. /**
  952. * @brief Freeze APB1 peripherals (group1 peripherals)
  953. * @rmtoll DBGMCU_APB1FZR1 DBG_xxxx_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph
  954. * @param Periphs This parameter can be a combination of the following values:
  955. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP
  956. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP
  957. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP
  958. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP (*)
  959. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP
  960. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP
  961. * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP
  962. * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP
  963. * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP
  964. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP
  965. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP
  966. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP
  967. * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP
  968. *
  969. * (*) value not defined in all devices.
  970. * @retval None
  971. */
  972. __STATIC_INLINE void LL_DBGMCU_APB1_GRP1_FreezePeriph(uint32_t Periphs)
  973. {
  974. SET_BIT(DBGMCU->APB1FZR1, Periphs);
  975. }
  976. /**
  977. * @brief Freeze APB1 peripherals (group2 peripherals)
  978. * @rmtoll DBGMCU_APB1FZR2 DBG_xxxx_STOP LL_DBGMCU_APB1_GRP2_FreezePeriph
  979. * @param Periphs This parameter can be a combination of the following values:
  980. * @arg @ref LL_DBGMCU_APB1_GRP2_I2C4_STOP (*)
  981. *
  982. * (*) value not defined in all devices.
  983. * @retval None
  984. */
  985. __STATIC_INLINE void LL_DBGMCU_APB1_GRP2_FreezePeriph(uint32_t Periphs)
  986. {
  987. SET_BIT(DBGMCU->APB1FZR2, Periphs);
  988. }
  989. /**
  990. * @brief Unfreeze APB1 peripherals (group1 peripherals)
  991. * @rmtoll DBGMCU_APB1FZR1 DBG_xxxx_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph
  992. * @param Periphs This parameter can be a combination of the following values:
  993. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP
  994. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP
  995. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP
  996. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP (*)
  997. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP
  998. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP
  999. * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP
  1000. * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP
  1001. * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP
  1002. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP
  1003. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP
  1004. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP
  1005. * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP
  1006. *
  1007. * (*) value not defined in all devices.
  1008. * @retval None
  1009. */
  1010. __STATIC_INLINE void LL_DBGMCU_APB1_GRP1_UnFreezePeriph(uint32_t Periphs)
  1011. {
  1012. CLEAR_BIT(DBGMCU->APB1FZR1, Periphs);
  1013. }
  1014. /**
  1015. * @brief Unfreeze APB1 peripherals (group2 peripherals)
  1016. * @rmtoll DBGMCU_APB1FZR2 DBG_xxxx_STOP LL_DBGMCU_APB1_GRP2_UnFreezePeriph
  1017. * @param Periphs This parameter can be a combination of the following values:
  1018. * @arg @ref LL_DBGMCU_APB1_GRP2_I2C4_STOP (*)
  1019. *
  1020. * (*) value not defined in all devices.
  1021. * @retval None
  1022. */
  1023. __STATIC_INLINE void LL_DBGMCU_APB1_GRP2_UnFreezePeriph(uint32_t Periphs)
  1024. {
  1025. CLEAR_BIT(DBGMCU->APB1FZR2, Periphs);
  1026. }
  1027. /**
  1028. * @brief Freeze APB2 peripherals
  1029. * @rmtoll DBGMCU_APB2FZ DBG_TIMx_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph
  1030. * @param Periphs This parameter can be a combination of the following values:
  1031. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP
  1032. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP
  1033. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM15_STOP
  1034. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM16_STOP
  1035. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM17_STOP
  1036. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM20_STOP (*)
  1037. * @arg @ref LL_DBGMCU_APB2_GRP1_HRTIM1_STOP (*)
  1038. *
  1039. * (*) value not defined in all devices.
  1040. * @retval None
  1041. */
  1042. __STATIC_INLINE void LL_DBGMCU_APB2_GRP1_FreezePeriph(uint32_t Periphs)
  1043. {
  1044. SET_BIT(DBGMCU->APB2FZ, Periphs);
  1045. }
  1046. /**
  1047. * @brief Unfreeze APB2 peripherals
  1048. * @rmtoll DBGMCU_APB2FZ DBG_TIMx_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph
  1049. * @param Periphs This parameter can be a combination of the following values:
  1050. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP
  1051. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP
  1052. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM15_STOP
  1053. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM16_STOP
  1054. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM17_STOP
  1055. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM20_STOP (*)
  1056. * @arg @ref LL_DBGMCU_APB2_GRP1_HRTIM1_STOP (*)
  1057. *
  1058. * (*) value not defined in all devices.
  1059. * @retval None
  1060. */
  1061. __STATIC_INLINE void LL_DBGMCU_APB2_GRP1_UnFreezePeriph(uint32_t Periphs)
  1062. {
  1063. CLEAR_BIT(DBGMCU->APB2FZ, Periphs);
  1064. }
  1065. /**
  1066. * @}
  1067. */
  1068. #if defined(VREFBUF)
  1069. /** @defgroup SYSTEM_LL_EF_VREFBUF VREFBUF
  1070. * @{
  1071. */
  1072. /**
  1073. * @brief Enable Internal voltage reference
  1074. * @rmtoll VREFBUF_CSR ENVR LL_VREFBUF_Enable
  1075. * @retval None
  1076. */
  1077. __STATIC_INLINE void LL_VREFBUF_Enable(void)
  1078. {
  1079. SET_BIT(VREFBUF->CSR, VREFBUF_CSR_ENVR);
  1080. }
  1081. /**
  1082. * @brief Disable Internal voltage reference
  1083. * @rmtoll VREFBUF_CSR ENVR LL_VREFBUF_Disable
  1084. * @retval None
  1085. */
  1086. __STATIC_INLINE void LL_VREFBUF_Disable(void)
  1087. {
  1088. CLEAR_BIT(VREFBUF->CSR, VREFBUF_CSR_ENVR);
  1089. }
  1090. /**
  1091. * @brief Enable high impedance (VREF+pin is high impedance)
  1092. * @rmtoll VREFBUF_CSR HIZ LL_VREFBUF_EnableHIZ
  1093. * @retval None
  1094. */
  1095. __STATIC_INLINE void LL_VREFBUF_EnableHIZ(void)
  1096. {
  1097. SET_BIT(VREFBUF->CSR, VREFBUF_CSR_HIZ);
  1098. }
  1099. /**
  1100. * @brief Disable high impedance (VREF+pin is internally connected to the voltage reference buffer output)
  1101. * @rmtoll VREFBUF_CSR HIZ LL_VREFBUF_DisableHIZ
  1102. * @retval None
  1103. */
  1104. __STATIC_INLINE void LL_VREFBUF_DisableHIZ(void)
  1105. {
  1106. CLEAR_BIT(VREFBUF->CSR, VREFBUF_CSR_HIZ);
  1107. }
  1108. /**
  1109. * @brief Set the Voltage reference scale
  1110. * @rmtoll VREFBUF_CSR VRS LL_VREFBUF_SetVoltageScaling
  1111. * @param Scale This parameter can be one of the following values:
  1112. * @arg @ref LL_VREFBUF_VOLTAGE_SCALE0
  1113. * @arg @ref LL_VREFBUF_VOLTAGE_SCALE1
  1114. * @arg @ref LL_VREFBUF_VOLTAGE_SCALE2
  1115. * @retval None
  1116. */
  1117. __STATIC_INLINE void LL_VREFBUF_SetVoltageScaling(uint32_t Scale)
  1118. {
  1119. MODIFY_REG(VREFBUF->CSR, VREFBUF_CSR_VRS, Scale);
  1120. }
  1121. /**
  1122. * @brief Get the Voltage reference scale
  1123. * @rmtoll VREFBUF_CSR VRS LL_VREFBUF_GetVoltageScaling
  1124. * @retval Returned value can be one of the following values:
  1125. * @arg @ref LL_VREFBUF_VOLTAGE_SCALE0
  1126. * @arg @ref LL_VREFBUF_VOLTAGE_SCALE1
  1127. * @arg @ref LL_VREFBUF_VOLTAGE_SCALE2
  1128. */
  1129. __STATIC_INLINE uint32_t LL_VREFBUF_GetVoltageScaling(void)
  1130. {
  1131. return (uint32_t)(READ_BIT(VREFBUF->CSR, VREFBUF_CSR_VRS));
  1132. }
  1133. /**
  1134. * @brief Check if Voltage reference buffer is ready
  1135. * @rmtoll VREFBUF_CSR VRR LL_VREFBUF_IsVREFReady
  1136. * @retval State of bit (1 or 0).
  1137. */
  1138. __STATIC_INLINE uint32_t LL_VREFBUF_IsVREFReady(void)
  1139. {
  1140. return ((READ_BIT(VREFBUF->CSR, VREFBUF_CSR_VRR) == (VREFBUF_CSR_VRR)) ? 1UL : 0UL);
  1141. }
  1142. /**
  1143. * @brief Get the trimming code for VREFBUF calibration
  1144. * @rmtoll VREFBUF_CCR TRIM LL_VREFBUF_GetTrimming
  1145. * @retval Between 0 and 0x3F
  1146. */
  1147. __STATIC_INLINE uint32_t LL_VREFBUF_GetTrimming(void)
  1148. {
  1149. return (uint32_t)(READ_BIT(VREFBUF->CCR, VREFBUF_CCR_TRIM));
  1150. }
  1151. /**
  1152. * @brief Set the trimming code for VREFBUF calibration (Tune the internal reference buffer voltage)
  1153. * @rmtoll VREFBUF_CCR TRIM LL_VREFBUF_SetTrimming
  1154. * @param Value Between 0 and 0x3F
  1155. * @retval None
  1156. */
  1157. __STATIC_INLINE void LL_VREFBUF_SetTrimming(uint32_t Value)
  1158. {
  1159. WRITE_REG(VREFBUF->CCR, Value);
  1160. }
  1161. /**
  1162. * @}
  1163. */
  1164. #endif /* VREFBUF */
  1165. /** @defgroup SYSTEM_LL_EF_FLASH FLASH
  1166. * @{
  1167. */
  1168. /**
  1169. * @brief Set FLASH Latency
  1170. * @rmtoll FLASH_ACR LATENCY LL_FLASH_SetLatency
  1171. * @param Latency This parameter can be one of the following values:
  1172. * @arg @ref LL_FLASH_LATENCY_0
  1173. * @arg @ref LL_FLASH_LATENCY_1
  1174. * @arg @ref LL_FLASH_LATENCY_2
  1175. * @arg @ref LL_FLASH_LATENCY_3
  1176. * @arg @ref LL_FLASH_LATENCY_4
  1177. * @arg @ref LL_FLASH_LATENCY_5 (*)
  1178. * @arg @ref LL_FLASH_LATENCY_6 (*)
  1179. * @arg @ref LL_FLASH_LATENCY_7 (*)
  1180. * @arg @ref LL_FLASH_LATENCY_8 (*)
  1181. * @arg @ref LL_FLASH_LATENCY_9 (*)
  1182. * @arg @ref LL_FLASH_LATENCY_10 (*)
  1183. * @arg @ref LL_FLASH_LATENCY_11 (*)
  1184. * @arg @ref LL_FLASH_LATENCY_12 (*)
  1185. * @arg @ref LL_FLASH_LATENCY_13 (*)
  1186. * @arg @ref LL_FLASH_LATENCY_14 (*)
  1187. * @arg @ref LL_FLASH_LATENCY_15 (*)
  1188. *
  1189. * (*) value not defined in all devices.
  1190. * @retval None
  1191. */
  1192. __STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency)
  1193. {
  1194. MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency);
  1195. }
  1196. /**
  1197. * @brief Get FLASH Latency
  1198. * @rmtoll FLASH_ACR LATENCY LL_FLASH_GetLatency
  1199. * @retval Returned value can be one of the following values:
  1200. * @arg @ref LL_FLASH_LATENCY_0
  1201. * @arg @ref LL_FLASH_LATENCY_1
  1202. * @arg @ref LL_FLASH_LATENCY_2
  1203. * @arg @ref LL_FLASH_LATENCY_3
  1204. * @arg @ref LL_FLASH_LATENCY_4
  1205. * @arg @ref LL_FLASH_LATENCY_5 (*)
  1206. * @arg @ref LL_FLASH_LATENCY_6 (*)
  1207. * @arg @ref LL_FLASH_LATENCY_7 (*)
  1208. * @arg @ref LL_FLASH_LATENCY_8 (*)
  1209. * @arg @ref LL_FLASH_LATENCY_9 (*)
  1210. * @arg @ref LL_FLASH_LATENCY_10 (*)
  1211. * @arg @ref LL_FLASH_LATENCY_11 (*)
  1212. * @arg @ref LL_FLASH_LATENCY_12 (*)
  1213. * @arg @ref LL_FLASH_LATENCY_13 (*)
  1214. * @arg @ref LL_FLASH_LATENCY_14 (*)
  1215. * @arg @ref LL_FLASH_LATENCY_15 (*)
  1216. *
  1217. * (*) value not defined in all devices.
  1218. */
  1219. __STATIC_INLINE uint32_t LL_FLASH_GetLatency(void)
  1220. {
  1221. return (uint32_t)(READ_BIT(FLASH->ACR, FLASH_ACR_LATENCY));
  1222. }
  1223. /**
  1224. * @brief Enable Prefetch
  1225. * @rmtoll FLASH_ACR PRFTEN LL_FLASH_EnablePrefetch
  1226. * @retval None
  1227. */
  1228. __STATIC_INLINE void LL_FLASH_EnablePrefetch(void)
  1229. {
  1230. SET_BIT(FLASH->ACR, FLASH_ACR_PRFTEN);
  1231. }
  1232. /**
  1233. * @brief Disable Prefetch
  1234. * @rmtoll FLASH_ACR PRFTEN LL_FLASH_DisablePrefetch
  1235. * @retval None
  1236. */
  1237. __STATIC_INLINE void LL_FLASH_DisablePrefetch(void)
  1238. {
  1239. CLEAR_BIT(FLASH->ACR, FLASH_ACR_PRFTEN);
  1240. }
  1241. /**
  1242. * @brief Check if Prefetch buffer is enabled
  1243. * @rmtoll FLASH_ACR PRFTEN LL_FLASH_IsPrefetchEnabled
  1244. * @retval State of bit (1 or 0).
  1245. */
  1246. __STATIC_INLINE uint32_t LL_FLASH_IsPrefetchEnabled(void)
  1247. {
  1248. return ((READ_BIT(FLASH->ACR, FLASH_ACR_PRFTEN) == (FLASH_ACR_PRFTEN)) ? 1UL : 0UL);
  1249. }
  1250. /**
  1251. * @brief Enable Instruction cache
  1252. * @rmtoll FLASH_ACR ICEN LL_FLASH_EnableInstCache
  1253. * @retval None
  1254. */
  1255. __STATIC_INLINE void LL_FLASH_EnableInstCache(void)
  1256. {
  1257. SET_BIT(FLASH->ACR, FLASH_ACR_ICEN);
  1258. }
  1259. /**
  1260. * @brief Disable Instruction cache
  1261. * @rmtoll FLASH_ACR ICEN LL_FLASH_DisableInstCache
  1262. * @retval None
  1263. */
  1264. __STATIC_INLINE void LL_FLASH_DisableInstCache(void)
  1265. {
  1266. CLEAR_BIT(FLASH->ACR, FLASH_ACR_ICEN);
  1267. }
  1268. /**
  1269. * @brief Enable Data cache
  1270. * @rmtoll FLASH_ACR DCEN LL_FLASH_EnableDataCache
  1271. * @retval None
  1272. */
  1273. __STATIC_INLINE void LL_FLASH_EnableDataCache(void)
  1274. {
  1275. SET_BIT(FLASH->ACR, FLASH_ACR_DCEN);
  1276. }
  1277. /**
  1278. * @brief Disable Data cache
  1279. * @rmtoll FLASH_ACR DCEN LL_FLASH_DisableDataCache
  1280. * @retval None
  1281. */
  1282. __STATIC_INLINE void LL_FLASH_DisableDataCache(void)
  1283. {
  1284. CLEAR_BIT(FLASH->ACR, FLASH_ACR_DCEN);
  1285. }
  1286. /**
  1287. * @brief Enable Instruction cache reset
  1288. * @note bit can be written only when the instruction cache is disabled
  1289. * @rmtoll FLASH_ACR ICRST LL_FLASH_EnableInstCacheReset
  1290. * @retval None
  1291. */
  1292. __STATIC_INLINE void LL_FLASH_EnableInstCacheReset(void)
  1293. {
  1294. SET_BIT(FLASH->ACR, FLASH_ACR_ICRST);
  1295. }
  1296. /**
  1297. * @brief Disable Instruction cache reset
  1298. * @rmtoll FLASH_ACR ICRST LL_FLASH_DisableInstCacheReset
  1299. * @retval None
  1300. */
  1301. __STATIC_INLINE void LL_FLASH_DisableInstCacheReset(void)
  1302. {
  1303. CLEAR_BIT(FLASH->ACR, FLASH_ACR_ICRST);
  1304. }
  1305. /**
  1306. * @brief Enable Data cache reset
  1307. * @note bit can be written only when the data cache is disabled
  1308. * @rmtoll FLASH_ACR DCRST LL_FLASH_EnableDataCacheReset
  1309. * @retval None
  1310. */
  1311. __STATIC_INLINE void LL_FLASH_EnableDataCacheReset(void)
  1312. {
  1313. SET_BIT(FLASH->ACR, FLASH_ACR_DCRST);
  1314. }
  1315. /**
  1316. * @brief Disable Data cache reset
  1317. * @rmtoll FLASH_ACR DCRST LL_FLASH_DisableDataCacheReset
  1318. * @retval None
  1319. */
  1320. __STATIC_INLINE void LL_FLASH_DisableDataCacheReset(void)
  1321. {
  1322. CLEAR_BIT(FLASH->ACR, FLASH_ACR_DCRST);
  1323. }
  1324. /**
  1325. * @brief Enable Flash Power-down mode during run mode or Low-power run mode
  1326. * @note Flash memory can be put in power-down mode only when the code is executed
  1327. * from RAM
  1328. * @note Flash must not be accessed when power down is enabled
  1329. * @note Flash must not be put in power-down while a program or an erase operation
  1330. * is on-going
  1331. * @rmtoll FLASH_ACR RUN_PD LL_FLASH_EnableRunPowerDown\n
  1332. * FLASH_PDKEYR PDKEY1 LL_FLASH_EnableRunPowerDown\n
  1333. * FLASH_PDKEYR PDKEY2 LL_FLASH_EnableRunPowerDown
  1334. * @retval None
  1335. */
  1336. __STATIC_INLINE void LL_FLASH_EnableRunPowerDown(void)
  1337. {
  1338. /* Following values must be written consecutively to unlock the RUN_PD bit in
  1339. FLASH_ACR */
  1340. WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY1);
  1341. WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY2);
  1342. SET_BIT(FLASH->ACR, FLASH_ACR_RUN_PD);
  1343. }
  1344. /**
  1345. * @brief Disable Flash Power-down mode during run mode or Low-power run mode
  1346. * @rmtoll FLASH_ACR RUN_PD LL_FLASH_DisableRunPowerDown\n
  1347. * FLASH_PDKEYR PDKEY1 LL_FLASH_DisableRunPowerDown\n
  1348. * FLASH_PDKEYR PDKEY2 LL_FLASH_DisableRunPowerDown
  1349. * @retval None
  1350. */
  1351. __STATIC_INLINE void LL_FLASH_DisableRunPowerDown(void)
  1352. {
  1353. /* Following values must be written consecutively to unlock the RUN_PD bit in
  1354. FLASH_ACR */
  1355. WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY1);
  1356. WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY2);
  1357. CLEAR_BIT(FLASH->ACR, FLASH_ACR_RUN_PD);
  1358. }
  1359. /**
  1360. * @brief Enable Flash Power-down mode during Sleep or Low-power sleep mode
  1361. * @note Flash must not be put in power-down while a program or an erase operation
  1362. * is on-going
  1363. * @rmtoll FLASH_ACR SLEEP_PD LL_FLASH_EnableSleepPowerDown
  1364. * @retval None
  1365. */
  1366. __STATIC_INLINE void LL_FLASH_EnableSleepPowerDown(void)
  1367. {
  1368. SET_BIT(FLASH->ACR, FLASH_ACR_SLEEP_PD);
  1369. }
  1370. /**
  1371. * @brief Disable Flash Power-down mode during Sleep or Low-power sleep mode
  1372. * @rmtoll FLASH_ACR SLEEP_PD LL_FLASH_DisableSleepPowerDown
  1373. * @retval None
  1374. */
  1375. __STATIC_INLINE void LL_FLASH_DisableSleepPowerDown(void)
  1376. {
  1377. CLEAR_BIT(FLASH->ACR, FLASH_ACR_SLEEP_PD);
  1378. }
  1379. /**
  1380. * @}
  1381. */
  1382. /**
  1383. * @}
  1384. */
  1385. /**
  1386. * @}
  1387. */
  1388. #endif /* defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) || defined (VREFBUF) */
  1389. /**
  1390. * @}
  1391. */
  1392. #ifdef __cplusplus
  1393. }
  1394. #endif
  1395. #endif /* __STM32G4xx_LL_SYSTEM_H */