You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1090 lines
41 KiB

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