stm32l0xx_ll_system.h 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090
  1. /**
  2. ******************************************************************************
  3. * @file stm32l0xx_ll_system.h
  4. * @author MCD Application Team
  5. * @brief Header file of SYSTEM LL module.
  6. *
  7. ******************************************************************************
  8. * @attention
  9. *
  10. * Copyright (c) 2016 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. @endverbatim
  29. ******************************************************************************
  30. */
  31. /* Define to prevent recursive inclusion -------------------------------------*/
  32. #ifndef __STM32L0xx_LL_SYSTEM_H
  33. #define __STM32L0xx_LL_SYSTEM_H
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37. /* Includes ------------------------------------------------------------------*/
  38. #include "stm32l0xx.h"
  39. /** @addtogroup STM32L0xx_LL_Driver
  40. * @{
  41. */
  42. #if defined (FLASH) || defined (SYSCFG) || defined (DBGMCU)
  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. /**
  53. * @brief Power-down in Run mode Flash key
  54. */
  55. #define FLASH_PDKEY1 (0x04152637U) /*!< Flash power down key1 */
  56. #define FLASH_PDKEY2 (0xFAFBFCFDU) /*!< Flash power down key2: used with FLASH_PDKEY1
  57. to unlock the RUN_PD bit in FLASH_ACR */
  58. /**
  59. * @}
  60. */
  61. /* Private macros ------------------------------------------------------------*/
  62. /* Exported types ------------------------------------------------------------*/
  63. /* Exported constants --------------------------------------------------------*/
  64. /** @defgroup SYSTEM_LL_Exported_Constants SYSTEM Exported Constants
  65. * @{
  66. */
  67. /** @defgroup SYSTEM_LL_EC_REMAP SYSCFG Memory Remap
  68. * @{
  69. */
  70. #define LL_SYSCFG_REMAP_FLASH 0x00000000U /*!< Main Flash memory mapped at 0x00000000 */
  71. #define LL_SYSCFG_REMAP_SYSTEMFLASH SYSCFG_CFGR1_MEM_MODE_0 /*!< System Flash memory mapped at 0x00000000 */
  72. #define LL_SYSCFG_REMAP_SRAM (SYSCFG_CFGR1_MEM_MODE_1 | SYSCFG_CFGR1_MEM_MODE_0) /*!< SRAM mapped at 0x00000000 */
  73. /**
  74. * @}
  75. */
  76. #if defined(SYSCFG_CFGR1_UFB)
  77. /** @defgroup SYSTEM_LL_EC_BANKMODE SYSCFG Bank Mode
  78. * @{
  79. */
  80. #define LL_SYSCFG_BANKMODE_BANK1 0x00000000U /*!< Flash Bank1 mapped at 0x08000000 (and aliased at 0x00000000),
  81. Flash Bank2 mapped at 0x08018000 (and aliased at 0x00018000),
  82. Data EEPROM Bank1 mapped at 0x08080000 (and aliased at 0x00080000),
  83. Data EEPROM Bank2 mapped at 0x08080C00 (and aliased at 0x00080C00) */
  84. #define LL_SYSCFG_BANKMODE_BANK2 SYSCFG_CFGR1_UFB /*!< Flash Bank2 mapped at 0x08000000 (and aliased at 0x00000000),
  85. Flash Bank1 mapped at 0x08018000 (and aliased at 0x00018000),
  86. Data EEPROM Bank2 mapped at 0x08080000 (and aliased at 0x00080000),
  87. Data EEPROM Bank1 mapped at 0x08080C00 (and aliased at 0x00080C00) */
  88. /**
  89. * @}
  90. */
  91. #endif /* SYSCFG_CFGR1_UFB */
  92. /** @defgroup SYSTEM_LL_EC_BOOTMODE SYSCFG Boot Mode
  93. * @{
  94. */
  95. #define LL_SYSCFG_BOOTMODE_FLASH 0x00000000U /*!< Main Flash memory boot mode */
  96. #define LL_SYSCFG_BOOTMODE_SYSTEMFLASH SYSCFG_CFGR1_BOOT_MODE_0 /*!< System Flash memory boot mode */
  97. #define LL_SYSCFG_BOOTMODE_SRAM (SYSCFG_CFGR1_BOOT_MODE_1 | SYSCFG_CFGR1_BOOT_MODE_0) /*!< SRAM boot mode */
  98. /**
  99. * @}
  100. */
  101. #if defined(SYSCFG_CFGR2_CAPA)
  102. /** @defgroup SYSTEM_LL_EC_CFGR2 SYSCFG VLCD Rail Connection
  103. * @{
  104. */
  105. #define LL_SYSCFG_CAPA_VLCD2_PB2 SYSCFG_CFGR2_CAPA_0 /*!< Connect PB2 pin to LCD_VLCD2 rails supply voltage */
  106. #define LL_SYSCFG_CAPA_VLCD1_PB12 SYSCFG_CFGR2_CAPA_1 /*!< Connect PB12 pin to LCD_VLCD1 rails supply voltage */
  107. #define LL_SYSCFG_CAPA_VLCD3_PB0 SYSCFG_CFGR2_CAPA_2 /*!< Connect PB0 pin to LCD_VLCD3 rails supply voltage */
  108. #if defined (SYSCFG_CFGR2_CAPA_3)
  109. #define LL_SYSCFG_CAPA_VLCD1_PE11 SYSCFG_CFGR2_CAPA_3 /*!< Connect PE11 pin to LCD_VLCD1 rails supply voltage */
  110. #endif /* SYSCFG_CFGR2_CAPA_3 */
  111. #if defined (SYSCFG_CFGR2_CAPA_4)
  112. #define LL_SYSCFG_CAPA_VLCD3_PE12 SYSCFG_CFGR2_CAPA_4 /*!< Connect PE12 pin to LCD_VLCD3 rails supply voltage */
  113. #endif /* SYSCFG_CFGR2_CAPA_4 */
  114. /**
  115. * @}
  116. */
  117. #endif /* SYSCFG_CFGR2_CAPA */
  118. /** @defgroup SYSTEM_LL_EC_I2C_FASTMODEPLUS SYSCFG I2C FASTMODEPLUS
  119. * @{
  120. */
  121. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB6 SYSCFG_CFGR2_I2C_PB6_FMP /*!< Enable Fast Mode Plus on PB6 */
  122. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB7 SYSCFG_CFGR2_I2C_PB7_FMP /*!< Enable Fast Mode Plus on PB7 */
  123. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB8 SYSCFG_CFGR2_I2C_PB8_FMP /*!< Enable Fast Mode Plus on PB8 */
  124. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB9 SYSCFG_CFGR2_I2C_PB9_FMP /*!< Enable Fast Mode Plus on PB9 */
  125. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 SYSCFG_CFGR2_I2C1_FMP /*!< Enable Fast Mode Plus on I2C1 pins */
  126. #if defined(SYSCFG_CFGR2_I2C2_FMP)
  127. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 SYSCFG_CFGR2_I2C2_FMP /*!< Enable Fast Mode Plus on I2C2 pins */
  128. #endif /* SYSCFG_CFGR2_I2C2_FMP */
  129. #if defined(SYSCFG_CFGR2_I2C3_FMP)
  130. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 SYSCFG_CFGR2_I2C3_FMP /*!< Enable Fast Mode Plus on I2C3 pins */
  131. #endif /* SYSCFG_CFGR2_I2C3_FMP */
  132. /**
  133. * @}
  134. */
  135. /** @defgroup SYSTEM_LL_VREFINT_CONTROL SYSCFG VREFINT Control
  136. * @{
  137. */
  138. #define LL_SYSCFG_VREFINT_CONNECT_NONE 0x00000000U /*!< No pad connected to VREFINT_ADC */
  139. #define LL_SYSCFG_VREFINT_CONNECT_IO1 SYSCFG_CFGR3_VREF_OUT_0 /*!< PB0 connected to VREFINT_ADC */
  140. #define LL_SYSCFG_VREFINT_CONNECT_IO2 SYSCFG_CFGR3_VREF_OUT_1 /*!< PB1 connected to VREFINT_ADC */
  141. #define LL_SYSCFG_VREFINT_CONNECT_IO1_IO2 (SYSCFG_CFGR3_VREF_OUT_0 | SYSCFG_CFGR3_VREF_OUT_1) /*!< PB0 and PB1 connected to VREFINT_ADC */
  142. /**
  143. * @}
  144. */
  145. /** @defgroup SYSTEM_LL_EC_EXTI_PORT SYSCFG EXTI Port
  146. * @{
  147. */
  148. #define LL_SYSCFG_EXTI_PORTA 0U /*!< EXTI PORT A */
  149. #define LL_SYSCFG_EXTI_PORTB 1U /*!< EXTI PORT B */
  150. #define LL_SYSCFG_EXTI_PORTC 2U /*!< EXTI PORT C */
  151. #if defined(GPIOD_BASE)
  152. #define LL_SYSCFG_EXTI_PORTD 3U /*!< EXTI PORT D */
  153. #endif /*GPIOD_BASE*/
  154. #if defined(GPIOE_BASE)
  155. #define LL_SYSCFG_EXTI_PORTE 4U /*!< EXTI PORT E */
  156. #endif /*GPIOE_BASE*/
  157. #if defined(GPIOH_BASE)
  158. #define LL_SYSCFG_EXTI_PORTH 5U /*!< EXTI PORT H */
  159. #endif /*GPIOH_BASE*/
  160. /**
  161. * @}
  162. */
  163. /** @defgroup SYSTEM_LL_EC_EXTI_LINE SYSCFG EXTI Line
  164. * @{
  165. */
  166. #define LL_SYSCFG_EXTI_LINE0 (uint32_t)(0U << 16U | 0U) /*!< EXTI_POSITION_0 | EXTICR[0] */
  167. #define LL_SYSCFG_EXTI_LINE1 (uint32_t)(4U << 16U | 0U) /*!< EXTI_POSITION_4 | EXTICR[0] */
  168. #define LL_SYSCFG_EXTI_LINE2 (uint32_t)(8U << 16U | 0U) /*!< EXTI_POSITION_8 | EXTICR[0] */
  169. #define LL_SYSCFG_EXTI_LINE3 (uint32_t)(12U << 16U | 0U) /*!< EXTI_POSITION_12 | EXTICR[0] */
  170. #define LL_SYSCFG_EXTI_LINE4 (uint32_t)(0U << 16U | 1U) /*!< EXTI_POSITION_0 | EXTICR[1] */
  171. #define LL_SYSCFG_EXTI_LINE5 (uint32_t)(4U << 16U | 1U) /*!< EXTI_POSITION_4 | EXTICR[1] */
  172. #define LL_SYSCFG_EXTI_LINE6 (uint32_t)(8U << 16U | 1U) /*!< EXTI_POSITION_8 | EXTICR[1] */
  173. #define LL_SYSCFG_EXTI_LINE7 (uint32_t)(12U << 16U | 1U) /*!< EXTI_POSITION_12 | EXTICR[1] */
  174. #define LL_SYSCFG_EXTI_LINE8 (uint32_t)(0U << 16U | 2U) /*!< EXTI_POSITION_0 | EXTICR[2] */
  175. #define LL_SYSCFG_EXTI_LINE9 (uint32_t)(4U << 16U | 2U) /*!< EXTI_POSITION_4 | EXTICR[2] */
  176. #define LL_SYSCFG_EXTI_LINE10 (uint32_t)(8U << 16U | 2U) /*!< EXTI_POSITION_8 | EXTICR[2] */
  177. #define LL_SYSCFG_EXTI_LINE11 (uint32_t)(12U << 16U | 2U) /*!< EXTI_POSITION_12 | EXTICR[2] */
  178. #define LL_SYSCFG_EXTI_LINE12 (uint32_t)(0U << 16U | 3U) /*!< EXTI_POSITION_0 | EXTICR[3] */
  179. #define LL_SYSCFG_EXTI_LINE13 (uint32_t)(4U << 16U | 3U) /*!< EXTI_POSITION_4 | EXTICR[3] */
  180. #define LL_SYSCFG_EXTI_LINE14 (uint32_t)(8U << 16U | 3U) /*!< EXTI_POSITION_8 | EXTICR[3] */
  181. #define LL_SYSCFG_EXTI_LINE15 (uint32_t)(12U << 16U | 3U) /*!< EXTI_POSITION_12 | EXTICR[3] */
  182. /**
  183. * @}
  184. */
  185. /** @defgroup SYSTEM_LL_EC_APB1_GRP1_STOP_IP DBGMCU APB1 GRP1 STOP IP
  186. * @{
  187. */
  188. #define LL_DBGMCU_APB1_GRP1_TIM2_STOP DBGMCU_APB1_FZ_DBG_TIM2_STOP /*!< TIM2 counter stopped when core is halted */
  189. #if defined(TIM3)
  190. #define LL_DBGMCU_APB1_GRP1_TIM3_STOP DBGMCU_APB1_FZ_DBG_TIM3_STOP /*!< TIM3 counter stopped when core is halted */
  191. #endif /*TIM3*/
  192. #if defined(TIM6)
  193. #define LL_DBGMCU_APB1_GRP1_TIM6_STOP DBGMCU_APB1_FZ_DBG_TIM6_STOP /*!< TIM6 counter stopped when core is halted */
  194. #endif /*TIM6*/
  195. #if defined(TIM7)
  196. #define LL_DBGMCU_APB1_GRP1_TIM7_STOP DBGMCU_APB1_FZ_DBG_TIM7_STOP /*!< TIM7 counter stopped when core is halted */
  197. #endif /*TIM7*/
  198. #define LL_DBGMCU_APB1_GRP1_RTC_STOP DBGMCU_APB1_FZ_DBG_RTC_STOP /*!< RTC Calendar frozen when core is halted */
  199. #define LL_DBGMCU_APB1_GRP1_WWDG_STOP DBGMCU_APB1_FZ_DBG_WWDG_STOP /*!< Debug Window Watchdog stopped when Core is halted */
  200. #define LL_DBGMCU_APB1_GRP1_IWDG_STOP DBGMCU_APB1_FZ_DBG_IWDG_STOP /*!< Debug Independent Watchdog stopped when Core is halted */
  201. #define LL_DBGMCU_APB1_GRP1_I2C1_STOP DBGMCU_APB1_FZ_DBG_I2C1_STOP /*!< I2C1 SMBUS timeout mode stopped when Core is halted */
  202. #if defined(I2C2)
  203. #define LL_DBGMCU_APB1_GRP1_I2C2_STOP DBGMCU_APB1_FZ_DBG_I2C2_STOP /*!< I2C2 SMBUS timeout mode stopped when Core is halted */
  204. #endif /*I2C2*/
  205. #if defined(I2C3)
  206. #define LL_DBGMCU_APB1_GRP1_I2C3_STOP DBGMCU_APB1_FZ_DBG_I2C3_STOP /*!< I2C3 SMBUS timeout mode stopped when Core is halted */
  207. #endif /*I2C3*/
  208. #define LL_DBGMCU_APB1_GRP1_LPTIM1_STOP DBGMCU_APB1_FZ_DBG_LPTIMER_STOP /*!< LPTIM1 counter stopped when core is halted */
  209. /**
  210. * @}
  211. */
  212. /** @defgroup SYSTEM_LL_EC_APB2_GRP1_STOP_IP DBGMCU APB2 GRP1 STOP IP
  213. * @{
  214. */
  215. #if defined(TIM22)
  216. #define LL_DBGMCU_APB2_GRP1_TIM22_STOP DBGMCU_APB2_FZ_DBG_TIM22_STOP /*!< TIM22 counter stopped when core is halted */
  217. #endif /*TIM22*/
  218. #define LL_DBGMCU_APB2_GRP1_TIM21_STOP DBGMCU_APB2_FZ_DBG_TIM21_STOP /*!< TIM21 counter stopped when core is halted */
  219. /**
  220. * @}
  221. */
  222. /** @defgroup SYSTEM_LL_EC_LATENCY FLASH LATENCY
  223. * @{
  224. */
  225. #define LL_FLASH_LATENCY_0 (0x00000000U) /*!< FLASH Zero Latency cycle */
  226. #define LL_FLASH_LATENCY_1 FLASH_ACR_LATENCY /*!< FLASH One Latency cycle */
  227. /**
  228. * @}
  229. */
  230. /**
  231. * @}
  232. */
  233. /* Exported macro ------------------------------------------------------------*/
  234. /* Exported functions --------------------------------------------------------*/
  235. /** @defgroup SYSTEM_LL_Exported_Functions SYSTEM Exported Functions
  236. * @{
  237. */
  238. /** @defgroup SYSTEM_LL_EF_SYSCFG SYSCFG
  239. * @{
  240. */
  241. /**
  242. * @brief Set memory mapping at address 0x00000000
  243. * @rmtoll SYSCFG_CFGR1 MEM_MODE LL_SYSCFG_SetRemapMemory
  244. * @param Memory This parameter can be one of the following values:
  245. * @arg @ref LL_SYSCFG_REMAP_FLASH
  246. * @arg @ref LL_SYSCFG_REMAP_SYSTEMFLASH
  247. * @arg @ref LL_SYSCFG_REMAP_SRAM
  248. * @retval None
  249. */
  250. __STATIC_INLINE void LL_SYSCFG_SetRemapMemory(uint32_t Memory)
  251. {
  252. MODIFY_REG(SYSCFG->CFGR1, SYSCFG_CFGR1_MEM_MODE, Memory);
  253. }
  254. /**
  255. * @brief Get memory mapping at address 0x00000000
  256. * @rmtoll SYSCFG_CFGR1 MEM_MODE LL_SYSCFG_GetRemapMemory
  257. * @retval Returned value can be one of the following values:
  258. * @arg @ref LL_SYSCFG_REMAP_FLASH
  259. * @arg @ref LL_SYSCFG_REMAP_SYSTEMFLASH
  260. * @arg @ref LL_SYSCFG_REMAP_SRAM
  261. */
  262. __STATIC_INLINE uint32_t LL_SYSCFG_GetRemapMemory(void)
  263. {
  264. return (uint32_t)(READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_MEM_MODE));
  265. }
  266. #if defined(SYSCFG_CFGR1_UFB)
  267. /**
  268. * @brief Select Flash bank mode (Bank flashed at 0x08000000)
  269. * @rmtoll SYSCFG_CFGR1 UFB LL_SYSCFG_SetFlashBankMode
  270. * @param Bank This parameter can be one of the following values:
  271. * @arg @ref LL_SYSCFG_BANKMODE_BANK1
  272. * @arg @ref LL_SYSCFG_BANKMODE_BANK2
  273. * @retval None
  274. */
  275. __STATIC_INLINE void LL_SYSCFG_SetFlashBankMode(uint32_t Bank)
  276. {
  277. MODIFY_REG(SYSCFG->CFGR1, SYSCFG_CFGR1_UFB, Bank);
  278. }
  279. /**
  280. * @brief Get Flash bank mode (Bank flashed at 0x08000000)
  281. * @rmtoll SYSCFG_CFGR1 UFB LL_SYSCFG_GetFlashBankMode
  282. * @retval Returned value can be one of the following values:
  283. * @arg @ref LL_SYSCFG_BANKMODE_BANK1
  284. * @arg @ref LL_SYSCFG_BANKMODE_BANK2
  285. */
  286. __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashBankMode(void)
  287. {
  288. return (uint32_t)(READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_UFB));
  289. }
  290. #endif /* SYSCFG_CFGR1_UFB */
  291. /**
  292. * @brief Get Boot mode selected by the boot pins status bits
  293. * @note It indicates the boot mode selected by the boot pins. Bit 9
  294. * corresponds to the complement of nBOOT1 bit in the FLASH_OPTR register.
  295. * Its value is defined in the option bytes. Bit 8 corresponds to the
  296. * value sampled on the BOOT0 pin.
  297. * @rmtoll SYSCFG_CFGR1 BOOT_MODE LL_SYSCFG_GetBootMode
  298. * @retval Returned value can be one of the following values:
  299. * @arg @ref LL_SYSCFG_BOOTMODE_FLASH
  300. * @arg @ref LL_SYSCFG_BOOTMODE_SYSTEMFLASH
  301. * @arg @ref LL_SYSCFG_BOOTMODE_SRAM
  302. */
  303. __STATIC_INLINE uint32_t LL_SYSCFG_GetBootMode(void)
  304. {
  305. return (uint32_t)(READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_BOOT_MODE));
  306. }
  307. /**
  308. * @brief Firewall protection enabled
  309. * @rmtoll SYSCFG_CFGR2 FWDIS LL_SYSCFG_EnableFirewall
  310. * @retval None
  311. */
  312. __STATIC_INLINE void LL_SYSCFG_EnableFirewall(void)
  313. {
  314. CLEAR_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_FWDISEN);
  315. }
  316. /**
  317. * @brief Check if Firewall protection is enabled or not
  318. * @rmtoll SYSCFG_CFGR2 FWDIS LL_SYSCFG_IsEnabledFirewall
  319. * @retval State of bit (1 or 0).
  320. */
  321. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledFirewall(void)
  322. {
  323. return !(READ_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_FWDISEN) == SYSCFG_CFGR2_FWDISEN);
  324. }
  325. #if defined(SYSCFG_CFGR2_CAPA)
  326. /**
  327. * @brief Set VLCD rail connection to optional external capacitor
  328. * @note One to three external capacitors can be connected to pads to do
  329. * VLCD biasing.
  330. * - LCD_VLCD1 rail can be connected to PB12 or PE11(*),
  331. * - LCD_VLCD2 rail can be connected to PB2,
  332. * - LCD_VLCD3 rail can be connected to PB0 or PE12(*)
  333. * @rmtoll SYSCFG_CFGR2 CAPA LL_SYSCFG_SetVLCDRailConnection
  334. * @param IoPinConnect This parameter can be a combination of the following values:
  335. * @arg @ref LL_SYSCFG_CAPA_VLCD1_PB12
  336. * @arg @ref LL_SYSCFG_CAPA_VLCD1_PE11(*)
  337. * @arg @ref LL_SYSCFG_CAPA_VLCD2_PB2
  338. * @arg @ref LL_SYSCFG_CAPA_VLCD3_PB0
  339. * @arg @ref LL_SYSCFG_CAPA_VLCD3_PE12(*)
  340. *
  341. * (*) value not defined in all devices
  342. * @retval None
  343. */
  344. __STATIC_INLINE void LL_SYSCFG_SetVLCDRailConnection(uint32_t IoPinConnect)
  345. {
  346. MODIFY_REG(SYSCFG->CFGR2, SYSCFG_CFGR2_CAPA, IoPinConnect);
  347. }
  348. /**
  349. * @brief Get VLCD rail connection configuration
  350. * @note One to three external capacitors can be connected to pads to do
  351. * VLCD biasing.
  352. * - LCD_VLCD1 rail can be connected to PB12 or PE11(*),
  353. * - LCD_VLCD2 rail can be connected to PB2,
  354. * - LCD_VLCD3 rail can be connected to PB0 or PE12(*)
  355. * @rmtoll SYSCFG_CFGR2 CAPA LL_SYSCFG_GetVLCDRailConnection
  356. * @retval Returned value can be a combination of the following values:
  357. * @arg @ref LL_SYSCFG_CAPA_VLCD1_PB12
  358. * @arg @ref LL_SYSCFG_CAPA_VLCD1_PE11(*)
  359. * @arg @ref LL_SYSCFG_CAPA_VLCD2_PB2
  360. * @arg @ref LL_SYSCFG_CAPA_VLCD3_PB0
  361. * @arg @ref LL_SYSCFG_CAPA_VLCD3_PE12(*)
  362. *
  363. * (*) value not defined in all devices
  364. */
  365. __STATIC_INLINE uint32_t LL_SYSCFG_GetVLCDRailConnection(void)
  366. {
  367. return (uint32_t)(READ_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_CAPA));
  368. }
  369. #endif
  370. /**
  371. * @brief Enable the I2C fast mode plus driving capability.
  372. * @rmtoll SYSCFG_CFGR2 I2C_PBx_FMP LL_SYSCFG_EnableFastModePlus\n
  373. * SYSCFG_CFGR2 I2Cx_FMP LL_SYSCFG_EnableFastModePlus
  374. * @param ConfigFastModePlus This parameter can be a combination of the following values:
  375. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6
  376. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7
  377. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8
  378. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9
  379. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1
  380. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*)
  381. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 (*)
  382. *
  383. * (*) value not defined in all devices
  384. * @retval None
  385. */
  386. __STATIC_INLINE void LL_SYSCFG_EnableFastModePlus(uint32_t ConfigFastModePlus)
  387. {
  388. SET_BIT(SYSCFG->CFGR2, ConfigFastModePlus);
  389. }
  390. /**
  391. * @brief Disable the I2C fast mode plus driving capability.
  392. * @rmtoll SYSCFG_CFGR2 I2C_PBx_FMP LL_SYSCFG_DisableFastModePlus\n
  393. * SYSCFG_CFGR2 I2Cx_FMP LL_SYSCFG_DisableFastModePlus
  394. * @param ConfigFastModePlus This parameter can be a combination of the following values:
  395. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6
  396. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7
  397. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8
  398. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9
  399. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1
  400. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*)
  401. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 (*)
  402. *
  403. * (*) value not defined in all devices
  404. * @retval None
  405. */
  406. __STATIC_INLINE void LL_SYSCFG_DisableFastModePlus(uint32_t ConfigFastModePlus)
  407. {
  408. CLEAR_BIT(SYSCFG->CFGR2, ConfigFastModePlus);
  409. }
  410. /**
  411. * @brief Select which pad is connected to VREFINT_ADC
  412. * @rmtoll SYSCFG_CFGR3 SEL_VREF_OUT LL_SYSCFG_VREFINT_SetConnection
  413. * @param IoPinConnect This parameter can be one of the following values:
  414. * @arg @ref LL_SYSCFG_VREFINT_CONNECT_NONE
  415. * @arg @ref LL_SYSCFG_VREFINT_CONNECT_IO1
  416. * @arg @ref LL_SYSCFG_VREFINT_CONNECT_IO2
  417. * @arg @ref LL_SYSCFG_VREFINT_CONNECT_IO1_IO2
  418. * @retval None
  419. */
  420. __STATIC_INLINE void LL_SYSCFG_VREFINT_SetConnection(uint32_t IoPinConnect)
  421. {
  422. MODIFY_REG(SYSCFG->CFGR3, SYSCFG_CFGR3_VREF_OUT, IoPinConnect);
  423. }
  424. /**
  425. * @brief Get pad connection to VREFINT_ADC
  426. * @rmtoll SYSCFG_CFGR3 SEL_VREF_OUT LL_SYSCFG_VREFINT_GetConnection
  427. * @retval Returned value can be one of the following values:
  428. * @arg @ref LL_SYSCFG_VREFINT_CONNECT_NONE
  429. * @arg @ref LL_SYSCFG_VREFINT_CONNECT_IO1
  430. * @arg @ref LL_SYSCFG_VREFINT_CONNECT_IO2
  431. * @arg @ref LL_SYSCFG_VREFINT_CONNECT_IO1_IO2
  432. */
  433. __STATIC_INLINE uint32_t LL_SYSCFG_VREFINT_GetConnection(void)
  434. {
  435. return (uint32_t)(READ_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_VREF_OUT));
  436. }
  437. /**
  438. * @brief Buffer used to generate VREFINT reference for ADC enable
  439. * @note The VrefInit buffer to ADC through internal path is also
  440. * enabled using function LL_ADC_SetCommonPathInternalCh()
  441. * with parameter LL_ADC_PATH_INTERNAL_VREFINT
  442. * @rmtoll SYSCFG_CFGR3 ENBUF_VREFINT_ADC LL_SYSCFG_VREFINT_EnableADC
  443. * @retval None
  444. */
  445. __STATIC_INLINE void LL_SYSCFG_VREFINT_EnableADC(void)
  446. {
  447. SET_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_ENBUF_VREFINT_ADC);
  448. }
  449. /**
  450. * @brief Buffer used to generate VREFINT reference for ADC disable
  451. * @rmtoll SYSCFG_CFGR3 ENBUF_VREFINT_ADC LL_SYSCFG_VREFINT_DisableADC
  452. * @retval None
  453. */
  454. __STATIC_INLINE void LL_SYSCFG_VREFINT_DisableADC(void)
  455. {
  456. CLEAR_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_ENBUF_VREFINT_ADC);
  457. }
  458. /**
  459. * @brief Buffer used to generate temperature sensor reference for ADC enable
  460. * @rmtoll SYSCFG_CFGR3 ENBUF_SENSOR_ADC LL_SYSCFG_TEMPSENSOR_Enable
  461. * @retval None
  462. */
  463. __STATIC_INLINE void LL_SYSCFG_TEMPSENSOR_Enable(void)
  464. {
  465. SET_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_ENBUF_SENSOR_ADC);
  466. }
  467. /**
  468. * @brief Buffer used to generate temperature sensor reference for ADC disable
  469. * @rmtoll SYSCFG_CFGR3 ENBUF_SENSOR_ADC LL_SYSCFG_TEMPSENSOR_Disable
  470. * @retval None
  471. */
  472. __STATIC_INLINE void LL_SYSCFG_TEMPSENSOR_Disable(void)
  473. {
  474. CLEAR_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_ENBUF_SENSOR_ADC);
  475. }
  476. /**
  477. * @brief Buffer used to generate VREFINT reference for comparator enable
  478. * @rmtoll SYSCFG_CFGR3 ENBUF_VREFINT_COMP LL_SYSCFG_VREFINT_EnableCOMP
  479. * @retval None
  480. */
  481. __STATIC_INLINE void LL_SYSCFG_VREFINT_EnableCOMP(void)
  482. {
  483. SET_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_ENBUFLP_VREFINT_COMP);
  484. }
  485. /**
  486. * @brief Buffer used to generate VREFINT reference for comparator disable
  487. * @rmtoll SYSCFG_CFGR3 ENBUF_VREFINT_COMP LL_SYSCFG_VREFINT_DisableCOMP
  488. * @retval None
  489. */
  490. __STATIC_INLINE void LL_SYSCFG_VREFINT_DisableCOMP(void)
  491. {
  492. CLEAR_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_ENBUFLP_VREFINT_COMP);
  493. }
  494. #if defined (RCC_HSI48_SUPPORT)
  495. /**
  496. * @brief Buffer used to generate VREFINT reference for HSI48 oscillator enable
  497. * @rmtoll SYSCFG_CFGR3 ENREF_HSI48 LL_SYSCFG_VREFINT_EnableHSI48
  498. * @retval None
  499. */
  500. __STATIC_INLINE void LL_SYSCFG_VREFINT_EnableHSI48(void)
  501. {
  502. SET_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_ENREF_HSI48);
  503. }
  504. /**
  505. * @brief Buffer used to generate VREFINT reference for HSI48 oscillator disable
  506. * @rmtoll SYSCFG_CFGR3 ENREF_HSI48 LL_SYSCFG_VREFINT_DisableHSI48
  507. * @retval None
  508. */
  509. __STATIC_INLINE void LL_SYSCFG_VREFINT_DisableHSI48(void)
  510. {
  511. CLEAR_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_ENREF_HSI48);
  512. }
  513. #endif
  514. /**
  515. * @brief Check if VREFINT is ready or not
  516. * @note When set, it indicates that VREFINT is available for BOR, PVD and LCD
  517. * @rmtoll SYSCFG_CFGR3 VREFINT_RDYF LL_SYSCFG_VREFINT_IsReady
  518. * @retval State of bit (1 or 0).
  519. */
  520. __STATIC_INLINE uint32_t LL_SYSCFG_VREFINT_IsReady(void)
  521. {
  522. return (READ_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_VREFINT_RDYF) == SYSCFG_CFGR3_VREFINT_RDYF);
  523. }
  524. /**
  525. * @brief Lock the whole content of SYSCFG_CFGR3 register
  526. * @note After SYSCFG_CFGR3 register lock, only read access available.
  527. * Only system hardware reset unlocks SYSCFG_CFGR3 register.
  528. * @rmtoll SYSCFG_CFGR3 REF_LOCK LL_SYSCFG_VREFINT_Lock
  529. * @retval None
  530. */
  531. __STATIC_INLINE void LL_SYSCFG_VREFINT_Lock(void)
  532. {
  533. SET_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_REF_LOCK);
  534. }
  535. /**
  536. * @brief Check if SYSCFG_CFGR3 register is locked (only read access) or not
  537. * @note When set, it indicates that SYSCFG_CFGR3 register is locked, only read access available
  538. * @rmtoll SYSCFG_CFGR3 REF_LOCK LL_SYSCFG_VREFINT_IsLocked
  539. * @retval State of bit (1 or 0).
  540. */
  541. __STATIC_INLINE uint32_t LL_SYSCFG_VREFINT_IsLocked(void)
  542. {
  543. return (READ_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_REF_LOCK) == SYSCFG_CFGR3_REF_LOCK);
  544. }
  545. /**
  546. * @brief Configure source input for the EXTI external interrupt.
  547. * @rmtoll SYSCFG_EXTICR1 EXTI0 LL_SYSCFG_SetEXTISource\n
  548. * SYSCFG_EXTICR1 EXTI1 LL_SYSCFG_SetEXTISource\n
  549. * SYSCFG_EXTICR1 EXTI2 LL_SYSCFG_SetEXTISource\n
  550. * SYSCFG_EXTICR1 EXTI3 LL_SYSCFG_SetEXTISource\n
  551. * SYSCFG_EXTICR2 EXTI4 LL_SYSCFG_SetEXTISource\n
  552. * SYSCFG_EXTICR2 EXTI5 LL_SYSCFG_SetEXTISource\n
  553. * SYSCFG_EXTICR2 EXTI6 LL_SYSCFG_SetEXTISource\n
  554. * SYSCFG_EXTICR2 EXTI7 LL_SYSCFG_SetEXTISource\n
  555. * SYSCFG_EXTICR3 EXTI8 LL_SYSCFG_SetEXTISource\n
  556. * SYSCFG_EXTICR3 EXTI9 LL_SYSCFG_SetEXTISource\n
  557. * SYSCFG_EXTICR3 EXTI10 LL_SYSCFG_SetEXTISource\n
  558. * SYSCFG_EXTICR3 EXTI11 LL_SYSCFG_SetEXTISource\n
  559. * SYSCFG_EXTICR4 EXTI12 LL_SYSCFG_SetEXTISource\n
  560. * SYSCFG_EXTICR4 EXTI13 LL_SYSCFG_SetEXTISource\n
  561. * SYSCFG_EXTICR4 EXTI14 LL_SYSCFG_SetEXTISource\n
  562. * SYSCFG_EXTICR4 EXTI15 LL_SYSCFG_SetEXTISource
  563. * @param Port This parameter can be one of the following values:
  564. * @arg @ref LL_SYSCFG_EXTI_PORTA
  565. * @arg @ref LL_SYSCFG_EXTI_PORTB
  566. * @arg @ref LL_SYSCFG_EXTI_PORTC
  567. * @arg @ref LL_SYSCFG_EXTI_PORTD (*)
  568. * @arg @ref LL_SYSCFG_EXTI_PORTE (*)
  569. * @arg @ref LL_SYSCFG_EXTI_PORTH (*)
  570. *
  571. * (*) value not defined in all devices
  572. * @param Line This parameter can be one of the following values:
  573. * @arg @ref LL_SYSCFG_EXTI_LINE0
  574. * @arg @ref LL_SYSCFG_EXTI_LINE1
  575. * @arg @ref LL_SYSCFG_EXTI_LINE2
  576. * @arg @ref LL_SYSCFG_EXTI_LINE3
  577. * @arg @ref LL_SYSCFG_EXTI_LINE4
  578. * @arg @ref LL_SYSCFG_EXTI_LINE5
  579. * @arg @ref LL_SYSCFG_EXTI_LINE6
  580. * @arg @ref LL_SYSCFG_EXTI_LINE7
  581. * @arg @ref LL_SYSCFG_EXTI_LINE8
  582. * @arg @ref LL_SYSCFG_EXTI_LINE9
  583. * @arg @ref LL_SYSCFG_EXTI_LINE10
  584. * @arg @ref LL_SYSCFG_EXTI_LINE11
  585. * @arg @ref LL_SYSCFG_EXTI_LINE12
  586. * @arg @ref LL_SYSCFG_EXTI_LINE13
  587. * @arg @ref LL_SYSCFG_EXTI_LINE14
  588. * @arg @ref LL_SYSCFG_EXTI_LINE15
  589. * @retval None
  590. */
  591. __STATIC_INLINE void LL_SYSCFG_SetEXTISource(uint32_t Port, uint32_t Line)
  592. {
  593. MODIFY_REG(SYSCFG->EXTICR[Line & 0xFFU], SYSCFG_EXTICR1_EXTI0 << (Line >> 16U), Port << (Line >> 16U));
  594. }
  595. /**
  596. * @brief Get the configured defined for specific EXTI Line
  597. * @rmtoll SYSCFG_EXTICR1 EXTI0 LL_SYSCFG_SetEXTISource\n
  598. * SYSCFG_EXTICR1 EXTI1 LL_SYSCFG_SetEXTISource\n
  599. * SYSCFG_EXTICR1 EXTI2 LL_SYSCFG_SetEXTISource\n
  600. * SYSCFG_EXTICR1 EXTI3 LL_SYSCFG_SetEXTISource\n
  601. * SYSCFG_EXTICR2 EXTI4 LL_SYSCFG_SetEXTISource\n
  602. * SYSCFG_EXTICR2 EXTI5 LL_SYSCFG_SetEXTISource\n
  603. * SYSCFG_EXTICR2 EXTI6 LL_SYSCFG_SetEXTISource\n
  604. * SYSCFG_EXTICR2 EXTI7 LL_SYSCFG_SetEXTISource\n
  605. * SYSCFG_EXTICR3 EXTI8 LL_SYSCFG_SetEXTISource\n
  606. * SYSCFG_EXTICR3 EXTI9 LL_SYSCFG_SetEXTISource\n
  607. * SYSCFG_EXTICR3 EXTI10 LL_SYSCFG_SetEXTISource\n
  608. * SYSCFG_EXTICR3 EXTI11 LL_SYSCFG_SetEXTISource\n
  609. * SYSCFG_EXTICR4 EXTI12 LL_SYSCFG_SetEXTISource\n
  610. * SYSCFG_EXTICR4 EXTI13 LL_SYSCFG_SetEXTISource\n
  611. * SYSCFG_EXTICR4 EXTI14 LL_SYSCFG_SetEXTISource\n
  612. * SYSCFG_EXTICR4 EXTI15 LL_SYSCFG_SetEXTISource
  613. * @param Line This parameter can be one of the following values:
  614. * @arg @ref LL_SYSCFG_EXTI_LINE0
  615. * @arg @ref LL_SYSCFG_EXTI_LINE1
  616. * @arg @ref LL_SYSCFG_EXTI_LINE2
  617. * @arg @ref LL_SYSCFG_EXTI_LINE3
  618. * @arg @ref LL_SYSCFG_EXTI_LINE4
  619. * @arg @ref LL_SYSCFG_EXTI_LINE5
  620. * @arg @ref LL_SYSCFG_EXTI_LINE6
  621. * @arg @ref LL_SYSCFG_EXTI_LINE7
  622. * @arg @ref LL_SYSCFG_EXTI_LINE8
  623. * @arg @ref LL_SYSCFG_EXTI_LINE9
  624. * @arg @ref LL_SYSCFG_EXTI_LINE10
  625. * @arg @ref LL_SYSCFG_EXTI_LINE11
  626. * @arg @ref LL_SYSCFG_EXTI_LINE12
  627. * @arg @ref LL_SYSCFG_EXTI_LINE13
  628. * @arg @ref LL_SYSCFG_EXTI_LINE14
  629. * @arg @ref LL_SYSCFG_EXTI_LINE15
  630. * @retval Returned value 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_PORTH (*)
  637. *
  638. * (*) value not defined in all devices
  639. */
  640. __STATIC_INLINE uint32_t LL_SYSCFG_GetEXTISource(uint32_t Line)
  641. {
  642. return (uint32_t)(READ_BIT(SYSCFG->EXTICR[Line & 0xFFU], (SYSCFG_EXTICR1_EXTI0 << (Line >> 16U))) >> (Line >> 16U));
  643. }
  644. /**
  645. * @}
  646. */
  647. /** @defgroup SYSTEM_LL_EF_DBGMCU DBGMCU
  648. * @{
  649. */
  650. /**
  651. * @brief Return the device identifier
  652. * @rmtoll DBGMCU_IDCODE DEV_ID LL_DBGMCU_GetDeviceID
  653. * @retval Values between Min_Data=0x00 and Max_Data=0x7FF (ex: L053 -> 0x417, L073 -> 0x447)
  654. */
  655. __STATIC_INLINE uint32_t LL_DBGMCU_GetDeviceID(void)
  656. {
  657. return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_DEV_ID));
  658. }
  659. /**
  660. * @brief Return the device revision identifier
  661. * @note This field indicates the revision of the device.
  662. * @rmtoll DBGMCU_IDCODE REV_ID LL_DBGMCU_GetRevisionID
  663. * @retval Values between Min_Data=0x00 and Max_Data=0xFFFF
  664. */
  665. __STATIC_INLINE uint32_t LL_DBGMCU_GetRevisionID(void)
  666. {
  667. return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_REV_ID) >> DBGMCU_IDCODE_REV_ID_Pos);
  668. }
  669. /**
  670. * @brief Enable the Debug Module during SLEEP mode
  671. * @rmtoll DBGMCU_CR DBG_SLEEP LL_DBGMCU_EnableDBGSleepMode
  672. * @retval None
  673. */
  674. __STATIC_INLINE void LL_DBGMCU_EnableDBGSleepMode(void)
  675. {
  676. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP);
  677. }
  678. /**
  679. * @brief Disable the Debug Module during SLEEP mode
  680. * @rmtoll DBGMCU_CR DBG_SLEEP LL_DBGMCU_DisableDBGSleepMode
  681. * @retval None
  682. */
  683. __STATIC_INLINE void LL_DBGMCU_DisableDBGSleepMode(void)
  684. {
  685. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP);
  686. }
  687. /**
  688. * @brief Enable the Debug Module during STOP mode
  689. * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_EnableDBGStopMode
  690. * @retval None
  691. */
  692. __STATIC_INLINE void LL_DBGMCU_EnableDBGStopMode(void)
  693. {
  694. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
  695. }
  696. /**
  697. * @brief Disable the Debug Module during STOP mode
  698. * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_DisableDBGStopMode
  699. * @retval None
  700. */
  701. __STATIC_INLINE void LL_DBGMCU_DisableDBGStopMode(void)
  702. {
  703. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
  704. }
  705. /**
  706. * @brief Enable the Debug Module during STANDBY mode
  707. * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_EnableDBGStandbyMode
  708. * @retval None
  709. */
  710. __STATIC_INLINE void LL_DBGMCU_EnableDBGStandbyMode(void)
  711. {
  712. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);
  713. }
  714. /**
  715. * @brief Disable the Debug Module during STANDBY mode
  716. * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_DisableDBGStandbyMode
  717. * @retval None
  718. */
  719. __STATIC_INLINE void LL_DBGMCU_DisableDBGStandbyMode(void)
  720. {
  721. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY);
  722. }
  723. /**
  724. * @brief Freeze APB1 peripherals (group1 peripherals)
  725. * @rmtoll APB1FZ DBG_TIM2_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  726. * APB1FZ DBG_TIM3_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  727. * APB1FZ DBG_TIM6_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  728. * APB1FZ DBG_TIM7_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  729. * APB1FZ DBG_RTC_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  730. * APB1FZ DBG_WWDG_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  731. * APB1FZ DBG_IWDG_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  732. * APB1FZ DBG_I2C1_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  733. * APB1FZ DBG_I2C2_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  734. * APB1FZ DBG_I2C3_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  735. * APB1FZ DBG_LPTIMER_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph
  736. * @param Periphs This parameter can be a combination of the following values:
  737. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP
  738. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP (*)
  739. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP (*)
  740. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP (*)
  741. * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP
  742. * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP
  743. * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP
  744. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP
  745. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP (*)
  746. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP (*)
  747. * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP
  748. *
  749. * (*) value not defined in all devices
  750. * @retval None
  751. */
  752. __STATIC_INLINE void LL_DBGMCU_APB1_GRP1_FreezePeriph(uint32_t Periphs)
  753. {
  754. SET_BIT(DBGMCU->APB1FZ, Periphs);
  755. }
  756. /**
  757. * @brief Unfreeze APB1 peripherals (group1 peripherals)
  758. * @rmtoll APB1FZ DBG_TIM2_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n
  759. * APB1FZ DBG_TIM3_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n
  760. * APB1FZ DBG_TIM6_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n
  761. * APB1FZ DBG_TIM7_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n
  762. * APB1FZ DBG_RTC_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n
  763. * APB1FZ DBG_WWDG_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n
  764. * APB1FZ DBG_IWDG_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n
  765. * APB1FZ DBG_I2C1_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n
  766. * APB1FZ DBG_I2C2_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n
  767. * APB1FZ DBG_I2C3_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n
  768. * APB1FZ DBG_LPTIMER_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph
  769. * @param Periphs This parameter can be a combination of the following values:
  770. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP
  771. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP (*)
  772. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP (*)
  773. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP (*)
  774. * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP
  775. * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP
  776. * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP
  777. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP
  778. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP (*)
  779. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP (*)
  780. * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP
  781. *
  782. * (*) value not defined in all devices
  783. * @retval None
  784. */
  785. __STATIC_INLINE void LL_DBGMCU_APB1_GRP1_UnFreezePeriph(uint32_t Periphs)
  786. {
  787. CLEAR_BIT(DBGMCU->APB1FZ, Periphs);
  788. }
  789. /**
  790. * @brief Freeze APB2 peripherals
  791. * @rmtoll APB2FZ DBG_TIM22_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n
  792. * APB2FZ DBG_TIM21_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph
  793. * @param Periphs This parameter can be a combination of the following values:
  794. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM22_STOP (*)
  795. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM21_STOP
  796. *
  797. * (*) value not defined in all devices
  798. * @retval None
  799. */
  800. __STATIC_INLINE void LL_DBGMCU_APB2_GRP1_FreezePeriph(uint32_t Periphs)
  801. {
  802. SET_BIT(DBGMCU->APB2FZ, Periphs);
  803. }
  804. /**
  805. * @brief Unfreeze APB2 peripherals
  806. * @rmtoll APB2FZ DBG_TIM22_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n
  807. * APB2FZ DBG_TIM21_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph
  808. * @param Periphs This parameter can be a combination of the following values:
  809. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM22_STOP (*)
  810. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM21_STOP
  811. *
  812. * (*) value not defined in all devices
  813. * @retval None
  814. */
  815. __STATIC_INLINE void LL_DBGMCU_APB2_GRP1_UnFreezePeriph(uint32_t Periphs)
  816. {
  817. CLEAR_BIT(DBGMCU->APB2FZ, Periphs);
  818. }
  819. /**
  820. * @}
  821. */
  822. /** @defgroup SYSTEM_LL_EF_FLASH FLASH
  823. * @{
  824. */
  825. /**
  826. * @brief Set FLASH Latency
  827. * @rmtoll FLASH_ACR LATENCY LL_FLASH_SetLatency
  828. * @param Latency This parameter can be one of the following values:
  829. * @arg @ref LL_FLASH_LATENCY_0
  830. * @arg @ref LL_FLASH_LATENCY_1
  831. * @retval None
  832. */
  833. __STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency)
  834. {
  835. MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency);
  836. }
  837. /**
  838. * @brief Get FLASH Latency
  839. * @rmtoll FLASH_ACR LATENCY LL_FLASH_GetLatency
  840. * @retval Returned value can be one of the following values:
  841. * @arg @ref LL_FLASH_LATENCY_0
  842. * @arg @ref LL_FLASH_LATENCY_1
  843. */
  844. __STATIC_INLINE uint32_t LL_FLASH_GetLatency(void)
  845. {
  846. return (uint32_t)(READ_BIT(FLASH->ACR, FLASH_ACR_LATENCY));
  847. }
  848. /**
  849. * @brief Enable Prefetch
  850. * @rmtoll FLASH_ACR PRFTEN LL_FLASH_EnablePrefetch
  851. * @retval None
  852. */
  853. __STATIC_INLINE void LL_FLASH_EnablePrefetch(void)
  854. {
  855. SET_BIT(FLASH->ACR, FLASH_ACR_PRFTEN);
  856. }
  857. /**
  858. * @brief Disable Prefetch
  859. * @rmtoll FLASH_ACR PRFTEN LL_FLASH_DisablePrefetch
  860. * @retval None
  861. */
  862. __STATIC_INLINE void LL_FLASH_DisablePrefetch(void)
  863. {
  864. CLEAR_BIT(FLASH->ACR, FLASH_ACR_PRFTEN);
  865. }
  866. /**
  867. * @brief Check if Prefetch buffer is enabled
  868. * @rmtoll FLASH_ACR PRFTEN LL_FLASH_IsPrefetchEnabled
  869. * @retval State of bit (1 or 0).
  870. */
  871. __STATIC_INLINE uint32_t LL_FLASH_IsPrefetchEnabled(void)
  872. {
  873. return (READ_BIT(FLASH->ACR, FLASH_ACR_PRFTEN) == (FLASH_ACR_PRFTEN));
  874. }
  875. /**
  876. * @brief Enable Flash Power-down mode during run mode or Low-power run mode
  877. * @note Flash memory can be put in power-down mode only when the code is executed
  878. * from RAM
  879. * @note Flash must not be accessed when power down is enabled
  880. * @note Flash must not be put in power-down while a program or an erase operation
  881. * is on-going
  882. * @rmtoll FLASH_ACR RUN_PD LL_FLASH_EnableRunPowerDown\n
  883. * FLASH_PDKEYR PDKEY1 LL_FLASH_EnableRunPowerDown\n
  884. * FLASH_PDKEYR PDKEY2 LL_FLASH_EnableRunPowerDown
  885. * @retval None
  886. */
  887. __STATIC_INLINE void LL_FLASH_EnableRunPowerDown(void)
  888. {
  889. /* Following values must be written consecutively to unlock the RUN_PD bit in
  890. FLASH_ACR */
  891. WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY1);
  892. WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY2);
  893. SET_BIT(FLASH->ACR, FLASH_ACR_RUN_PD);
  894. }
  895. /**
  896. * @brief Disable Flash Power-down mode during run mode or Low-power run mode
  897. * @rmtoll FLASH_ACR RUN_PD LL_FLASH_DisableRunPowerDown\n
  898. * FLASH_PDKEYR PDKEY1 LL_FLASH_DisableRunPowerDown\n
  899. * FLASH_PDKEYR PDKEY2 LL_FLASH_DisableRunPowerDown
  900. * @retval None
  901. */
  902. __STATIC_INLINE void LL_FLASH_DisableRunPowerDown(void)
  903. {
  904. /* Following values must be written consecutively to unlock the RUN_PD bit in
  905. FLASH_ACR */
  906. WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY1);
  907. WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY2);
  908. CLEAR_BIT(FLASH->ACR, FLASH_ACR_RUN_PD);
  909. }
  910. /**
  911. * @brief Enable Flash Power-down mode during Sleep or Low-power sleep mode
  912. * @note Flash must not be put in power-down while a program or an erase operation
  913. * is on-going
  914. * @rmtoll FLASH_ACR SLEEP_PD LL_FLASH_EnableSleepPowerDown
  915. * @retval None
  916. */
  917. __STATIC_INLINE void LL_FLASH_EnableSleepPowerDown(void)
  918. {
  919. SET_BIT(FLASH->ACR, FLASH_ACR_SLEEP_PD);
  920. }
  921. /**
  922. * @brief Disable Flash Power-down mode during Sleep or Low-power sleep mode
  923. * @rmtoll FLASH_ACR SLEEP_PD LL_FLASH_DisableSleepPowerDown
  924. * @retval None
  925. */
  926. __STATIC_INLINE void LL_FLASH_DisableSleepPowerDown(void)
  927. {
  928. CLEAR_BIT(FLASH->ACR, FLASH_ACR_SLEEP_PD);
  929. }
  930. /**
  931. * @brief Enable buffers used as a cache during read access
  932. * @rmtoll FLASH_ACR DISAB_BUF LL_FLASH_EnableBuffers
  933. * @retval None
  934. */
  935. __STATIC_INLINE void LL_FLASH_EnableBuffers(void)
  936. {
  937. CLEAR_BIT(FLASH->ACR, FLASH_ACR_DISAB_BUF);
  938. }
  939. /**
  940. * @brief Disable buffers used as a cache during read access
  941. * @note When disabled, every read will access the NVM even for
  942. * an address already read (for example, the previous address).
  943. * @rmtoll FLASH_ACR DISAB_BUF LL_FLASH_DisableBuffers
  944. * @retval None
  945. */
  946. __STATIC_INLINE void LL_FLASH_DisableBuffers(void)
  947. {
  948. SET_BIT(FLASH->ACR, FLASH_ACR_DISAB_BUF);
  949. }
  950. /**
  951. * @brief Enable pre-read
  952. * @note When enabled, the memory interface stores the last address
  953. * read as data and tries to read the next one when no other
  954. * read or write or prefetch operation is ongoing.
  955. * It is automatically disabled every time the buffers are disabled.
  956. * @rmtoll FLASH_ACR PRE_READ LL_FLASH_EnablePreRead
  957. * @retval None
  958. */
  959. __STATIC_INLINE void LL_FLASH_EnablePreRead(void)
  960. {
  961. SET_BIT(FLASH->ACR, FLASH_ACR_PRE_READ);
  962. }
  963. /**
  964. * @brief Disable pre-read
  965. * @rmtoll FLASH_ACR PRE_READ LL_FLASH_DisablePreRead
  966. * @retval None
  967. */
  968. __STATIC_INLINE void LL_FLASH_DisablePreRead(void)
  969. {
  970. CLEAR_BIT(FLASH->ACR, FLASH_ACR_PRE_READ);
  971. }
  972. /**
  973. * @}
  974. */
  975. /**
  976. * @}
  977. */
  978. /**
  979. * @}
  980. */
  981. #endif /* defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) */
  982. /**
  983. * @}
  984. */
  985. #ifdef __cplusplus
  986. }
  987. #endif
  988. #endif /* __STM32L0xx_LL_SYSTEM_H */