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.
 
 
 

2003 lines
78 KiB

  1. /**
  2. ******************************************************************************
  3. * @file stm32h7xx_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) 2017 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 __STM32H7xx_LL_SYSTEM_H
  32. #define __STM32H7xx_LL_SYSTEM_H
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36. /* Includes ------------------------------------------------------------------*/
  37. #include "stm32h7xx.h"
  38. /** @addtogroup STM32H7xx_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. /** @defgroup SYSTEM_LL_EC_FLASH_BANK1_SECTORS SYSCFG Flash Bank1 sectors bits status
  52. * @{
  53. */
  54. #define LL_SYSCFG_FLASH_B1_SECTOR0_STATUS_BIT 0x10000U
  55. #define LL_SYSCFG_FLASH_B1_SECTOR1_STATUS_BIT 0x20000U
  56. #define LL_SYSCFG_FLASH_B1_SECTOR2_STATUS_BIT 0x40000U
  57. #define LL_SYSCFG_FLASH_B1_SECTOR3_STATUS_BIT 0x80000U
  58. #define LL_SYSCFG_FLASH_B1_SECTOR4_STATUS_BIT 0x100000U
  59. #define LL_SYSCFG_FLASH_B1_SECTOR5_STATUS_BIT 0x200000U
  60. #define LL_SYSCFG_FLASH_B1_SECTOR6_STATUS_BIT 0x400000U
  61. #define LL_SYSCFG_FLASH_B1_SECTOR7_STATUS_BIT 0x800000U
  62. /**
  63. * @}
  64. */
  65. /** @defgroup SYSTEM_LL_EC_FLASH_BANK2_SECTORS SYSCFG Flash Bank2 sectors bits status
  66. * @{
  67. */
  68. #define LL_SYSCFG_FLASH_B2_SECTOR0_STATUS_BIT 0x10000U
  69. #define LL_SYSCFG_FLASH_B2_SECTOR1_STATUS_BIT 0x20000U
  70. #define LL_SYSCFG_FLASH_B2_SECTOR2_STATUS_BIT 0x40000U
  71. #define LL_SYSCFG_FLASH_B2_SECTOR3_STATUS_BIT 0x80000U
  72. #define LL_SYSCFG_FLASH_B2_SECTOR4_STATUS_BIT 0x100000U
  73. #define LL_SYSCFG_FLASH_B2_SECTOR5_STATUS_BIT 0x200000U
  74. #define LL_SYSCFG_FLASH_B2_SECTOR6_STATUS_BIT 0x400000U
  75. #define LL_SYSCFG_FLASH_B2_SECTOR7_STATUS_BIT 0x800000U
  76. /**
  77. * @}
  78. */
  79. /**
  80. * @}
  81. */
  82. /* Private macros ------------------------------------------------------------*/
  83. /* Exported types ------------------------------------------------------------*/
  84. /* Exported constants --------------------------------------------------------*/
  85. /** @defgroup SYSTEM_LL_Exported_Constants SYSTEM Exported Constants
  86. * @{
  87. */
  88. /** @defgroup SYSTEM_LL_EC_I2C_FASTMODEPLUS SYSCFG I2C FASTMODEPLUS
  89. * @{
  90. */
  91. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 SYSCFG_PMCR_I2C1_FMP /*!< Enable Fast Mode Plus for I2C1 */
  92. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 SYSCFG_PMCR_I2C2_FMP /*!< Enable Fast Mode Plus for I2C2 */
  93. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 SYSCFG_PMCR_I2C3_FMP /*!< Enable Fast Mode Plus for I2C3 */
  94. #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C4 SYSCFG_PMCR_I2C4_FMP /*!< Enable Fast Mode Plus for I2C4 */
  95. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB6 SYSCFG_PMCR_I2C_PB6_FMP /*!< Enable Fast Mode Plus on PB6 */
  96. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB7 SYSCFG_PMCR_I2C_PB7_FMP /*!< Enable Fast Mode Plus on PB7 */
  97. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB8 SYSCFG_PMCR_I2C_PB8_FMP /*!< Enable Fast Mode Plus on PB8 */
  98. #define LL_SYSCFG_I2C_FASTMODEPLUS_PB9 SYSCFG_PMCR_I2C_PB9_FMP /*!< Enable Fast Mode Plus on PB9 */
  99. /**
  100. * @}
  101. */
  102. /** @defgroup SYSTEM_LL_EC_ANALOG_SWITCH Analog Switch control
  103. * @{
  104. */
  105. #define LL_SYSCFG_ANALOG_SWITCH_BOOSTEN SYSCFG_PMCR_BOOSTEN /*!< I/O analog switch voltage booster enable */
  106. #define LL_SYSCFG_ANALOG_SWITCH_PA0 SYSCFG_PMCR_PA0SO /*!< PA0 Switch Open */
  107. #define LL_SYSCFG_ANALOG_SWITCH_PA1 SYSCFG_PMCR_PA1SO /*!< PA1 Switch Open */
  108. #define LL_SYSCFG_ANALOG_SWITCH_PC2 SYSCFG_PMCR_PC2SO /*!< PC2 Switch Open */
  109. #define LL_SYSCFG_ANALOG_SWITCH_PC3 SYSCFG_PMCR_PC3SO /*!< PC3 Switch Open */
  110. /**
  111. * @}
  112. */
  113. /** @defgroup SYSTEM_LL_EC_EPIS Ethernet PHY Interface Selection
  114. * @{
  115. */
  116. #define LL_SYSCFG_ETH_MII 0x00000000U /*!< ETH Media MII interface */
  117. #define LL_SYSCFG_ETH_RMII SYSCFG_PMCR_EPIS_SEL /*!< ETH Media RMII interface */
  118. /**
  119. * @}
  120. */
  121. /** @defgroup SYSTEM_LL_EC_EXTI_PORT SYSCFG EXTI PORT
  122. * @{
  123. */
  124. #define LL_SYSCFG_EXTI_PORTA 0U /*!< EXTI PORT A */
  125. #define LL_SYSCFG_EXTI_PORTB 1U /*!< EXTI PORT B */
  126. #define LL_SYSCFG_EXTI_PORTC 2U /*!< EXTI PORT C */
  127. #define LL_SYSCFG_EXTI_PORTD 3U /*!< EXTI PORT D */
  128. #define LL_SYSCFG_EXTI_PORTE 4U /*!< EXTI PORT E */
  129. #define LL_SYSCFG_EXTI_PORTF 5U /*!< EXTI PORT F */
  130. #define LL_SYSCFG_EXTI_PORTG 6U /*!< EXTI PORT G */
  131. #define LL_SYSCFG_EXTI_PORTH 7U /*!< EXTI PORT H */
  132. #define LL_SYSCFG_EXTI_PORTI 8U /*!< EXTI PORT I */
  133. #define LL_SYSCFG_EXTI_PORTJ 9U /*!< EXTI PORT J */
  134. #define LL_SYSCFG_EXTI_PORTK 10U /*!< EXTI PORT k */
  135. /**
  136. * @}
  137. */
  138. /** @defgroup SYSTEM_LL_EC_EXTI_LINE SYSCFG EXTI LINE
  139. * @{
  140. */
  141. #define LL_SYSCFG_EXTI_LINE0 ((0x000FUL << 16U) | 0U) /*!< EXTI_POSITION_0 | EXTICR[0] */
  142. #define LL_SYSCFG_EXTI_LINE1 ((0x00F0UL << 16U) | 0U) /*!< EXTI_POSITION_4 | EXTICR[0] */
  143. #define LL_SYSCFG_EXTI_LINE2 ((0x0F00UL << 16U) | 0U) /*!< EXTI_POSITION_8 | EXTICR[0] */
  144. #define LL_SYSCFG_EXTI_LINE3 ((0xF000UL << 16U) | 0U) /*!< EXTI_POSITION_12 | EXTICR[0] */
  145. #define LL_SYSCFG_EXTI_LINE4 ((0x000FUL << 16U) | 1U) /*!< EXTI_POSITION_0 | EXTICR[1] */
  146. #define LL_SYSCFG_EXTI_LINE5 ((0x00F0UL << 16U) | 1U) /*!< EXTI_POSITION_4 | EXTICR[1] */
  147. #define LL_SYSCFG_EXTI_LINE6 ((0x0F00UL << 16U) | 1U) /*!< EXTI_POSITION_8 | EXTICR[1] */
  148. #define LL_SYSCFG_EXTI_LINE7 ((0xF000UL << 16U) | 1U) /*!< EXTI_POSITION_12 | EXTICR[1] */
  149. #define LL_SYSCFG_EXTI_LINE8 ((0x000FUL << 16U) | 2U) /*!< EXTI_POSITION_0 | EXTICR[2] */
  150. #define LL_SYSCFG_EXTI_LINE9 ((0x00F0UL << 16U) | 2U) /*!< EXTI_POSITION_4 | EXTICR[2] */
  151. #define LL_SYSCFG_EXTI_LINE10 ((0x0F00UL << 16U) | 2U) /*!< EXTI_POSITION_8 | EXTICR[2] */
  152. #define LL_SYSCFG_EXTI_LINE11 ((0xF000UL << 16U) | 2U) /*!< EXTI_POSITION_12 | EXTICR[2] */
  153. #define LL_SYSCFG_EXTI_LINE12 ((0x000FUL << 16U) | 3U) /*!< EXTI_POSITION_0 | EXTICR[3] */
  154. #define LL_SYSCFG_EXTI_LINE13 ((0x00F0UL << 16U) | 3U) /*!< EXTI_POSITION_4 | EXTICR[3] */
  155. #define LL_SYSCFG_EXTI_LINE14 ((0x0F00UL << 16U) | 3U) /*!< EXTI_POSITION_8 | EXTICR[3] */
  156. #define LL_SYSCFG_EXTI_LINE15 ((0xF000UL << 16U) | 3U) /*!< EXTI_POSITION_12 | EXTICR[3] */
  157. /**
  158. * @}
  159. */
  160. /** @defgroup SYSTEM_LL_EC_TIMBREAK SYSCFG TIMER BREAK
  161. * @{
  162. */
  163. #define LL_SYSCFG_TIMBREAK_AXISRAM_DBL_ECC SYSCFG_CFGR_AXISRAML /*!< Enables and locks the AXIRAM double ECC error signal
  164. with Break Input of TIM1/8/15/16/17 and HRTIM */
  165. #define LL_SYSCFG_TIMBREAK_ITCM_DBL_ECC SYSCFG_CFGR_ITCML /*!< Enables and locks the ITCM double ECC error signal
  166. with Break Input of TIM1/8/15/16/17 and HRTIM */
  167. #define LL_SYSCFG_TIMBREAK_DTCM_DBL_ECC SYSCFG_CFGR_DTCML /*!< Enables and locks the DTCM double ECC error signal
  168. with Break Input of TIM1/8/15/16/17 and HRTIM */
  169. #define LL_SYSCFG_TIMBREAK_SRAM1_DBL_ECC SYSCFG_CFGR_SRAM1L /*!< Enables and locks the SRAM1 double ECC error signal
  170. with Break Input of TIM1/8/15/16/17 and HRTIM */
  171. #define LL_SYSCFG_TIMBREAK_SRAM2_DBL_ECC SYSCFG_CFGR_SRAM2L /*!< Enables and locks the SRAM2 double ECC error signal
  172. with Break Input of TIM1/8/15/16/17 and HRTIM */
  173. #define LL_SYSCFG_TIMBREAK_SRAM3_DBL_ECC SYSCFG_CFGR_SRAM3L /*!< Enables and locks the SRAM3 double ECC error signal
  174. with Break Input of TIM1/8/15/16/17 and HRTIM */
  175. #define LL_SYSCFG_TIMBREAK_SRAM4_DBL_ECC SYSCFG_CFGR_SRAM4L /*!< Enables and locks the SRAM4 double ECC error signal
  176. with Break Input of TIM1/8/15/16/17 and HRTIM */
  177. #define LL_SYSCFG_TIMBREAK_BKRAM_DBL_ECC SYSCFG_CFGR_BKRAML /*!< Enables and locks the BKRAM double ECC error signal
  178. with Break Input of TIM1/8/15/16/17 and HRTIM */
  179. #define LL_SYSCFG_TIMBREAK_CM7_LOCKUP SYSCFG_CFGR_CM7L /*!< Enables and locks the Cortex-M7 LOCKUP signal
  180. with Break Input of TIM1/8/15/16/17 and HRTIM */
  181. #define LL_SYSCFG_TIMBREAK_FLASH_DBL_ECC SYSCFG_CFGR_FLASHL /*!< Enables and locks the FLASH double ECC error signal
  182. with Break Input of TIM1/8/15/16/17 and HRTIM */
  183. #define LL_SYSCFG_TIMBREAK_PVD SYSCFG_CFGR_PVDL /*!< Enables and locks the PVD connection
  184. with TIM1/8/15/16/17 and HRTIM Break Input
  185. and also the PVDE and PLS bits of the Power Control Interface */
  186. #if defined(DUAL_CORE)
  187. #define LL_SYSCFG_TIMBREAK_CM4_LOCKUP SYSCFG_CFGR_CM4L /*!< Enables and locks the Cortex-M4 LOCKUP signal
  188. with Break Input of TIM1/8/15/16/17 and HRTIM */
  189. #endif /* DUAL_CORE */
  190. /**
  191. * @}
  192. */
  193. /** @defgroup SYSTEM_LL_EC_CS SYSCFG I/O compensation cell Code selection
  194. * @{
  195. */
  196. #define LL_SYSCFG_CELL_CODE 0U
  197. #define LL_SYSCFG_REGISTER_CODE SYSCFG_CCCSR_CS
  198. /**
  199. * @}
  200. */
  201. /** @defgroup SYSTEM_LL_IWDG1_CONTROL_MODES SYSCFG IWDG1 control modes
  202. * @{
  203. */
  204. #define LL_SYSCFG_IWDG1_SW_CONTROL_MODE 0U
  205. #define LL_SYSCFG_IWDG1_HW_CONTROL_MODE SYSCFG_UR11_IWDG1M
  206. /**
  207. * @}
  208. */
  209. #if defined (DUAL_CORE)
  210. /** @defgroup SYSTEM_LL_IWDG2_CONTROL_MODES SYSCFG IWDG2 control modes
  211. * @{
  212. */
  213. #define LL_SYSCFG_IWDG2_SW_CONTROL_MODE 0U
  214. #define LL_SYSCFG_IWDG2_HW_CONTROL_MODE SYSCFG_UR12_IWDG2M
  215. /**
  216. * @}
  217. */
  218. #endif /* DUAL_CORE */
  219. /** @defgroup SYSTEM_LL_DTCM_RAM_SIZE SYSCFG DTCM RAM size configuration
  220. * @{
  221. */
  222. #define LL_SYSCFG_DTCM_RAM_SIZE_2KB 0U
  223. #define LL_SYSCFG_DTCM_RAM_SIZE_4KB 1U
  224. #define LL_SYSCFG_DTCM_RAM_SIZE_8KB 2U
  225. #define LL_SYSCFG_DTCM_RAM_SIZE_16KB 3U
  226. /**
  227. * @}
  228. */
  229. /** @defgroup SYSTEM_LL_PACKAGE SYSCFG device package
  230. * @{
  231. */
  232. #define LL_SYSCFG_LQFP100_PACKAGE 0U
  233. #define LL_SYSCFG_TQFP144_PACKAGE 2U
  234. #define LL_SYSCFG_TQFP176_UFBGA176_PACKAGE 5U
  235. #define LL_SYSCFG_LQFP208_TFBGA240_PACKAGE 8U
  236. /**
  237. * @}
  238. */
  239. /** @defgroup SYSTEM_LL_SYSCFG_BOR SYSCFG Brownout Reset Threshold Level
  240. * @{
  241. */
  242. #define LL_SYSCFG_BOR_OFF_RESET_LEVEL 0x00000000U
  243. #define LL_SYSCFG_BOR_LOW_RESET_LEVEL SYSCFG_UR2_BORH_0
  244. #define LL_SYSCFG_BOR_MEDIUM_RESET_LEVEL SYSCFG_UR2_BORH_1
  245. #define LL_SYSCFG_BOR_HIGH_RESET_LEVEL SYSCFG_UR2_BORH
  246. /**
  247. * @}
  248. */
  249. /** @defgroup SYSTEM_LL_EC_TRACE DBGMCU TRACE Pin Assignment
  250. * @{
  251. */
  252. #define LL_DBGMCU_TRACE_NONE 0x00000000U /*!< TRACE pins not assigned (default state) */
  253. #define LL_DBGMCU_TRACE_ASYNCH DBGMCU_CR_TRACE_IOEN /*!< TRACE pin assignment for Asynchronous Mode */
  254. #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 */
  255. #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 */
  256. #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 */
  257. /**
  258. * @}
  259. */
  260. /** @defgroup SYSTEM_LL_EC_APB1_GRP1_STOP_IP DBGMCU APB1 GRP1 STOP IP
  261. * @{
  262. */
  263. #define LL_DBGMCU_APB1_GRP1_TIM2_STOP DBGMCU_APB1LFZ1_DBG_TIM2 /*!< TIM2 counter stopped when core is halted */
  264. #define LL_DBGMCU_APB1_GRP1_TIM3_STOP DBGMCU_APB1LFZ1_DBG_TIM3 /*!< TIM3 counter stopped when core is halted */
  265. #define LL_DBGMCU_APB1_GRP1_TIM4_STOP DBGMCU_APB1LFZ1_DBG_TIM4 /*!< TIM4 counter stopped when core is halted */
  266. #define LL_DBGMCU_APB1_GRP1_TIM5_STOP DBGMCU_APB1LFZ1_DBG_TIM5 /*!< TIM5 counter stopped when core is halted */
  267. #define LL_DBGMCU_APB1_GRP1_TIM6_STOP DBGMCU_APB1LFZ1_DBG_TIM6 /*!< TIM6 counter stopped when core is halted */
  268. #define LL_DBGMCU_APB1_GRP1_TIM7_STOP DBGMCU_APB1LFZ1_DBG_TIM7 /*!< TIM7 counter stopped when core is halted */
  269. #define LL_DBGMCU_APB1_GRP1_TIM12_STOP DBGMCU_APB1LFZ1_DBG_TIM12 /*!< TIM12 counter stopped when core is halted */
  270. #define LL_DBGMCU_APB1_GRP1_TIM13_STOP DBGMCU_APB1LFZ1_DBG_TIM13 /*!< TIM13 counter stopped when core is halted */
  271. #define LL_DBGMCU_APB1_GRP1_TIM14_STOP DBGMCU_APB1LFZ1_DBG_TIM14 /*!< TIM14 counter stopped when core is halted */
  272. #define LL_DBGMCU_APB1_GRP1_LPTIM1_STOP DBGMCU_APB1LFZ1_DBG_LPTIM1 /*!< LPTIM1 counter stopped when core is halted */
  273. #define LL_DBGMCU_APB1_GRP1_I2C1_STOP DBGMCU_APB1LFZ1_DBG_I2C1 /*!< I2C1 SMBUS timeout mode stopped when Core is halted */
  274. #define LL_DBGMCU_APB1_GRP1_I2C2_STOP DBGMCU_APB1LFZ1_DBG_I2C2 /*!< I2C2 SMBUS timeout mode stopped when Core is halted */
  275. #define LL_DBGMCU_APB1_GRP1_I2C3_STOP DBGMCU_APB1LFZ1_DBG_I2C3 /*!< I2C3 SMBUS timeout mode stopped when Core is halted */
  276. /**
  277. * @}
  278. */
  279. /** @defgroup SYSTEM_LL_EC_APB1_GRP2_STOP_IP DBGMCU APB1 GRP2 STOP IP
  280. * @{
  281. */
  282. #define LL_DBGMCU_APB1_GRP2_FDCAN_STOP DBGMCU_APB1HFZ1_DBG_FDCAN /*!< FDCAN is frozen while the core is in debug mode */
  283. /**
  284. * @}
  285. */
  286. /** @defgroup SYSTEM_LL_EC_APB2_GRP1_STOP_IP DBGMCU APB2 GRP1 STOP IP
  287. * @{
  288. */
  289. #define LL_DBGMCU_APB2_GRP1_TIM1_STOP DBGMCU_APB2FZ1_DBG_TIM1 /*!< TIM1 counter stopped when core is halted */
  290. #define LL_DBGMCU_APB2_GRP1_TIM8_STOP DBGMCU_APB2FZ1_DBG_TIM8 /*!< TIM8 counter stopped when core is halted */
  291. #define LL_DBGMCU_APB2_GRP1_TIM15_STOP DBGMCU_APB2FZ1_DBG_TIM15 /*!< TIM15 counter stopped when core is halted */
  292. #define LL_DBGMCU_APB2_GRP1_TIM16_STOP DBGMCU_APB2FZ1_DBG_TIM16 /*!< TIM16 counter stopped when core is halted */
  293. #define LL_DBGMCU_APB2_GRP1_TIM17_STOP DBGMCU_APB2FZ1_DBG_TIM17 /*!< TIM17 counter stopped when core is halted */
  294. #define LL_DBGMCU_APB2_GRP1_HRTIM_STOP DBGMCU_APB2FZ1_DBG_HRTIM /*!< HRTIM counter stopped when core is halted */
  295. /**
  296. * @}
  297. */
  298. /** @defgroup SYSTEM_LL_EC_APB3_GRP1_STOP_IP DBGMCU APB3 GRP1 STOP IP
  299. * @{
  300. */
  301. #define LL_DBGMCU_APB3_GRP1_WWDG1_STOP DBGMCU_APB3FZ1_DBG_WWDG1 /*!< WWDG1 is frozen while the core is in debug mode */
  302. /**
  303. * @}
  304. */
  305. /** @defgroup SYSTEM_LL_EC_APB4_GRP1_STOP_IP DBGMCU APB4 GRP1 STOP IP
  306. * @{
  307. */
  308. #define LL_DBGMCU_APB4_GRP1_I2C4_STOP DBGMCU_APB4FZ1_DBG_I2C4 /*!< I2C4 is frozen while the core is in debug mode */
  309. #define LL_DBGMCU_APB4_GRP1_LPTIM2_STOP DBGMCU_APB4FZ1_DBG_LPTIM2 /*!< LPTIM2 is frozen while the core is in debug mode */
  310. #define LL_DBGMCU_APB4_GRP1_LPTIM3_STOP DBGMCU_APB4FZ1_DBG_LPTIM3 /*!< LPTIM3 is frozen while the core is in debug mode */
  311. #define LL_DBGMCU_APB4_GRP1_LPTIM4_STOP DBGMCU_APB4FZ1_DBG_LPTIM4 /*!< LPTIM4 is frozen while the core is in debug mode */
  312. #define LL_DBGMCU_APB4_GRP1_LPTIM5_STOP DBGMCU_APB4FZ1_DBG_LPTIM5 /*!< LPTIM5 is frozen while the core is in debug mode */
  313. #define LL_DBGMCU_APB4_GRP1_RTC_STOP DBGMCU_APB4FZ1_DBG_RTC /*!< RTC is frozen while the core is in debug mode */
  314. #define LL_DBGMCU_APB4_GRP1_IWDG1_STOP DBGMCU_APB4FZ1_DBG_IWDG1 /*!< IWDG1 is frozen while the core is in debug mode */
  315. /**
  316. * @}
  317. */
  318. /** @defgroup SYSTEM_LL_EC_LATENCY FLASH LATENCY
  319. * @{
  320. */
  321. #define LL_FLASH_LATENCY_0 FLASH_ACR_LATENCY_0WS /*!< FLASH Zero wait state */
  322. #define LL_FLASH_LATENCY_1 FLASH_ACR_LATENCY_1WS /*!< FLASH One wait state */
  323. #define LL_FLASH_LATENCY_2 FLASH_ACR_LATENCY_2WS /*!< FLASH Two wait states */
  324. #define LL_FLASH_LATENCY_3 FLASH_ACR_LATENCY_3WS /*!< FLASH Three wait states */
  325. #define LL_FLASH_LATENCY_4 FLASH_ACR_LATENCY_4WS /*!< FLASH Four wait states */
  326. #define LL_FLASH_LATENCY_5 FLASH_ACR_LATENCY_5WS /*!< FLASH five wait state */
  327. #define LL_FLASH_LATENCY_6 FLASH_ACR_LATENCY_6WS /*!< FLASH six wait state */
  328. #define LL_FLASH_LATENCY_7 FLASH_ACR_LATENCY_7WS /*!< FLASH seven wait states */
  329. /**
  330. * @}
  331. */
  332. /**
  333. * @}
  334. */
  335. /* Exported macro ------------------------------------------------------------*/
  336. /* Exported functions --------------------------------------------------------*/
  337. /** @defgroup SYSTEM_LL_Exported_Functions SYSTEM Exported Functions
  338. * @{
  339. */
  340. /** @defgroup SYSTEM_LL_EF_SYSCFG SYSCFG
  341. * @{
  342. */
  343. /**
  344. * @brief Select Ethernet PHY interface
  345. * @rmtoll PMCR EPIS_SEL LL_SYSCFG_SetPHYInterface
  346. * @param Interface This parameter can be one of the following values:
  347. * @arg @ref LL_SYSCFG_ETH_MII
  348. * @arg @ref LL_SYSCFG_ETH_RMII
  349. * @retval None
  350. */
  351. __STATIC_INLINE void LL_SYSCFG_SetPHYInterface(uint32_t Interface)
  352. {
  353. MODIFY_REG(SYSCFG->PMCR, SYSCFG_PMCR_EPIS_SEL, Interface);
  354. }
  355. /**
  356. * @brief Get Ethernet PHY interface
  357. * @rmtoll PMCR EPIS_SEL LL_SYSCFG_GetPHYInterface
  358. * @retval Returned value can be one of the following values:
  359. * @arg @ref LL_SYSCFG_ETH_MII
  360. * @arg @ref LL_SYSCFG_ETH_RMII
  361. */
  362. __STATIC_INLINE uint32_t LL_SYSCFG_GetPHYInterface(void)
  363. {
  364. return (uint32_t)(READ_BIT(SYSCFG->PMCR, SYSCFG_PMCR_EPIS_SEL));
  365. }
  366. /**
  367. * @brief Open an Analog Switch
  368. * @rmtoll PMCR PA0SO LL_SYSCFG_OpenAnalogSwitch
  369. * @rmtoll PMCR PA1SO LL_SYSCFG_OpenAnalogSwitch
  370. * @rmtoll PMCR PC2SO LL_SYSCFG_OpenAnalogSwitch
  371. * @rmtoll PMCR PC3SO LL_SYSCFG_OpenAnalogSwitch
  372. * @param AnalogSwitch This parameter can be one of the following values:
  373. * @arg LL_SYSCFG_ANALOG_SWITCH_PA0 : PA0 analog switch
  374. * @arg LL_SYSCFG_ANALOG_SWITCH_PA1: PA1 analog switch
  375. * @arg LL_SYSCFG_ANALOG_SWITCH_PC2 : PC2 analog switch
  376. * @arg LL_SYSCFG_ANALOG_SWITCH_PC3: PC3 analog switch
  377. * @retval None
  378. */
  379. __STATIC_INLINE void LL_SYSCFG_OpenAnalogSwitch(uint32_t AnalogSwitch)
  380. {
  381. SET_BIT(SYSCFG->PMCR, AnalogSwitch);
  382. }
  383. /**
  384. * @brief Close an Analog Switch
  385. * @rmtoll PMCR PA0SO LL_SYSCFG_CloseAnalogSwitch
  386. * @rmtoll PMCR PA1SO LL_SYSCFG_CloseAnalogSwitch
  387. * @rmtoll PMCR PC2SO LL_SYSCFG_CloseAnalogSwitch
  388. * @rmtoll PMCR PC3SO LL_SYSCFG_CloseAnalogSwitch
  389. * @param AnalogSwitch This parameter can be one of the following values:
  390. * @arg LL_SYSCFG_ANALOG_SWITCH_PA0 : PA0 analog switch
  391. * @arg LL_SYSCFG_ANALOG_SWITCH_PA1: PA1 analog switch
  392. * @arg LL_SYSCFG_ANALOG_SWITCH_PC2 : PC2 analog switch
  393. * @arg LL_SYSCFG_ANALOG_SWITCH_PC3: PC3 analog switch
  394. * @retval None
  395. */
  396. __STATIC_INLINE void LL_SYSCFG_CloseAnalogSwitch(uint32_t AnalogSwitch)
  397. {
  398. CLEAR_BIT(SYSCFG->PMCR, AnalogSwitch);
  399. }
  400. /**
  401. * @brief Enable the Analog booster to reduce the total harmonic distortion
  402. * of the analog switch when the supply voltage is lower than 2.7 V
  403. * @rmtoll PMCR BOOSTEN LL_SYSCFG_EnableAnalogBooster
  404. * @note Activating the booster allows to guaranty the analog switch AC performance
  405. * when the supply voltage is below 2.7 V: in this case, the analog switch
  406. * performance is the same on the full voltage range
  407. * @retval None
  408. */
  409. __STATIC_INLINE void LL_SYSCFG_EnableAnalogBooster(void)
  410. {
  411. SET_BIT(SYSCFG->PMCR, SYSCFG_PMCR_BOOSTEN) ;
  412. }
  413. /**
  414. * @brief Disable the Analog booster
  415. * @rmtoll PMCR BOOSTEN LL_SYSCFG_DisableAnalogBooster
  416. * @note Activating the booster allows to guaranty the analog switch AC performance
  417. * when the supply voltage is below 2.7 V: in this case, the analog switch
  418. * performance is the same on the full voltage range
  419. * @retval None
  420. */
  421. __STATIC_INLINE void LL_SYSCFG_DisableAnalogBooster(void)
  422. {
  423. CLEAR_BIT(SYSCFG->PMCR, SYSCFG_PMCR_BOOSTEN) ;
  424. }
  425. /**
  426. * @brief Enable the I2C fast mode plus driving capability.
  427. * @rmtoll SYSCFG_PMCR I2C_PBx_FMP LL_SYSCFG_EnableFastModePlus\n
  428. * SYSCFG_PMCR I2Cx_FMP LL_SYSCFG_EnableFastModePlus
  429. * @param ConfigFastModePlus This parameter can be a combination of the following values:
  430. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6
  431. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7
  432. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8 (*)
  433. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9 (*)
  434. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1
  435. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*)
  436. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3
  437. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C4(*)
  438. *
  439. * (*) value not defined in all devices
  440. * @retval None
  441. */
  442. __STATIC_INLINE void LL_SYSCFG_EnableFastModePlus(uint32_t ConfigFastModePlus)
  443. {
  444. SET_BIT(SYSCFG->PMCR, ConfigFastModePlus);
  445. }
  446. /**
  447. * @brief Disable the I2C fast mode plus driving capability.
  448. * @rmtoll SYSCFG_PMCR I2C_PBx_FMP LL_SYSCFG_DisableFastModePlus\n
  449. * SYSCFG_PMCR I2Cx_FMP LL_SYSCFG_DisableFastModePlus
  450. * @param ConfigFastModePlus This parameter can be a combination of the following values:
  451. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6
  452. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7
  453. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8 (*)
  454. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9 (*)
  455. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1
  456. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*)
  457. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3
  458. * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C4
  459. * (*) value not defined in all devices
  460. * @retval None
  461. */
  462. __STATIC_INLINE void LL_SYSCFG_DisableFastModePlus(uint32_t ConfigFastModePlus)
  463. {
  464. CLEAR_BIT(SYSCFG->PMCR, ConfigFastModePlus);
  465. }
  466. /**
  467. * @brief Configure source input for the EXTI external interrupt.
  468. * @rmtoll SYSCFG_EXTICR1 EXTIx LL_SYSCFG_SetEXTISource\n
  469. * SYSCFG_EXTICR2 EXTIx LL_SYSCFG_SetEXTISource\n
  470. * SYSCFG_EXTICR3 EXTIx LL_SYSCFG_SetEXTISource\n
  471. * SYSCFG_EXTICR4 EXTIx LL_SYSCFG_SetEXTISource
  472. * @param Port This parameter can be one of the following values:
  473. * @arg @ref LL_SYSCFG_EXTI_PORTA
  474. * @arg @ref LL_SYSCFG_EXTI_PORTB
  475. * @arg @ref LL_SYSCFG_EXTI_PORTC
  476. * @arg @ref LL_SYSCFG_EXTI_PORTD
  477. * @arg @ref LL_SYSCFG_EXTI_PORTE
  478. * @arg @ref LL_SYSCFG_EXTI_PORTF
  479. * @arg @ref LL_SYSCFG_EXTI_PORTG
  480. * @arg @ref LL_SYSCFG_EXTI_PORTH
  481. * @arg @ref LL_SYSCFG_EXTI_PORTI
  482. * @arg @ref LL_SYSCFG_EXTI_PORTJ
  483. * @arg @ref LL_SYSCFG_EXTI_PORTK
  484. *
  485. * (*) value not defined in all devices
  486. * @param Line This parameter can be one of the following values:
  487. * @arg @ref LL_SYSCFG_EXTI_LINE0
  488. * @arg @ref LL_SYSCFG_EXTI_LINE1
  489. * @arg @ref LL_SYSCFG_EXTI_LINE2
  490. * @arg @ref LL_SYSCFG_EXTI_LINE3
  491. * @arg @ref LL_SYSCFG_EXTI_LINE4
  492. * @arg @ref LL_SYSCFG_EXTI_LINE5
  493. * @arg @ref LL_SYSCFG_EXTI_LINE6
  494. * @arg @ref LL_SYSCFG_EXTI_LINE7
  495. * @arg @ref LL_SYSCFG_EXTI_LINE8
  496. * @arg @ref LL_SYSCFG_EXTI_LINE9
  497. * @arg @ref LL_SYSCFG_EXTI_LINE10
  498. * @arg @ref LL_SYSCFG_EXTI_LINE11
  499. * @arg @ref LL_SYSCFG_EXTI_LINE12
  500. * @arg @ref LL_SYSCFG_EXTI_LINE13
  501. * @arg @ref LL_SYSCFG_EXTI_LINE14
  502. * @arg @ref LL_SYSCFG_EXTI_LINE15
  503. * @retval None
  504. */
  505. __STATIC_INLINE void LL_SYSCFG_SetEXTISource(uint32_t Port, uint32_t Line)
  506. {
  507. MODIFY_REG(SYSCFG->EXTICR[Line & 0x3U], (Line >> 16U), Port << ((POSITION_VAL(Line >> 16U)) & 31U));
  508. }
  509. /**
  510. * @brief Get the configured defined for specific EXTI Line
  511. * @rmtoll SYSCFG_EXTICR1 EXTIx LL_SYSCFG_GetEXTISource\n
  512. * SYSCFG_EXTICR2 EXTIx LL_SYSCFG_GetEXTISource\n
  513. * SYSCFG_EXTICR3 EXTIx LL_SYSCFG_GetEXTISource\n
  514. * SYSCFG_EXTICR4 EXTIx LL_SYSCFG_GetEXTISource
  515. * @param Line This parameter can be one of the following values:
  516. * @arg @ref LL_SYSCFG_EXTI_LINE0
  517. * @arg @ref LL_SYSCFG_EXTI_LINE1
  518. * @arg @ref LL_SYSCFG_EXTI_LINE2
  519. * @arg @ref LL_SYSCFG_EXTI_LINE3
  520. * @arg @ref LL_SYSCFG_EXTI_LINE4
  521. * @arg @ref LL_SYSCFG_EXTI_LINE5
  522. * @arg @ref LL_SYSCFG_EXTI_LINE6
  523. * @arg @ref LL_SYSCFG_EXTI_LINE7
  524. * @arg @ref LL_SYSCFG_EXTI_LINE8
  525. * @arg @ref LL_SYSCFG_EXTI_LINE9
  526. * @arg @ref LL_SYSCFG_EXTI_LINE10
  527. * @arg @ref LL_SYSCFG_EXTI_LINE11
  528. * @arg @ref LL_SYSCFG_EXTI_LINE12
  529. * @arg @ref LL_SYSCFG_EXTI_LINE13
  530. * @arg @ref LL_SYSCFG_EXTI_LINE14
  531. * @arg @ref LL_SYSCFG_EXTI_LINE15
  532. * @retval Returned value can be one of the following values:
  533. * @arg @ref LL_SYSCFG_EXTI_PORTA
  534. * @arg @ref LL_SYSCFG_EXTI_PORTB
  535. * @arg @ref LL_SYSCFG_EXTI_PORTC
  536. * @arg @ref LL_SYSCFG_EXTI_PORTD
  537. * @arg @ref LL_SYSCFG_EXTI_PORTE
  538. * @arg @ref LL_SYSCFG_EXTI_PORTF
  539. * @arg @ref LL_SYSCFG_EXTI_PORTG
  540. * @arg @ref LL_SYSCFG_EXTI_PORTH
  541. * @arg @ref LL_SYSCFG_EXTI_PORTI
  542. * @arg @ref LL_SYSCFG_EXTI_PORTJ
  543. * @arg @ref LL_SYSCFG_EXTI_PORTK
  544. * (*) value not defined in all devices
  545. */
  546. __STATIC_INLINE uint32_t LL_SYSCFG_GetEXTISource(uint32_t Line)
  547. {
  548. return (uint32_t)(READ_BIT(SYSCFG->EXTICR[Line & 0x3U], (Line >> 16U)) >> (POSITION_VAL(Line >> 16U) & 31U));
  549. }
  550. /**
  551. * @brief Set connections to TIM1/8/15/16/17 and HRTIM Break inputs
  552. * @note this feature is available on STM32H7 rev.B and above
  553. * @rmtoll SYSCFG_CFGR AXISRAML LL_SYSCFG_SetTIMBreakInputs\n
  554. * SYSCFG_CFGR ITCML LL_SYSCFG_SetTIMBreakInputs\n
  555. * SYSCFG_CFGR DTCML LL_SYSCFG_SetTIMBreakInputs\n
  556. * SYSCFG_CFGR SRAM1L LL_SYSCFG_SetTIMBreakInputs\n
  557. * SYSCFG_CFGR SRAM2L LL_SYSCFG_SetTIMBreakInputs\n
  558. * SYSCFG_CFGR SRAM3L LL_SYSCFG_SetTIMBreakInputs\n
  559. * SYSCFG_CFGR SRAM4L LL_SYSCFG_SetTIMBreakInputs\n
  560. * SYSCFG_CFGR BKRAML LL_SYSCFG_SetTIMBreakInputs\n
  561. * SYSCFG_CFGR CM7L LL_SYSCFG_SetTIMBreakInputs\n
  562. * SYSCFG_CFGR FLASHL LL_SYSCFG_SetTIMBreakInputs\n
  563. * SYSCFG_CFGR PVDL LL_SYSCFG_SetTIMBreakInputs\n
  564. * SYSCFG_CFGR_CM4L LL_SYSCFG_SetTIMBreakInputs
  565. * @param Break This parameter can be a combination of the following values:
  566. * @arg @ref LL_SYSCFG_TIMBREAK_AXISRAM_DBL_ECC
  567. * @arg @ref LL_SYSCFG_TIMBREAK_ITCM_DBL_ECC
  568. * @arg @ref LL_SYSCFG_TIMBREAK_DTCM_DBL_ECC
  569. * @arg @ref LL_SYSCFG_TIMBREAK_SRAM1_DBL_ECC
  570. * @arg @ref LL_SYSCFG_TIMBREAK_SRAM2_DBL_ECC
  571. * @arg @ref LL_SYSCFG_TIMBREAK_SRAM3_DBL_ECC
  572. * @arg @ref LL_SYSCFG_TIMBREAK_SRAM4_DBL_ECC
  573. * @arg @ref LL_SYSCFG_TIMBREAK_BKRAM_DBL_ECC
  574. * @arg @ref LL_SYSCFG_TIMBREAK_CM7_LOCKUP
  575. * @arg @ref LL_SYSCFG_TIMBREAK_FLASH_DBL_ECC
  576. * @arg @ref LL_SYSCFG_TIMBREAK_PVD
  577. * @arg @ref LL_SYSCFG_TIMBREAK_CM4_LOCKUP (available for dual core lines only)
  578. * @retval None
  579. */
  580. __STATIC_INLINE void LL_SYSCFG_SetTIMBreakInputs(uint32_t Break)
  581. {
  582. #if defined(DUAL_CORE)
  583. MODIFY_REG(SYSCFG->CFGR, SYSCFG_CFGR_AXISRAML | SYSCFG_CFGR_ITCML | SYSCFG_CFGR_DTCML | SYSCFG_CFGR_SRAM1L | SYSCFG_CFGR_SRAM2L | \
  584. SYSCFG_CFGR_SRAM3L | SYSCFG_CFGR_SRAM4L | SYSCFG_CFGR_BKRAML | SYSCFG_CFGR_CM7L | SYSCFG_CFGR_FLASHL | \
  585. SYSCFG_CFGR_PVDL | SYSCFG_CFGR_CM4L, Break);
  586. #else
  587. MODIFY_REG(SYSCFG->CFGR, SYSCFG_CFGR_AXISRAML | SYSCFG_CFGR_ITCML | SYSCFG_CFGR_DTCML | SYSCFG_CFGR_SRAM1L | SYSCFG_CFGR_SRAM2L | \
  588. SYSCFG_CFGR_SRAM3L | SYSCFG_CFGR_SRAM4L | SYSCFG_CFGR_BKRAML | SYSCFG_CFGR_CM7L | SYSCFG_CFGR_FLASHL | \
  589. SYSCFG_CFGR_PVDL, Break);
  590. #endif /* DUAL_CORE */
  591. }
  592. /**
  593. * @brief Get connections to TIM1/8/15/16/17 and HRTIM Break inputs
  594. * @note this feature is available on STM32H7 rev.B and above
  595. * @rmtoll SYSCFG_CFGR AXISRAML LL_SYSCFG_GetTIMBreakInputs\n
  596. * SYSCFG_CFGR ITCML LL_SYSCFG_GetTIMBreakInputs\n
  597. * SYSCFG_CFGR DTCML LL_SYSCFG_GetTIMBreakInputs\n
  598. * SYSCFG_CFGR SRAM1L LL_SYSCFG_GetTIMBreakInputs\n
  599. * SYSCFG_CFGR SRAM2L LL_SYSCFG_GetTIMBreakInputs\n
  600. * SYSCFG_CFGR SRAM3L LL_SYSCFG_GetTIMBreakInputs\n
  601. * SYSCFG_CFGR SRAM4L LL_SYSCFG_GetTIMBreakInputs\n
  602. * SYSCFG_CFGR BKRAML LL_SYSCFG_GetTIMBreakInputs\n
  603. * SYSCFG_CFGR CM7L LL_SYSCFG_GetTIMBreakInputs\n
  604. * SYSCFG_CFGR FLASHL LL_SYSCFG_GetTIMBreakInputs\n
  605. * SYSCFG_CFGR PVDL LL_SYSCFG_GetTIMBreakInputs\n
  606. * SYSCFG_CFGR_CM4L LL_SYSCFG_GetTIMBreakInputs
  607. * @retval Returned value can be can be a combination of the following values:
  608. * @arg @ref LL_SYSCFG_TIMBREAK_AXISRAM_DBL_ECC
  609. * @arg @ref LL_SYSCFG_TIMBREAK_ITCM_DBL_ECC
  610. * @arg @ref LL_SYSCFG_TIMBREAK_DTCM_DBL_ECC
  611. * @arg @ref LL_SYSCFG_TIMBREAK_SRAM1_DBL_ECC
  612. * @arg @ref LL_SYSCFG_TIMBREAK_SRAM2_DBL_ECC
  613. * @arg @ref LL_SYSCFG_TIMBREAK_SRAM3_DBL_ECC
  614. * @arg @ref LL_SYSCFG_TIMBREAK_SRAM4_DBL_ECC
  615. * @arg @ref LL_SYSCFG_TIMBREAK_BKRAM_DBL_ECC
  616. * @arg @ref LL_SYSCFG_TIMBREAK_CM7_LOCKUP
  617. * @arg @ref LL_SYSCFG_TIMBREAK_FLASH_DBL_ECC
  618. * @arg @ref LL_SYSCFG_TIMBREAK_PVD
  619. * @arg @ref LL_SYSCFG_TIMBREAK_CM4_LOCKUP (available for dual core lines only)
  620. */
  621. __STATIC_INLINE uint32_t LL_SYSCFG_GetTIMBreakInputs(void)
  622. {
  623. #if defined(DUAL_CORE)
  624. return (uint32_t)(READ_BIT(SYSCFG->CFGR, SYSCFG_CFGR_AXISRAML | SYSCFG_CFGR_ITCML | SYSCFG_CFGR_DTCML | \
  625. SYSCFG_CFGR_SRAM1L | SYSCFG_CFGR_SRAM2L | SYSCFG_CFGR_SRAM3L | \
  626. SYSCFG_CFGR_SRAM4L | SYSCFG_CFGR_BKRAML | SYSCFG_CFGR_CM7L | \
  627. SYSCFG_CFGR_FLASHL | SYSCFG_CFGR_PVDL | SYSCFG_CFGR_CM4L));
  628. #else
  629. return (uint32_t)(READ_BIT(SYSCFG->CFGR, SYSCFG_CFGR_AXISRAML | SYSCFG_CFGR_ITCML | SYSCFG_CFGR_DTCML | \
  630. SYSCFG_CFGR_SRAM1L | SYSCFG_CFGR_SRAM2L | SYSCFG_CFGR_SRAM3L | \
  631. SYSCFG_CFGR_SRAM4L | SYSCFG_CFGR_BKRAML | SYSCFG_CFGR_CM7L | \
  632. SYSCFG_CFGR_FLASHL | SYSCFG_CFGR_PVDL ));
  633. #endif /* DUAL_CORE */
  634. }
  635. /**
  636. * @brief Enable the Compensation Cell
  637. * @rmtoll CCCSR EN LL_SYSCFG_EnableCompensationCell
  638. * @note The I/O compensation cell can be used only when the device supply
  639. * voltage ranges from 2.4 to 3.6 V
  640. * @retval None
  641. */
  642. __STATIC_INLINE void LL_SYSCFG_EnableCompensationCell(void)
  643. {
  644. SET_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_EN);
  645. }
  646. /**
  647. * @brief Disable the Compensation Cell
  648. * @rmtoll CCCSR EN LL_SYSCFG_DisableCompensationCell
  649. * @note The I/O compensation cell can be used only when the device supply
  650. * voltage ranges from 2.4 to 3.6 V
  651. * @retval None
  652. */
  653. __STATIC_INLINE void LL_SYSCFG_DisableCompensationCell(void)
  654. {
  655. CLEAR_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_EN);
  656. }
  657. /**
  658. * @brief Check if the Compensation Cell is enabled
  659. * @rmtoll CCCSR EN LL_SYSCFG_IsEnabledCompensationCell
  660. * @retval State of bit (1 or 0).
  661. */
  662. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledCompensationCell(void)
  663. {
  664. return ((READ_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_EN) == SYSCFG_CCCSR_EN) ? 1UL : 0UL);
  665. }
  666. /**
  667. * @brief Get Compensation Cell ready Flag
  668. * @rmtoll CCCSR READY LL_SYSCFG_IsActiveFlag_CMPCR
  669. * @retval State of bit (1 or 0).
  670. */
  671. __STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_CMPCR(void)
  672. {
  673. return ((READ_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_READY) == (SYSCFG_CCCSR_READY)) ? 1UL : 0UL);
  674. }
  675. /**
  676. * @brief Enable the I/O speed optimization when the product voltage is low.
  677. * @rmtoll CCCSR HSLV LL_SYSCFG_EnableIOSpeedOptimize
  678. * @note This bit is active only if IO_HSLV user option bit is set. It must be used only if the
  679. * product supply voltage is below 2.7 V. Setting this bit when VDD is higher than 2.7 V
  680. * might be destructive.
  681. * @retval None
  682. */
  683. __STATIC_INLINE void LL_SYSCFG_EnableIOSpeedOptimization(void)
  684. {
  685. SET_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV);
  686. }
  687. /**
  688. * @brief To Disable optimize the I/O speed when the product voltage is low.
  689. * @rmtoll CCCSR HSLV LL_SYSCFG_DisableIOSpeedOptimize
  690. * @note This bit is active only if IO_HSLV user option bit is set. It must be used only if the
  691. * product supply voltage is below 2.7 V. Setting this bit when VDD is higher than 2.7 V
  692. * might be destructive.
  693. * @retval None
  694. */
  695. __STATIC_INLINE void LL_SYSCFG_DisableIOSpeedOptimization(void)
  696. {
  697. CLEAR_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV);
  698. }
  699. /**
  700. * @brief Check if the I/O speed optimization is enabled
  701. * @rmtoll CCCSR HSLV LL_SYSCFG_IsEnabledIOSpeedOptimization
  702. * @retval State of bit (1 or 0).
  703. */
  704. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIOSpeedOptimization(void)
  705. {
  706. return ((READ_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_HSLV) == SYSCFG_CCCSR_HSLV) ? 1UL : 0UL);
  707. }
  708. /**
  709. * @brief Set the code selection for the I/O Compensation cell
  710. * @rmtoll CCCSR CS LL_SYSCFG_SetCellCompensationCode
  711. * @param CompCode: Selects the code to be applied for the I/O compensation cell
  712. * This parameter can be one of the following values:
  713. * @arg LL_SYSCFG_CELL_CODE : Select Code from the cell (available in the SYSCFG_CCVR)
  714. * @arg LL_SYSCFG_REGISTER_CODE: Select Code from the SYSCFG compensation cell code register (SYSCFG_CCCR)
  715. * @retval None
  716. */
  717. __STATIC_INLINE void LL_SYSCFG_SetCellCompensationCode(uint32_t CompCode)
  718. {
  719. SET_BIT(SYSCFG->CCCSR, CompCode);
  720. }
  721. /**
  722. * @brief Get the code selected for the I/O Compensation cell
  723. * @rmtoll CCCSR CS LL_SYSCFG_GetCellCompensationCode
  724. * @retval Returned value can be one of the following values:
  725. * @arg LL_SYSCFG_CELL_CODE : Selected Code is from the cell (available in the SYSCFG_CCVR)
  726. * @arg LL_SYSCFG_REGISTER_CODE: Selected Code is from the SYSCFG compensation cell code register (SYSCFG_CCCR)
  727. */
  728. __STATIC_INLINE uint32_t LL_SYSCFG_GetCellCompensationCode(void)
  729. {
  730. return (uint32_t)(READ_BIT(SYSCFG->CCCSR, SYSCFG_CCCSR_CS));
  731. }
  732. /**
  733. * @brief Get I/O compensation cell value for PMOS transistors
  734. * @rmtoll CCVR PCV LL_SYSCFG_GetPMOSCompensationValue
  735. * @retval Returned value is the I/O compensation cell value for PMOS transistors
  736. */
  737. __STATIC_INLINE uint32_t LL_SYSCFG_GetPMOSCompensationValue(void)
  738. {
  739. return (uint32_t)(READ_BIT(SYSCFG->CCVR, SYSCFG_CCVR_PCV));
  740. }
  741. /**
  742. * @brief Get I/O compensation cell value for NMOS transistors
  743. * @rmtoll CCVR NCV LL_SYSCFG_GetNMOSCompensationValue
  744. * @retval Returned value is the I/O compensation cell value for NMOS transistors
  745. */
  746. __STATIC_INLINE uint32_t LL_SYSCFG_GetNMOSCompensationValue(void)
  747. {
  748. return (uint32_t)(READ_BIT(SYSCFG->CCVR, SYSCFG_CCVR_NCV));
  749. }
  750. /**
  751. * @brief Set I/O compensation cell code for PMOS transistors
  752. * @rmtoll CCCR PCC LL_SYSCFG_SetPMOSCompensationCode
  753. * @param PMOSCode PMOS compensation code
  754. * This code is applied to the I/O compensation cell when the CS bit of the
  755. * SYSCFG_CMPCR is set
  756. * @retval None
  757. */
  758. __STATIC_INLINE void LL_SYSCFG_SetPMOSCompensationCode(uint32_t PMOSCode)
  759. {
  760. MODIFY_REG(SYSCFG->CCCR, SYSCFG_CCCR_PCC, PMOSCode);
  761. }
  762. /**
  763. * @brief Get I/O compensation cell code for PMOS transistors
  764. * @rmtoll CCCR PCC LL_SYSCFG_GetPMOSCompensationCode
  765. * @retval Returned value is the I/O compensation cell code for PMOS transistors
  766. */
  767. __STATIC_INLINE uint32_t LL_SYSCFG_GetPMOSCompensationCode(void)
  768. {
  769. return (uint32_t)(READ_BIT(SYSCFG->CCCR, SYSCFG_CCCR_PCC));
  770. }
  771. /**
  772. * @brief Set I/O compensation cell code for NMOS transistors
  773. * @rmtoll CCCR NCC LL_SYSCFG_SetNMOSCompensationCode
  774. * @param NMOSCode NMOS compensation code
  775. * This code is applied to the I/O compensation cell when the CS bit of the
  776. * SYSCFG_CMPCR is set
  777. * @retval None
  778. */
  779. __STATIC_INLINE void LL_SYSCFG_SetNMOSCompensationCode(uint32_t NMOSCode)
  780. {
  781. MODIFY_REG(SYSCFG->CCCR, SYSCFG_CCCR_NCC, NMOSCode);
  782. }
  783. /**
  784. * @brief Get I/O compensation cell code for NMOS transistors
  785. * @rmtoll CCCR NCC LL_SYSCFG_GetNMOSCompensationCode
  786. * @retval Returned value is the I/O compensation cell code for NMOS transistors
  787. */
  788. __STATIC_INLINE uint32_t LL_SYSCFG_GetNMOSCompensationCode(void)
  789. {
  790. return (uint32_t)(READ_BIT(SYSCFG->CCCR, SYSCFG_CCCR_NCC));
  791. }
  792. /**
  793. * @brief Get the device package
  794. * @rmtoll PKGR PKG LL_SYSCFG_GetPackage
  795. * @retval Returned value can be one of the following values:
  796. * @arg @ref LL_SYSCFG_LQFP100_PACKAGE
  797. * @arg @ref LL_SYSCFG_TQFP144_PACKAGE
  798. * @arg @ref LL_SYSCFG_TQFP176_UFBGA176_PACKAGE
  799. * @arg @ref LL_SYSCFG_LQFP208_TFBGA240_PACKAGE
  800. */
  801. __STATIC_INLINE uint32_t LL_SYSCFG_GetPackage(void)
  802. {
  803. return (uint32_t)(READ_BIT(SYSCFG->PKGR, SYSCFG_PKGR_PKG));
  804. }
  805. /**
  806. * @brief Get the Flash memory protection level
  807. * @rmtoll UR0 RDP LL_SYSCFG_GetFLashProtectionLevel
  808. * @retval Returned value can be one of the following values:
  809. * 0xAA : RDP level 0
  810. * 0xCC : RDP level 2
  811. * Any other value : RDP level 1
  812. */
  813. __STATIC_INLINE uint32_t LL_SYSCFG_GetFLashProtectionLevel(void)
  814. {
  815. return (uint32_t)(READ_BIT(SYSCFG->UR0, SYSCFG_UR0_RDP));
  816. }
  817. /**
  818. * @brief Indicate if the Flash memory bank addresses are inverted or not
  819. * @rmtoll UR0 BKS LL_SYSCFG_IsFLashBankAddressesSwaped
  820. * @retval State of bit (1 or 0).
  821. */
  822. __STATIC_INLINE uint32_t LL_SYSCFG_IsFLashBankAddressesSwaped(void)
  823. {
  824. return ((READ_BIT(SYSCFG->UR0, SYSCFG_UR0_BKS) == 0U) ? 1UL : 0UL);
  825. }
  826. /**
  827. * @brief Get the BOR Threshold Reset Level
  828. * @rmtoll UR2 BORH LL_SYSCFG_GetBrownoutResetLevel
  829. * @retval Returned value can be one of the following values:
  830. * @arg @ref LL_SYSCFG_BOR_HIGH_RESET_LEVEL
  831. * @arg @ref LL_SYSCFG_BOR_MEDIUM_RESET_LEVEL
  832. * @arg @ref LL_SYSCFG_BOR_LOW_RESET_LEVEL
  833. * @arg @ref LL_SYSCFG_BOR_OFF_RESET_LEVEL
  834. */
  835. __STATIC_INLINE uint32_t LL_SYSCFG_GetBrownoutResetLevel(void)
  836. {
  837. return (uint32_t)(READ_BIT(SYSCFG->UR2, SYSCFG_UR2_BORH));
  838. }
  839. /**
  840. * @brief BootCM7 address 0 configuration
  841. * @rmtoll UR2 BOOT_ADD0 LL_SYSCFG_SetCM7BootAddress0
  842. * @param BootAddress :Specifies the CM7 Boot Address to be loaded in Address0
  843. * @retval None
  844. */
  845. __STATIC_INLINE void LL_SYSCFG_SetCM7BootAddress0(uint16_t BootAddress)
  846. {
  847. /* Configure CM7 BOOT ADD0 */
  848. #if defined(DUAL_CORE)
  849. MODIFY_REG(SYSCFG->UR2, SYSCFG_UR2_BCM7_ADD0, ((uint32_t)BootAddress << SYSCFG_UR2_BCM7_ADD0_Pos));
  850. #else
  851. MODIFY_REG(SYSCFG->UR2, SYSCFG_UR2_BOOT_ADD0, ((uint32_t)BootAddress << SYSCFG_UR2_BOOT_ADD0_Pos));
  852. #endif /*DUAL_CORE*/
  853. }
  854. /**
  855. * @brief Get BootCM7 address 0
  856. * @rmtoll UR2 BOOT_ADD0 LL_SYSCFG_GetCM7BootAddress0
  857. * @retval Returned the CM7 Boot Address0
  858. */
  859. __STATIC_INLINE uint16_t LL_SYSCFG_GetCM7BootAddress0(void)
  860. {
  861. /* Get CM7 BOOT ADD0 */
  862. #if defined(DUAL_CORE)
  863. return (uint16_t)((uint32_t)READ_BIT(SYSCFG->UR2, SYSCFG_UR2_BCM7_ADD0) >> SYSCFG_UR2_BCM7_ADD0_Pos);
  864. #else
  865. return (uint16_t)((uint32_t)READ_BIT(SYSCFG->UR2, SYSCFG_UR2_BOOT_ADD0) >> SYSCFG_UR2_BOOT_ADD0_Pos);
  866. #endif /*DUAL_CORE*/
  867. }
  868. /**
  869. * @brief BootCM7 address 1 configuration
  870. * @rmtoll UR3 BOOT_ADD1 LL_SYSCFG_SetCM7BootAddress1
  871. * @param BootAddress :Specifies the CM7 Boot Address to be loaded in Address1
  872. * @retval None
  873. */
  874. __STATIC_INLINE void LL_SYSCFG_SetCM7BootAddress1(uint16_t BootAddress)
  875. {
  876. /* Configure CM7 BOOT ADD1 */
  877. #if defined(DUAL_CORE)
  878. MODIFY_REG(SYSCFG->UR3, SYSCFG_UR3_BCM7_ADD1, BootAddress);
  879. #else
  880. MODIFY_REG(SYSCFG->UR3, SYSCFG_UR3_BOOT_ADD1, BootAddress);
  881. #endif /*DUAL_CORE*/
  882. }
  883. /**
  884. * @brief Get BootCM7 address 1
  885. * @rmtoll UR3 BOOT_ADD1 LL_SYSCFG_GetCM7BootAddress1
  886. * @retval Returned the CM7 Boot Address0
  887. */
  888. __STATIC_INLINE uint16_t LL_SYSCFG_GetCM7BootAddress1(void)
  889. {
  890. /* Get CM7 BOOT ADD0 */
  891. #if defined(DUAL_CORE)
  892. return (uint16_t)(READ_BIT(SYSCFG->UR3, SYSCFG_UR3_BCM7_ADD1));
  893. #else
  894. return (uint16_t)(READ_BIT(SYSCFG->UR3, SYSCFG_UR3_BOOT_ADD1));
  895. #endif /* DUAL_CORE */
  896. }
  897. #if defined(DUAL_CORE)
  898. /**
  899. * @brief BootCM4 address 0 configuration
  900. * @rmtoll UR3 BCM4_ADD0 LL_SYSCFG_SetCM4BootAddress0
  901. * @param BootAddress :Specifies the CM4 Boot Address to be loaded in Address0
  902. * @retval None
  903. */
  904. __STATIC_INLINE void LL_SYSCFG_SetCM4BootAddress0(uint16_t BootAddress)
  905. {
  906. /* Configure CM4 BOOT ADD0 */
  907. MODIFY_REG(SYSCFG->UR3, SYSCFG_UR3_BCM4_ADD0, ((uint32_t)BootAddress << SYSCFG_UR3_BCM4_ADD0_Pos));
  908. }
  909. /**
  910. * @brief Get BootCM4 address 0
  911. * @rmtoll UR3 BCM4_ADD0 LL_SYSCFG_GetCM4BootAddress0
  912. * @retval Returned the CM4 Boot Address0
  913. */
  914. __STATIC_INLINE uint16_t LL_SYSCFG_GetCM4BootAddress0(void)
  915. {
  916. /* Get CM4 BOOT ADD0 */
  917. return (uint16_t)((uint32_t)READ_BIT(SYSCFG->UR3, SYSCFG_UR3_BCM4_ADD0) >> SYSCFG_UR3_BCM4_ADD0_Pos);
  918. }
  919. /**
  920. * @brief BootCM4 address 1 configuration
  921. * @rmtoll UR4 BCM4_ADD1 LL_SYSCFG_SetCM4BootAddress1
  922. * @param BootAddress :Specifies the CM4 Boot Address to be loaded in Address1
  923. * @retval None
  924. */
  925. __STATIC_INLINE void LL_SYSCFG_SetCM4BootAddress1(uint16_t BootAddress)
  926. {
  927. /* Configure CM4 BOOT ADD1 */
  928. MODIFY_REG(SYSCFG->UR4, SYSCFG_UR4_BCM4_ADD1, BootAddress);
  929. }
  930. /**
  931. * @brief Get BootCM4 address 1
  932. * @rmtoll UR4 BCM4_ADD1 LL_SYSCFG_GetCM4BootAddress1
  933. * @retval Returned the CM4 Boot Address0
  934. */
  935. __STATIC_INLINE uint16_t LL_SYSCFG_GetCM4BootAddress1(void)
  936. {
  937. /* Get CM4 BOOT ADD0 */
  938. return (uint16_t)(READ_BIT(SYSCFG->UR4, SYSCFG_UR4_BCM4_ADD1));
  939. }
  940. #endif /*DUAL_CORE*/
  941. /**
  942. * @brief Indicates if the flash protected area (Bank 1) is erased by a mass erase
  943. * @rmtoll UR4 MEPAD_BANK1 LL_SYSCFG_IsFlashB1ProtectedAreaErasable
  944. * @retval State of bit (1 or 0).
  945. */
  946. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1ProtectedAreaErasable(void)
  947. {
  948. return ((READ_BIT(SYSCFG->UR4, SYSCFG_UR4_MEPAD_BANK1) == SYSCFG_UR4_MEPAD_BANK1) ? 1UL : 0UL);
  949. }
  950. /**
  951. * @brief Indicates if the flash secured area (Bank 1) is erased by a mass erase
  952. * @rmtoll UR5 MESAD_BANK1 LL_SYSCFG_IsFlashB1SecuredAreaErasable
  953. * @retval State of bit (1 or 0).
  954. */
  955. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1SecuredAreaErasable(void)
  956. {
  957. return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_MESAD_BANK1) == SYSCFG_UR5_MESAD_BANK1) ? 1UL : 0UL);
  958. }
  959. /**
  960. * @brief Indicates if the sector 0 of the Flash memory bank 1 is write protected
  961. * @rmtoll UR5 WRPN_BANK1 LL_SYSCFG_IsFlashB1Sector0WriteProtected
  962. * @retval State of bit (1 or 0).
  963. */
  964. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector0WriteProtected(void)
  965. {
  966. return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR0_STATUS_BIT)) ? 1UL : 0UL);
  967. }
  968. /**
  969. * @brief Indicates if the sector 1 of the Flash memory bank 1 is write protected
  970. * @rmtoll UR5 WRPN_BANK1 LL_SYSCFG_IsFlashB1Sector1WriteProtected
  971. * @retval State of bit (1 or 0).
  972. */
  973. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector1WriteProtected(void)
  974. {
  975. return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR1_STATUS_BIT)) ? 1UL : 0UL);
  976. }
  977. /**
  978. * @brief Indicates if the sector 2 of the Flash memory bank 1 is write protected
  979. * @rmtoll UR5 WRPN_BANK1 LL_SYSCFG_IsFlashB1Sector2WriteProtected
  980. * @retval State of bit (1 or 0).
  981. */
  982. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector2WriteProtected(void)
  983. {
  984. return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR2_STATUS_BIT)) ? 1UL : 0UL);
  985. }
  986. /**
  987. * @brief Indicates if the sector 3 of the Flash memory bank 1 is write protected
  988. * @rmtoll UR5 WRPN_BANK1 LL_SYSCFG_IsFlashB1Sector3WriteProtected
  989. * @retval State of bit (1 or 0).
  990. */
  991. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector3WriteProtected(void)
  992. {
  993. return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR3_STATUS_BIT)) ? 1UL : 0UL);
  994. }
  995. /**
  996. * @brief Indicates if the sector 4 of the Flash memory bank 1 is write protected
  997. * @rmtoll UR5 WRPN_BANK1 LL_SYSCFG_IsFlashB1Sector4WriteProtected
  998. * @retval State of bit (1 or 0).
  999. */
  1000. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector4WriteProtected(void)
  1001. {
  1002. return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR4_STATUS_BIT)) ? 1UL : 0UL);
  1003. }
  1004. /**
  1005. * @brief Indicates if the sector 5 of the Flash memory bank 1 is write protected
  1006. * @rmtoll UR5 WRPN_BANK1 LL_SYSCFG_IsFlashB1Sector5WriteProtected
  1007. * @retval State of bit (1 or 0).
  1008. */
  1009. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector5WriteProtected(void)
  1010. {
  1011. return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR5_STATUS_BIT)) ? 1UL : 0UL);
  1012. }
  1013. /**
  1014. * @brief Indicates if the sector 6 of the Flash memory bank 1 is write protected
  1015. * @rmtoll UR5 WRPN_BANK1 LL_SYSCFG_IsFlashB1Sector6WriteProtected
  1016. * @retval State of bit (1 or 0).
  1017. */
  1018. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector6WriteProtected(void)
  1019. {
  1020. return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR6_STATUS_BIT)) ? 1UL : 0UL);
  1021. }
  1022. /**
  1023. * @brief Indicates if the sector 7 of the Flash memory bank 1 is write protected
  1024. * @rmtoll UR5 WRPN_BANK1 LL_SYSCFG_IsFlashB1Sector7WriteProtected
  1025. * @retval State of bit (1 or 0).
  1026. */
  1027. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB1Sector7WriteProtected(void)
  1028. {
  1029. return ((READ_BIT(SYSCFG->UR5, SYSCFG_UR5_WRPN_BANK1) == (SYSCFG_UR5_WRPN_BANK1 & LL_SYSCFG_FLASH_B1_SECTOR7_STATUS_BIT)) ? 1UL : 0UL);
  1030. }
  1031. /**
  1032. * @brief Get the protected area start address for Flash bank 1
  1033. * @rmtoll UR6 PABEG_BANK1 LL_SYSCFG_GetFlashB1ProtectedAreaStartAddress
  1034. * @retval Returned the protected area start address for Flash bank 1
  1035. */
  1036. __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB1ProtectedAreaStartAddress(void)
  1037. {
  1038. return (uint32_t)(READ_BIT(SYSCFG->UR6, SYSCFG_UR6_PABEG_BANK1));
  1039. }
  1040. /**
  1041. * @brief Get the protected area end address for Flash bank 1
  1042. * @rmtoll UR6 PAEND_BANK1 LL_SYSCFG_GetFlashB1ProtectedAreaEndAddress
  1043. * @retval Returned the protected area end address for Flash bank 1
  1044. */
  1045. __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB1ProtectedAreaEndAddress(void)
  1046. {
  1047. return (uint32_t)(READ_BIT(SYSCFG->UR6, SYSCFG_UR6_PAEND_BANK1));
  1048. }
  1049. /**
  1050. * @brief Get the secured area start address for Flash bank 1
  1051. * @rmtoll UR7 SABEG_BANK1 LL_SYSCFG_GetFlashB1SecuredAreaStartAddress
  1052. * @retval Returned the secured area start address for Flash bank 1
  1053. */
  1054. __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB1SecuredAreaStartAddress(void)
  1055. {
  1056. return (uint32_t)(READ_BIT(SYSCFG->UR7, SYSCFG_UR7_SABEG_BANK1));
  1057. }
  1058. /**
  1059. * @brief Get the secured area end address for Flash bank 1
  1060. * @rmtoll UR7 SAEND_BANK1 LL_SYSCFG_GetFlashB1SecuredAreaEndAddress
  1061. * @retval Returned the secured area end address for Flash bank 1
  1062. */
  1063. __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB1SecuredAreaEndAddress(void)
  1064. {
  1065. return (uint32_t)(READ_BIT(SYSCFG->UR7, SYSCFG_UR7_SAEND_BANK1));
  1066. }
  1067. /**
  1068. * @brief Indicates if the flash protected area (Bank 2) is erased by a mass erase
  1069. * @rmtoll UR8 MEPAD_BANK2 LL_SYSCFG_IsFlashB2ProtectedAreaErasable
  1070. * @retval State of bit (1 or 0).
  1071. */
  1072. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2ProtectedAreaErasable(void)
  1073. {
  1074. return ((READ_BIT(SYSCFG->UR8, SYSCFG_UR8_MEPAD_BANK2) == SYSCFG_UR8_MEPAD_BANK2) ? 1UL : 0UL);
  1075. }
  1076. /**
  1077. * @brief Indicates if the flash secured area (Bank 2) is erased by a mass erase
  1078. * @rmtoll UR8 MESAD_BANK2 LL_SYSCFG_IsFlashB2SecuredAreaErasable
  1079. * @retval State of bit (1 or 0).
  1080. */
  1081. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2SecuredAreaErasable(void)
  1082. {
  1083. return ((READ_BIT(SYSCFG->UR8, SYSCFG_UR8_MESAD_BANK2) == SYSCFG_UR8_MESAD_BANK2) ? 1UL : 0UL);
  1084. }
  1085. /**
  1086. * @brief Indicates if the sector 0 of the Flash memory bank 2 is write protected
  1087. * @rmtoll UR9 WRPN_BANK2 LL_SYSCFG_IsFlashB2Sector0WriteProtected
  1088. * @retval State of bit (1 or 0).
  1089. */
  1090. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector0WriteProtected(void)
  1091. {
  1092. return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR0_STATUS_BIT)) ? 1UL : 0UL);
  1093. }
  1094. /**
  1095. * @brief Indicates if the sector 1 of the Flash memory bank 2 is write protected
  1096. * @rmtoll UR9 WRPN_BANK2 LL_SYSCFG_IsFlashB2Sector1WriteProtected
  1097. * @retval State of bit (1 or 0).
  1098. */
  1099. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector1WriteProtected(void)
  1100. {
  1101. return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR1_STATUS_BIT)) ? 1UL : 0UL);
  1102. }
  1103. /**
  1104. * @brief Indicates if the sector 2 of the Flash memory bank 2 is write protected
  1105. * @rmtoll UR9 WRPN_BANK2 LL_SYSCFG_IsFlashB2Sector2WriteProtected
  1106. * @retval State of bit (1 or 0).
  1107. */
  1108. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector2WriteProtected(void)
  1109. {
  1110. return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR2_STATUS_BIT)) ? 1UL : 0UL);
  1111. }
  1112. /**
  1113. * @brief Indicates if the sector 3 of the Flash memory bank 2 is write protected
  1114. * @rmtoll UR9 WRPN_BANK2 LL_SYSCFG_IsFlashB2Sector3WriteProtected
  1115. * @retval State of bit (1 or 0).
  1116. */
  1117. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector3WriteProtected(void)
  1118. {
  1119. return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR3_STATUS_BIT)) ? 1UL : 0UL);
  1120. }
  1121. /**
  1122. * @brief Indicates if the sector 4 of the Flash memory bank 2 is write protected
  1123. * @rmtoll UR9 WRPN_BANK2 LL_SYSCFG_IsFlashB2Sector4WriteProtected
  1124. * @retval State of bit (1 or 0).
  1125. */
  1126. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector4WriteProtected(void)
  1127. {
  1128. return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR4_STATUS_BIT)) ? 1UL : 0UL);
  1129. }
  1130. /**
  1131. * @brief Indicates if the sector 5 of the Flash memory bank 2 is write protected
  1132. * @rmtoll UR9 WRPN_BANK2 LL_SYSCFG_IsFlashB2Sector5WriteProtected
  1133. * @retval State of bit (1 or 0).
  1134. */
  1135. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector5WriteProtected(void)
  1136. {
  1137. return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR5_STATUS_BIT)) ? 1UL : 0UL);
  1138. }
  1139. /**
  1140. * @brief Indicates if the sector 6 of the Flash memory bank 2 is write protected
  1141. * @rmtoll UR9 WRPN_BANK2 LL_SYSCFG_IsFlashB2Sector6WriteProtected
  1142. * @retval State of bit (1 or 0).
  1143. */
  1144. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector6WriteProtected(void)
  1145. {
  1146. return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR6_STATUS_BIT)) ? 1UL : 0UL);
  1147. }
  1148. /**
  1149. * @brief Indicates if the sector 7 of the Flash memory bank 2 is write protected
  1150. * @rmtoll UR9 WRPN_BANK2 LL_SYSCFG_IsFlashB2Sector7WriteProtected
  1151. * @retval State of bit (1 or 0).
  1152. */
  1153. __STATIC_INLINE uint32_t LL_SYSCFG_IsFlashB2Sector7WriteProtected(void)
  1154. {
  1155. return ((READ_BIT(SYSCFG->UR9, SYSCFG_UR9_WRPN_BANK2) == (SYSCFG_UR9_WRPN_BANK2 & LL_SYSCFG_FLASH_B2_SECTOR7_STATUS_BIT)) ? 1UL : 0UL);
  1156. }
  1157. /**
  1158. * @brief Get the protected area start address for Flash bank 2
  1159. * @rmtoll UR9 PABEG_BANK2 LL_SYSCFG_GetFlashB2ProtectedAreaStartAddress
  1160. * @retval Returned the protected area start address for Flash bank 2
  1161. */
  1162. __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB2ProtectedAreaStartAddress(void)
  1163. {
  1164. return (uint32_t)(READ_BIT(SYSCFG->UR9, SYSCFG_UR9_PABEG_BANK2));
  1165. }
  1166. /**
  1167. * @brief Get the protected area end address for Flash bank 2
  1168. * @rmtoll UR10 PAEND_BANK2 LL_SYSCFG_GetFlashB2ProtectedAreaEndAddress
  1169. * @retval Returned the protected area end address for Flash bank 2
  1170. */
  1171. __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB2ProtectedAreaEndAddress(void)
  1172. {
  1173. return (uint32_t)(READ_BIT(SYSCFG->UR10, SYSCFG_UR10_PAEND_BANK2));
  1174. }
  1175. /**
  1176. * @brief Get the secured area start address for Flash bank 2
  1177. * @rmtoll UR10 SABEG_BANK2 LL_SYSCFG_GetFlashB2SecuredAreaStartAddress
  1178. * @retval Returned the secured area start address for Flash bank 2
  1179. */
  1180. __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB2SecuredAreaStartAddress(void)
  1181. {
  1182. return (uint32_t)(READ_BIT(SYSCFG->UR10, SYSCFG_UR10_SABEG_BANK2));
  1183. }
  1184. /**
  1185. * @brief Get the secured area end address for Flash bank 2
  1186. * @rmtoll UR11 SAEND_BANK2 LL_SYSCFG_GetFlashB2SecuredAreaEndAddress
  1187. * @retval Returned the secured area end address for Flash bank 2
  1188. */
  1189. __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashB2SecuredAreaEndAddress(void)
  1190. {
  1191. return (uint32_t)(READ_BIT(SYSCFG->UR11, SYSCFG_UR11_SAEND_BANK2));
  1192. }
  1193. /**
  1194. * @brief Get the Independent Watchdog 1 control mode (Software or Hardware)
  1195. * @rmtoll UR11 IWDG1M LL_SYSCFG_GetIWDG1ControlMode
  1196. * @retval Returned value can be one of the following values:
  1197. * @arg @ref LL_SYSCFG_IWDG1_SW_CONTROL_MODE
  1198. * @arg @ref LL_SYSCFG_IWDG1_HW_CONTROL_MODE
  1199. */
  1200. __STATIC_INLINE uint32_t LL_SYSCFG_GetIWDG1ControlMode(void)
  1201. {
  1202. return (uint32_t)(READ_BIT(SYSCFG->UR11, SYSCFG_UR11_IWDG1M));
  1203. }
  1204. #if defined (DUAL_CORE)
  1205. /**
  1206. * @brief Get the Independent Watchdog 2 control mode (Software or Hardware)
  1207. * @rmtoll UR12 IWDG2M LL_SYSCFG_GetIWDG2ControlMode
  1208. * @retval Returned value can be one of the following values:
  1209. * @arg @ref LL_SYSCFG_IWDG2_SW_CONTROL_MODE
  1210. * @arg @ref LL_SYSCFG_IWDG2_HW_CONTROL_MODE
  1211. */
  1212. __STATIC_INLINE uint32_t LL_SYSCFG_GetIWDG2ControlMode(void)
  1213. {
  1214. return (uint32_t)(READ_BIT(SYSCFG->UR12, SYSCFG_UR12_IWDG2M));
  1215. }
  1216. #endif /* DUAL_CORE */
  1217. /**
  1218. * @brief Indicates the Secure mode status
  1219. * @rmtoll UR12 SECURE LL_SYSCFG_IsSecureModeEnabled
  1220. * @retval State of bit (1 or 0).
  1221. */
  1222. __STATIC_INLINE uint32_t LL_SYSCFG_IsSecureModeEnabled(void)
  1223. {
  1224. return ((READ_BIT(SYSCFG->UR12, SYSCFG_UR12_SECURE) == SYSCFG_UR12_SECURE) ? 1UL : 0UL);
  1225. }
  1226. /**
  1227. * @brief Indicates if a reset is generated when D1 domain enters DStandby mode
  1228. * @rmtoll UR13 D1SBRST LL_SYSCFG_IsD1StandbyGenerateReset
  1229. * @retval State of bit (1 or 0).
  1230. */
  1231. __STATIC_INLINE uint32_t LL_SYSCFG_IsD1StandbyGenerateReset(void)
  1232. {
  1233. return ((READ_BIT(SYSCFG->UR13, SYSCFG_UR13_D1SBRST) == 0U) ? 1UL : 0UL);
  1234. }
  1235. /**
  1236. * @brief Get the secured DTCM RAM size
  1237. * @rmtoll UR13 SDRS LL_SYSCFG_GetSecuredDTCMSize
  1238. * @retval Returned value can be one of the following values:
  1239. * @arg @ref LL_SYSCFG_DTCM_RAM_SIZE_2KB
  1240. * @arg @ref LL_SYSCFG_DTCM_RAM_SIZE_4KB
  1241. * @arg @ref LL_SYSCFG_DTCM_RAM_SIZE_8KB
  1242. * @arg @ref LL_SYSCFG_DTCM_RAM_SIZE_16KB
  1243. */
  1244. __STATIC_INLINE uint32_t LL_SYSCFG_GetSecuredDTCMSize(void)
  1245. {
  1246. return (uint32_t)(READ_BIT(SYSCFG->UR13, SYSCFG_UR13_SDRS));
  1247. }
  1248. /**
  1249. * @brief Indicates if a reset is generated when D1 domain enters DStop mode
  1250. * @rmtoll UR14 D1STPRST LL_SYSCFG_IsD1StopGenerateReset
  1251. * @retval State of bit (1 or 0).
  1252. */
  1253. __STATIC_INLINE uint32_t LL_SYSCFG_IsD1StopGenerateReset(void)
  1254. {
  1255. return ((READ_BIT(SYSCFG->UR14, SYSCFG_UR14_D1STPRST) == 0U) ? 1UL : 0UL);
  1256. }
  1257. #if defined (DUAL_CORE)
  1258. /**
  1259. * @brief Indicates if a reset is generated when D2 domain enters DStandby mode
  1260. * @rmtoll UR14 D2SBRST LL_SYSCFG_IsD2StandbyGenerateReset
  1261. * @retval State of bit (1 or 0).
  1262. */
  1263. __STATIC_INLINE uint32_t LL_SYSCFG_IsD2StandbyGenerateReset(void)
  1264. {
  1265. return ((READ_BIT(SYSCFG->UR14, SYSCFG_UR14_D2SBRST) == 0U) ? 1UL : 0UL);
  1266. }
  1267. /**
  1268. * @brief Indicates if a reset is generated when D2 domain enters DStop mode
  1269. * @rmtoll UR15 D2STPRST LL_SYSCFG_IsD2StopGenerateReset
  1270. * @retval State of bit (1 or 0).
  1271. */
  1272. __STATIC_INLINE uint32_t LL_SYSCFG_IsD2StopGenerateReset(void)
  1273. {
  1274. return ((READ_BIT(SYSCFG->UR15, SYSCFG_UR15_D2STPRST) == 0U) ? 1UL : 0UL);
  1275. }
  1276. #endif /* DUAL_CORE */
  1277. /**
  1278. * @brief Indicates if the independent watchdog is frozen in Standby mode
  1279. * @rmtoll UR15 FZIWDGSTB LL_SYSCFG_IsIWDGFrozenInStandbyMode
  1280. * @retval State of bit (1 or 0).
  1281. */
  1282. __STATIC_INLINE uint32_t LL_SYSCFG_IsIWDGFrozenInStandbyMode(void)
  1283. {
  1284. return ((READ_BIT(SYSCFG->UR15, SYSCFG_UR15_FZIWDGSTB) == 0U) ? 1UL : 0UL);
  1285. }
  1286. /**
  1287. * @brief Indicates if the independent watchdog is frozen in Stop mode
  1288. * @rmtoll UR16 FZIWDGSTP LL_SYSCFG_IsIWDGFrozenInStopMode
  1289. * @retval State of bit (1 or 0).
  1290. */
  1291. __STATIC_INLINE uint32_t LL_SYSCFG_IsIWDGFrozenInStopMode(void)
  1292. {
  1293. return ((READ_BIT(SYSCFG->UR16, SYSCFG_UR16_FZIWDGSTP) == 0U) ? 1UL : 0UL);
  1294. }
  1295. /**
  1296. * @brief Indicates if the device private key is programmed
  1297. * @rmtoll UR16 PKP LL_SYSCFG_IsPrivateKeyProgrammed
  1298. * @retval State of bit (1 or 0).
  1299. */
  1300. __STATIC_INLINE uint32_t LL_SYSCFG_IsPrivateKeyProgrammed(void)
  1301. {
  1302. return ((READ_BIT(SYSCFG->UR16, SYSCFG_UR16_PKP) == SYSCFG_UR16_PKP) ? 1UL : 0UL);
  1303. }
  1304. /**
  1305. * @brief Indicates if the Product is working on the full voltage range or not
  1306. * @rmtoll UR17 IOHSLV LL_SYSCFG_IsActiveFlag_IOHSLV
  1307. * @note When the IOHSLV option bit is set the Product is working below 2.7 V.
  1308. * When the IOHSLV option bit is reset the Product is working on the
  1309. * full voltage range.
  1310. * @retval State of bit (1 or 0).
  1311. */
  1312. __STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_IOHSLV(void)
  1313. {
  1314. return ((READ_BIT(SYSCFG->UR17, SYSCFG_UR17_IOHSLV) == SYSCFG_UR17_IOHSLV) ? 1UL : 0UL);
  1315. }
  1316. /**
  1317. * @}
  1318. */
  1319. /** @defgroup SYSTEM_LL_EF_DBGMCU DBGMCU
  1320. * @{
  1321. */
  1322. /**
  1323. * @brief Return the device identifier
  1324. * @rmtoll DBGMCU_IDCODE DEV_ID LL_DBGMCU_GetDeviceID
  1325. * @retval Values between Min_Data=0x00 and Max_Data=0xFFF
  1326. */
  1327. __STATIC_INLINE uint32_t LL_DBGMCU_GetDeviceID(void)
  1328. {
  1329. return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_DEV_ID));
  1330. }
  1331. /**
  1332. * @brief Return the device revision identifier
  1333. * @note This field indicates the revision of the device.
  1334. For example, it is read as RevA -> 0x1000, Cat 2 revZ -> 0x1001
  1335. * @rmtoll DBGMCU_IDCODE REV_ID LL_DBGMCU_GetRevisionID
  1336. * @retval Values between Min_Data=0x00 and Max_Data=0xFFFF
  1337. */
  1338. __STATIC_INLINE uint32_t LL_DBGMCU_GetRevisionID(void)
  1339. {
  1340. return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_REV_ID) >> DBGMCU_IDCODE_REV_ID_Pos);
  1341. }
  1342. /**
  1343. * @brief Enable D1 Domain debug during SLEEP mode
  1344. * @rmtoll DBGMCU_CR DBGSLEEP_D1 LL_DBGMCU_EnableD1DebugInSleepMode
  1345. * @retval None
  1346. */
  1347. __STATIC_INLINE void LL_DBGMCU_EnableD1DebugInSleepMode(void)
  1348. {
  1349. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEPD1);
  1350. }
  1351. /**
  1352. * @brief Disable D1 Domain debug during SLEEP mode
  1353. * @rmtoll DBGMCU_CR DBGSLEEP_D1 LL_DBGMCU_DisableD1DebugInSleepMode
  1354. * @retval None
  1355. */
  1356. __STATIC_INLINE void LL_DBGMCU_DisableD1DebugInSleepMode(void)
  1357. {
  1358. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEPD1);
  1359. }
  1360. /**
  1361. * @brief Enable D1 Domain debug during STOP mode
  1362. * @rmtoll DBGMCU_CR DBGSTOP_D1 LL_DBGMCU_EnableD1DebugInStopMode
  1363. * @retval None
  1364. */
  1365. __STATIC_INLINE void LL_DBGMCU_EnableD1DebugInStopMode(void)
  1366. {
  1367. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD1);
  1368. }
  1369. /**
  1370. * @brief Disable D1 Domain debug during STOP mode
  1371. * @rmtoll DBGMCU_CR DBGSTOP_D1 LL_DBGMCU_DisableD1DebugInStopMode
  1372. * @retval None
  1373. */
  1374. __STATIC_INLINE void LL_DBGMCU_DisableD1DebugInStopMode(void)
  1375. {
  1376. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD1);
  1377. }
  1378. /**
  1379. * @brief Enable D1 Domain debug during STANDBY mode
  1380. * @rmtoll DBGMCU_CR DBGSTBY_D1 LL_DBGMCU_EnableD1DebugInStandbyMode
  1381. * @retval None
  1382. */
  1383. __STATIC_INLINE void LL_DBGMCU_EnableD1DebugInStandbyMode(void)
  1384. {
  1385. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD1);
  1386. }
  1387. /**
  1388. * @brief Disable D1 Domain debug during STANDBY mode
  1389. * @rmtoll DBGMCU_CR DBGSTBY_D1 LL_DBGMCU_DisableD1DebugInStandbyMode
  1390. * @retval None
  1391. */
  1392. __STATIC_INLINE void LL_DBGMCU_DisableD1DebugInStandbyMode(void)
  1393. {
  1394. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD1);
  1395. }
  1396. #if defined (DUAL_CORE)
  1397. /**
  1398. * @brief Enable D2 Domain debug during SLEEP mode
  1399. * @rmtoll DBGMCU_CR DBGSLEEP_D2 LL_DBGMCU_EnableD2DebugInSleepMode
  1400. * @retval None
  1401. */
  1402. __STATIC_INLINE void LL_DBGMCU_EnableD2DebugInSleepMode(void)
  1403. {
  1404. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEPD2);
  1405. }
  1406. /**
  1407. * @brief Disable D2 Domain debug during SLEEP mode
  1408. * @rmtoll DBGMCU_CR DBGSLEEP_D2 LL_DBGMCU_DisableD2DebugInSleepMode
  1409. * @retval None
  1410. */
  1411. __STATIC_INLINE void LL_DBGMCU_DisableD2DebugInSleepMode(void)
  1412. {
  1413. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEPD2);
  1414. }
  1415. /**
  1416. * @brief Enable D2 Domain debug during STOP mode
  1417. * @rmtoll DBGMCU_CR DBGSTOP_D2 LL_DBGMCU_EnableD2DebugInStopMode
  1418. * @retval None
  1419. */
  1420. __STATIC_INLINE void LL_DBGMCU_EnableD2DebugInStopMode(void)
  1421. {
  1422. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD2);
  1423. }
  1424. /**
  1425. * @brief Disable D2 Domain debug during STOP mode
  1426. * @rmtoll DBGMCU_CR DBGSTOP_D2 LL_DBGMCU_DisableD2DebugInStopMode
  1427. * @retval None
  1428. */
  1429. __STATIC_INLINE void LL_DBGMCU_DisableD2DebugInStopMode(void)
  1430. {
  1431. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD2);
  1432. }
  1433. /**
  1434. * @brief Enable D2 Domain debug during STANDBY mode
  1435. * @rmtoll DBGMCU_CR DBGSTBY_D2 LL_DBGMCU_EnableD2DebugInStandbyMode
  1436. * @retval None
  1437. */
  1438. __STATIC_INLINE void LL_DBGMCU_EnableD2DebugInStandbyMode(void)
  1439. {
  1440. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD2);
  1441. }
  1442. /**
  1443. * @brief Disable D2 Domain debug during STANDBY mode
  1444. * @rmtoll DBGMCU_CR DBGSTBY_D2 LL_DBGMCU_DisableD2DebugInStandbyMode
  1445. * @retval None
  1446. */
  1447. __STATIC_INLINE void LL_DBGMCU_DisableD2DebugInStandbyMode(void)
  1448. {
  1449. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD2);
  1450. }
  1451. #endif /* DUAL_CORE */
  1452. /**
  1453. * @brief Enable D3 Domain debug during STOP mode
  1454. * @rmtoll DBGMCU_CR DBGSTOP_D3 LL_DBGMCU_EnableD3DebugInStopMode
  1455. * @retval None
  1456. */
  1457. __STATIC_INLINE void LL_DBGMCU_EnableD3DebugInStopMode(void)
  1458. {
  1459. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD3);
  1460. }
  1461. /**
  1462. * @brief Disable D3 Domain debug during STOP mode
  1463. * @rmtoll DBGMCU_CR DBGSTOP_D3 LL_DBGMCU_DisableD3DebugInStopMode
  1464. * @retval None
  1465. */
  1466. __STATIC_INLINE void LL_DBGMCU_DisableD3DebugInStopMode(void)
  1467. {
  1468. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOPD3);
  1469. }
  1470. /**
  1471. * @brief Enable D3 Domain debug during STANDBY mode
  1472. * @rmtoll DBGMCU_CR DBGSTBY_D3 LL_DBGMCU_EnableD3DebugInStandbyMode
  1473. * @retval None
  1474. */
  1475. __STATIC_INLINE void LL_DBGMCU_EnableD3DebugInStandbyMode(void)
  1476. {
  1477. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD3);
  1478. }
  1479. /**
  1480. * @brief Disable D3 Domain debug during STANDBY mode
  1481. * @rmtoll DBGMCU_CR DBGSTBY_D3 LL_DBGMCU_DisableD3DebugInStandbyMode
  1482. * @retval None
  1483. */
  1484. __STATIC_INLINE void LL_DBGMCU_DisableD3DebugInStandbyMode(void)
  1485. {
  1486. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBYD3);
  1487. }
  1488. /**
  1489. * @brief Enable the trace port clock
  1490. * @rmtoll DBGMCU_CR TRACECKEN LL_DBGMCU_EnableTracePortClock
  1491. * @retval None
  1492. */
  1493. __STATIC_INLINE void LL_DBGMCU_EnableTracePortClock(void)
  1494. {
  1495. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TRACECKEN);
  1496. }
  1497. /**
  1498. * @brief Disable the trace port clock
  1499. * @rmtoll DBGMCU_CR TRACECKEN LL_DBGMCU_DisableTracePortClock
  1500. * @retval None
  1501. */
  1502. __STATIC_INLINE void LL_DBGMCU_DisableTracePortClock(void)
  1503. {
  1504. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TRACECKEN);
  1505. }
  1506. /**
  1507. * @brief Enable the D1 debug clock enable
  1508. * @rmtoll DBGMCU_CR CKD1EN LL_DBGMCU_EnableD1DebugClock
  1509. * @retval None
  1510. */
  1511. __STATIC_INLINE void LL_DBGMCU_EnableD1DebugClock(void)
  1512. {
  1513. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CKD1EN);
  1514. }
  1515. /**
  1516. * @brief Disable the D1 debug clock enable
  1517. * @rmtoll DBGMCU_CR CKD1EN LL_DBGMCU_DisableD1DebugClock
  1518. * @retval None
  1519. */
  1520. __STATIC_INLINE void LL_DBGMCU_DisableD1DebugClock(void)
  1521. {
  1522. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CKD1EN);
  1523. }
  1524. /**
  1525. * @brief Enable the D3 debug clock enable
  1526. * @rmtoll DBGMCU_CR CKD3EN LL_DBGMCU_EnableD3DebugClock
  1527. * @retval None
  1528. */
  1529. __STATIC_INLINE void LL_DBGMCU_EnableD3DebugClock(void)
  1530. {
  1531. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CKD3EN);
  1532. }
  1533. /**
  1534. * @brief Disable the D3 debug clock enable
  1535. * @rmtoll DBGMCU_CR CKD3EN LL_DBGMCU_DisableD3DebugClock
  1536. * @retval None
  1537. */
  1538. __STATIC_INLINE void LL_DBGMCU_DisableD3DebugClock(void)
  1539. {
  1540. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_CKD3EN);
  1541. }
  1542. #define LL_DBGMCU_TRGIO_INPUT_DIRECTION 0U
  1543. #define LL_DBGMCU_TRGIO_OUTPUT_DIRECTION DBGMCU_CR_DBG_TRGOEN
  1544. /**
  1545. * @brief Set the direction of the bi-directional trigger pin TRGIO
  1546. * @rmtoll DBGMCU_CR TRGOEN LL_DBGMCU_SetExternalTriggerPinDirection\n
  1547. * @param PinDirection This parameter can be one of the following values:
  1548. * @arg @ref LL_DBGMCU_TRGIO_INPUT_DIRECTION
  1549. * @arg @ref LL_DBGMCU_TRGIO_OUTPUT_DIRECTION
  1550. * @retval None
  1551. */
  1552. __STATIC_INLINE void LL_DBGMCU_SetExternalTriggerPinDirection(uint32_t PinDirection)
  1553. {
  1554. MODIFY_REG(DBGMCU->CR, DBGMCU_CR_DBG_TRGOEN, PinDirection);
  1555. }
  1556. /**
  1557. * @brief Get the direction of the bi-directional trigger pin TRGIO
  1558. * @rmtoll DBGMCU_CR TRGOEN LL_DBGMCU_GetExternalTriggerPinDirection\n
  1559. * @retval Returned value can be one of the following values:
  1560. * @arg @ref LL_DBGMCU_TRGIO_INPUT_DIRECTION
  1561. * @arg @ref LL_DBGMCU_TRGIO_OUTPUT_DIRECTION
  1562. */
  1563. __STATIC_INLINE uint32_t LL_DBGMCU_GetExternalTriggerPinDirection(void)
  1564. {
  1565. return (uint32_t)(READ_BIT(DBGMCU->CR, DBGMCU_CR_DBG_TRGOEN));
  1566. }
  1567. /**
  1568. * @brief Freeze APB1 group1 peripherals
  1569. * @rmtoll DBGMCU_APB1LFZ1 TIM2 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1570. * DBGMCU_APB1LFZ1 TIM3 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1571. * DBGMCU_APB1LFZ1 TIM4 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1572. * DBGMCU_APB1LFZ1 TIM5 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1573. * DBGMCU_APB1LFZ1 TIM6 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1574. * DBGMCU_APB1LFZ1 TIM7 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1575. * DBGMCU_APB1LFZ1 TIM12 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1576. * DBGMCU_APB1LFZ1 TIM13 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1577. * DBGMCU_APB1LFZ1 TIM14 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1578. * DBGMCU_APB1LFZ1 LPTIM1 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1579. * DBGMCU_APB1LFZ1 I2C1 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1580. * DBGMCU_APB1LFZ1 I2C2 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1581. * DBGMCU_APB1LFZ1 I2C3 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1582. * @param Periphs This parameter can be a combination of the following values:
  1583. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP
  1584. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP
  1585. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP
  1586. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP
  1587. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP
  1588. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP
  1589. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM12_STOP
  1590. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM13_STOP
  1591. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM14_STOP
  1592. * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP
  1593. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP
  1594. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP
  1595. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP
  1596. * @retval None
  1597. */
  1598. __STATIC_INLINE void LL_DBGMCU_APB1_GRP1_FreezePeriph(uint32_t Periphs)
  1599. {
  1600. SET_BIT(DBGMCU->APB1LFZ1, Periphs);
  1601. }
  1602. /**
  1603. * @brief Unfreeze APB1 peripherals (group1 peripherals)
  1604. * @rmtoll DBGMCU_APB1LFZ1 TIM2 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1605. * DBGMCU_APB1LFZ1 TIM3 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1606. * DBGMCU_APB1LFZ1 TIM4 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1607. * DBGMCU_APB1LFZ1 TIM5 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1608. * DBGMCU_APB1LFZ1 TIM6 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1609. * DBGMCU_APB1LFZ1 TIM7 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1610. * DBGMCU_APB1LFZ1 TIM12 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1611. * DBGMCU_APB1LFZ1 TIM13 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1612. * DBGMCU_APB1LFZ1 TIM14 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1613. * DBGMCU_APB1LFZ1 LPTIM1 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1614. * DBGMCU_APB1LFZ1 I2C1 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1615. * DBGMCU_APB1LFZ1 I2C2 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1616. * DBGMCU_APB1LFZ1 I2C3 LL_DBGMCU_APB1_GRP1_FreezePeriph\n
  1617. * @param Periphs This parameter can be a combination of the following values:
  1618. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP
  1619. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP
  1620. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP
  1621. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP
  1622. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP
  1623. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP
  1624. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM12_STOP
  1625. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM13_STOP
  1626. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM14_STOP
  1627. * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP
  1628. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP
  1629. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP
  1630. * @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP
  1631. * @retval None
  1632. */
  1633. __STATIC_INLINE void LL_DBGMCU_APB1_GRP1_UnFreezePeriph(uint32_t Periphs)
  1634. {
  1635. CLEAR_BIT(DBGMCU->APB1LFZ1, Periphs);
  1636. }
  1637. /**
  1638. * @brief Freeze APB1 group2 peripherals
  1639. * @rmtoll DBGMCU_APB1HFZ1 FDCAN LL_DBGMCU_APB1_GRP2_FreezePeriph\n
  1640. * @param Periphs This parameter can be a combination of the following values:
  1641. * @arg @ref LL_DBGMCU_APB1_GRP2_FDCAN_STOP
  1642. * @retval None
  1643. */
  1644. __STATIC_INLINE void LL_DBGMCU_APB1_GRP2_FreezePeriph(uint32_t Periphs)
  1645. {
  1646. SET_BIT(DBGMCU->APB1HFZ1, Periphs);
  1647. }
  1648. /**
  1649. * @brief Unfreeze APB1 group2 peripherals
  1650. * @rmtoll DBGMCU_APB1HFZ1 FDCAN LL_DBGMCU_APB1_GRP2_UnFreezePeriph\n
  1651. * @param Periphs This parameter can be a combination of the following values:
  1652. * @arg @ref LL_DBGMCU_APB1_GRP2_FDCAN_STOP
  1653. * @retval None
  1654. */
  1655. __STATIC_INLINE void LL_DBGMCU_APB1_GRP2_UnFreezePeriph(uint32_t Periphs)
  1656. {
  1657. CLEAR_BIT(DBGMCU->APB1HFZ1, Periphs);
  1658. }
  1659. /**
  1660. * @brief Freeze APB2 peripherals
  1661. * @rmtoll DBGMCU_APB2FZ1 TIM1 LL_DBGMCU_APB2_GRP1_FreezePeriph\n
  1662. * DBGMCU_APB2FZ1 TIM8 LL_DBGMCU_APB2_GRP1_FreezePeriph\n
  1663. * DBGMCU_APB2FZ1 TIM15 LL_DBGMCU_APB2_GRP1_FreezePeriph\n
  1664. * DBGMCU_APB2FZ1 TIM16 LL_DBGMCU_APB2_GRP1_FreezePeriph\n
  1665. * DBGMCU_APB2FZ1 TIM17 LL_DBGMCU_APB2_GRP1_FreezePeriph
  1666. * DBGMCU_APB2FZ1 HRTIM LL_DBGMCU_APB2_GRP1_FreezePeriph
  1667. * @param Periphs This parameter can be a combination of the following values:
  1668. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP
  1669. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP
  1670. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM15_STOP
  1671. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM16_STOP
  1672. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM17_STOP
  1673. * @arg @ref LL_DBGMCU_APB2_GRP1_HRTIM_STOP
  1674. * @retval None
  1675. */
  1676. __STATIC_INLINE void LL_DBGMCU_APB2_GRP1_FreezePeriph(uint32_t Periphs)
  1677. {
  1678. SET_BIT(DBGMCU->APB2FZ1, Periphs);
  1679. }
  1680. /**
  1681. * @brief Unfreeze APB2 peripherals
  1682. * @rmtoll DBGMCU_APB2FZ1 TIM1 LL_DBGMCU_APB2_GRP1_FreezePeriph\n
  1683. * DBGMCU_APB2FZ1 TIM8 LL_DBGMCU_APB2_GRP1_FreezePeriph\n
  1684. * DBGMCU_APB2FZ1 TIM15 LL_DBGMCU_APB2_GRP1_FreezePeriph\n
  1685. * DBGMCU_APB2FZ1 TIM16 LL_DBGMCU_APB2_GRP1_FreezePeriph\n
  1686. * DBGMCU_APB2FZ1 TIM17 LL_DBGMCU_APB2_GRP1_FreezePeriph
  1687. * DBGMCU_APB2FZ1 HRTIM LL_DBGMCU_APB2_GRP1_FreezePeriph
  1688. * @param Periphs This parameter can be a combination of the following values:
  1689. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP
  1690. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP
  1691. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM15_STOP
  1692. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM16_STOP
  1693. * @arg @ref LL_DBGMCU_APB2_GRP1_TIM17_STOP
  1694. * @arg @ref LL_DBGMCU_APB2_GRP1_HRTIM_STOP
  1695. * @retval None
  1696. */
  1697. __STATIC_INLINE void LL_DBGMCU_APB2_GRP1_UnFreezePeriph(uint32_t Periphs)
  1698. {
  1699. CLEAR_BIT(DBGMCU->APB2FZ1, Periphs);
  1700. }
  1701. /**
  1702. * @brief Freeze APB3 peripherals
  1703. * @rmtoll DBGMCU_APB3FZ1 WWDG1 LL_DBGMCU_APB3_GRP1_FreezePeriph\n
  1704. * @param Periphs This parameter can be a combination of the following values:
  1705. * @arg @ref LL_DBGMCU_APB3_GRP1_WWDG1_STOP
  1706. * @retval None
  1707. */
  1708. __STATIC_INLINE void LL_DBGMCU_APB3_GRP1_FreezePeriph(uint32_t Periphs)
  1709. {
  1710. SET_BIT(DBGMCU->APB3FZ1, Periphs);
  1711. }
  1712. /**
  1713. * @brief Unfreeze APB3 peripherals
  1714. * @rmtoll DBGMCU_APB3FZ1 WWDG1 LL_DBGMCU_APB3_GRP1_UnFreezePeriph\n
  1715. * @param Periphs This parameter can be a combination of the following values:
  1716. * @arg @ref LL_DBGMCU_APB3_GRP1_WWDG1_STOP
  1717. * @retval None
  1718. */
  1719. __STATIC_INLINE void LL_DBGMCU_APB3_GRP1_UnFreezePeriph(uint32_t Periphs)
  1720. {
  1721. CLEAR_BIT(DBGMCU->APB3FZ1, Periphs);
  1722. }
  1723. /**
  1724. * @brief Freeze APB4 peripherals
  1725. * @rmtoll DBGMCU_APB4FZ1 I2C4 LL_DBGMCU_APB4_GRP1_FreezePeriph\n
  1726. * @rmtoll DBGMCU_APB4FZ1 LPTIM2 LL_DBGMCU_APB4_GRP1_FreezePeriph\n
  1727. * @rmtoll DBGMCU_APB4FZ1 LPTIM3 LL_DBGMCU_APB4_GRP1_FreezePeriph\n
  1728. * @rmtoll DBGMCU_APB4FZ1 LPTIM4 LL_DBGMCU_APB4_GRP1_FreezePeriph\n
  1729. * @rmtoll DBGMCU_APB4FZ1 LPTIM5 LL_DBGMCU_APB4_GRP1_FreezePeriph\n
  1730. * @rmtoll DBGMCU_APB4FZ1 RTC LL_DBGMCU_APB4_GRP1_FreezePeriph\n
  1731. * @rmtoll DBGMCU_APB4FZ1 WDGLSD1 LL_DBGMCU_APB4_GRP1_FreezePeriph\n
  1732. * @param Periphs This parameter can be a combination of the following values:
  1733. * @arg @ref LL_DBGMCU_APB4_GRP1_I2C4_STOP
  1734. * @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM2_STOP
  1735. * @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM3_STOP
  1736. * @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM4_STOP
  1737. * @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM5_STOP
  1738. * @arg @ref LL_DBGMCU_APB4_GRP1_RTC_STOP
  1739. * @arg @ref LL_DBGMCU_APB4_GRP1_IWDG1_STOP
  1740. * @retval None
  1741. */
  1742. __STATIC_INLINE void LL_DBGMCU_APB4_GRP1_FreezePeriph(uint32_t Periphs)
  1743. {
  1744. SET_BIT(DBGMCU->APB4FZ1, Periphs);
  1745. }
  1746. /**
  1747. * @brief Unfreeze APB4 peripherals
  1748. * @rmtoll DBGMCU_APB4FZ1 I2C4 LL_DBGMCU_APB4_GRP1_FreezePeriph\n
  1749. * @rmtoll DBGMCU_APB4FZ1 LPTIM2 LL_DBGMCU_APB4_GRP1_FreezePeriph\n
  1750. * @rmtoll DBGMCU_APB4FZ1 LPTIM3 LL_DBGMCU_APB4_GRP1_FreezePeriph\n
  1751. * @rmtoll DBGMCU_APB4FZ1 LPTIM4 LL_DBGMCU_APB4_GRP1_FreezePeriph\n
  1752. * @rmtoll DBGMCU_APB4FZ1 LPTIM5 LL_DBGMCU_APB4_GRP1_FreezePeriph\n
  1753. * @rmtoll DBGMCU_APB4FZ1 RTC LL_DBGMCU_APB4_GRP1_FreezePeriph\n
  1754. * @rmtoll DBGMCU_APB4FZ1 WDGLSD1 LL_DBGMCU_APB4_GRP1_FreezePeriph\n
  1755. * @param Periphs This parameter can be a combination of the following values:
  1756. * @arg @ref LL_DBGMCU_APB4_GRP1_I2C4_STOP
  1757. * @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM2_STOP
  1758. * @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM3_STOP
  1759. * @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM4_STOP
  1760. * @arg @ref LL_DBGMCU_APB4_GRP1_LPTIM5_STOP
  1761. * @arg @ref LL_DBGMCU_APB4_GRP1_RTC_STOP
  1762. * @arg @ref LL_DBGMCU_APB4_GRP1_IWDG1_STOP
  1763. * @retval None
  1764. */
  1765. __STATIC_INLINE void LL_DBGMCU_APB4_GRP1_UnFreezePeriph(uint32_t Periphs)
  1766. {
  1767. CLEAR_BIT(DBGMCU->APB4FZ1, Periphs);
  1768. }
  1769. /**
  1770. * @}
  1771. */
  1772. /** @defgroup SYSTEM_LL_EF_FLASH FLASH
  1773. * @{
  1774. */
  1775. /**
  1776. * @brief Set FLASH Latency
  1777. * @rmtoll FLASH_ACR LATENCY LL_FLASH_SetLatency
  1778. * @param Latency This parameter can be one of the following values:
  1779. * @arg @ref LL_FLASH_LATENCY_0
  1780. * @arg @ref LL_FLASH_LATENCY_1
  1781. * @arg @ref LL_FLASH_LATENCY_2
  1782. * @arg @ref LL_FLASH_LATENCY_3
  1783. * @arg @ref LL_FLASH_LATENCY_4
  1784. * @arg @ref LL_FLASH_LATENCY_5
  1785. * @arg @ref LL_FLASH_LATENCY_6
  1786. * @arg @ref LL_FLASH_LATENCY_7
  1787. * @retval None
  1788. */
  1789. __STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency)
  1790. {
  1791. MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency);
  1792. }
  1793. /**
  1794. * @brief Get FLASH Latency
  1795. * @rmtoll FLASH_ACR LATENCY LL_FLASH_GetLatency
  1796. * @retval Returned value can be one of the following values:
  1797. * @arg @ref LL_FLASH_LATENCY_0
  1798. * @arg @ref LL_FLASH_LATENCY_1
  1799. * @arg @ref LL_FLASH_LATENCY_2
  1800. * @arg @ref LL_FLASH_LATENCY_3
  1801. * @arg @ref LL_FLASH_LATENCY_4
  1802. * @arg @ref LL_FLASH_LATENCY_5
  1803. * @arg @ref LL_FLASH_LATENCY_6
  1804. * @arg @ref LL_FLASH_LATENCY_7
  1805. */
  1806. __STATIC_INLINE uint32_t LL_FLASH_GetLatency(void)
  1807. {
  1808. return (uint32_t)(READ_BIT(FLASH->ACR, FLASH_ACR_LATENCY));
  1809. }
  1810. /**
  1811. * @}
  1812. */
  1813. /**
  1814. * @}
  1815. */
  1816. /**
  1817. * @}
  1818. */
  1819. #endif /* defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) */
  1820. /**
  1821. * @}
  1822. */
  1823. #ifdef __cplusplus
  1824. }
  1825. #endif
  1826. #endif /* __STM32H7xx_LL_SYSTEM_H */
  1827. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/