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