Mercurial > pub > halpp
comparison l476rg/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc.h @ 0:32a3b1785697
a rough draft of Hardware Abstraction Layer for C++
STM32L476RG drivers
author | cin |
---|---|
date | Thu, 12 Jan 2017 02:45:43 +0300 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:32a3b1785697 |
---|---|
1 /** | |
2 ****************************************************************************** | |
3 * @file stm32l4xx_hal_rcc.h | |
4 * @author MCD Application Team | |
5 * @version V1.6.0 | |
6 * @date 28-October-2016 | |
7 * @brief Header file of RCC HAL module. | |
8 ****************************************************************************** | |
9 * @attention | |
10 * | |
11 * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> | |
12 * | |
13 * Redistribution and use in source and binary forms, with or without modification, | |
14 * are permitted provided that the following conditions are met: | |
15 * 1. Redistributions of source code must retain the above copyright notice, | |
16 * this list of conditions and the following disclaimer. | |
17 * 2. Redistributions in binary form must reproduce the above copyright notice, | |
18 * this list of conditions and the following disclaimer in the documentation | |
19 * and/or other materials provided with the distribution. | |
20 * 3. Neither the name of STMicroelectronics nor the names of its contributors | |
21 * may be used to endorse or promote products derived from this software | |
22 * without specific prior written permission. | |
23 * | |
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | |
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | |
30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |
31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |
32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
34 * | |
35 ****************************************************************************** | |
36 */ | |
37 | |
38 /* Define to prevent recursive inclusion -------------------------------------*/ | |
39 #ifndef __STM32L4xx_HAL_RCC_H | |
40 #define __STM32L4xx_HAL_RCC_H | |
41 | |
42 #ifdef __cplusplus | |
43 extern "C" { | |
44 #endif | |
45 | |
46 /* Includes ------------------------------------------------------------------*/ | |
47 #include "stm32l4xx_hal_def.h" | |
48 | |
49 /** @addtogroup STM32L4xx_HAL_Driver | |
50 * @{ | |
51 */ | |
52 | |
53 /** @addtogroup RCC | |
54 * @{ | |
55 */ | |
56 | |
57 /* Exported types ------------------------------------------------------------*/ | |
58 /** @defgroup RCC_Exported_Types RCC Exported Types | |
59 * @{ | |
60 */ | |
61 | |
62 /** | |
63 * @brief RCC PLL configuration structure definition | |
64 */ | |
65 typedef struct | |
66 { | |
67 uint32_t PLLState; /*!< The new state of the PLL. | |
68 This parameter can be a value of @ref RCC_PLL_Config */ | |
69 | |
70 uint32_t PLLSource; /*!< RCC_PLLSource: PLL entry clock source. | |
71 This parameter must be a value of @ref RCC_PLL_Clock_Source */ | |
72 | |
73 uint32_t PLLM; /*!< PLLM: Division factor for PLL VCO input clock. | |
74 This parameter must be a number between Min_Data = 1 and Max_Data = 8 */ | |
75 | |
76 uint32_t PLLN; /*!< PLLN: Multiplication factor for PLL VCO output clock. | |
77 This parameter must be a number between Min_Data = 8 and Max_Data = 86 */ | |
78 | |
79 uint32_t PLLP; /*!< PLLP: Division factor for SAI clock. | |
80 This parameter must be a value of @ref RCC_PLLP_Clock_Divider */ | |
81 | |
82 uint32_t PLLQ; /*!< PLLQ: Division factor for SDMMC1, RNG and USB clocks. | |
83 This parameter must be a value of @ref RCC_PLLQ_Clock_Divider */ | |
84 | |
85 uint32_t PLLR; /*!< PLLR: Division for the main system clock. | |
86 User have to set the PLLR parameter correctly to not exceed max frequency 80MHZ. | |
87 This parameter must be a value of @ref RCC_PLLR_Clock_Divider */ | |
88 | |
89 }RCC_PLLInitTypeDef; | |
90 | |
91 /** | |
92 * @brief RCC Internal/External Oscillator (HSE, HSI, MSI, LSE and LSI) configuration structure definition | |
93 */ | |
94 typedef struct | |
95 { | |
96 uint32_t OscillatorType; /*!< The oscillators to be configured. | |
97 This parameter can be a value of @ref RCC_Oscillator_Type */ | |
98 | |
99 uint32_t HSEState; /*!< The new state of the HSE. | |
100 This parameter can be a value of @ref RCC_HSE_Config */ | |
101 | |
102 uint32_t LSEState; /*!< The new state of the LSE. | |
103 This parameter can be a value of @ref RCC_LSE_Config */ | |
104 | |
105 uint32_t HSIState; /*!< The new state of the HSI. | |
106 This parameter can be a value of @ref RCC_HSI_Config */ | |
107 | |
108 uint32_t HSICalibrationValue; /*!< The calibration trimming value (default is RCC_HSICALIBRATION_DEFAULT). | |
109 This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x1F on STM32L43x/STM32L44x/STM32L47x/STM32L48x devices. | |
110 This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7F on the other devices */ | |
111 | |
112 uint32_t LSIState; /*!< The new state of the LSI. | |
113 This parameter can be a value of @ref RCC_LSI_Config */ | |
114 | |
115 uint32_t MSIState; /*!< The new state of the MSI. | |
116 This parameter can be a value of @ref RCC_MSI_Config */ | |
117 | |
118 uint32_t MSICalibrationValue; /*!< The calibration trimming value (default is RCC_MSICALIBRATION_DEFAULT). | |
119 This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF */ | |
120 | |
121 uint32_t MSIClockRange; /*!< The MSI frequency range. | |
122 This parameter can be a value of @ref RCC_MSI_Clock_Range */ | |
123 | |
124 uint32_t HSI48State; /*!< The new state of the HSI48 (only applicable to STM32L43x/STM32L44x/STM32L45x/STM32L46x devices). | |
125 This parameter can be a value of @ref RCC_HSI48_Config */ | |
126 | |
127 RCC_PLLInitTypeDef PLL; /*!< Main PLL structure parameters */ | |
128 | |
129 }RCC_OscInitTypeDef; | |
130 | |
131 /** | |
132 * @brief RCC System, AHB and APB busses clock configuration structure definition | |
133 */ | |
134 typedef struct | |
135 { | |
136 uint32_t ClockType; /*!< The clock to be configured. | |
137 This parameter can be a value of @ref RCC_System_Clock_Type */ | |
138 | |
139 uint32_t SYSCLKSource; /*!< The clock source used as system clock (SYSCLK). | |
140 This parameter can be a value of @ref RCC_System_Clock_Source */ | |
141 | |
142 uint32_t AHBCLKDivider; /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK). | |
143 This parameter can be a value of @ref RCC_AHB_Clock_Source */ | |
144 | |
145 uint32_t APB1CLKDivider; /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK). | |
146 This parameter can be a value of @ref RCC_APB1_APB2_Clock_Source */ | |
147 | |
148 uint32_t APB2CLKDivider; /*!< The APB2 clock (PCLK2) divider. This clock is derived from the AHB clock (HCLK). | |
149 This parameter can be a value of @ref RCC_APB1_APB2_Clock_Source */ | |
150 | |
151 }RCC_ClkInitTypeDef; | |
152 | |
153 /** | |
154 * @} | |
155 */ | |
156 | |
157 /* Exported constants --------------------------------------------------------*/ | |
158 /** @defgroup RCC_Exported_Constants RCC Exported Constants | |
159 * @{ | |
160 */ | |
161 | |
162 /** @defgroup RCC_Timeout_Value Timeout Values | |
163 * @{ | |
164 */ | |
165 #define RCC_DBP_TIMEOUT_VALUE ((uint32_t)2U) /* 2 ms (minimum Tick + 1) */ | |
166 #define RCC_LSE_TIMEOUT_VALUE LSE_STARTUP_TIMEOUT | |
167 /** | |
168 * @} | |
169 */ | |
170 | |
171 /** @defgroup RCC_Oscillator_Type Oscillator Type | |
172 * @{ | |
173 */ | |
174 #define RCC_OSCILLATORTYPE_NONE ((uint32_t)0x00000000U) /*!< Oscillator configuration unchanged */ | |
175 #define RCC_OSCILLATORTYPE_HSE ((uint32_t)0x00000001U) /*!< HSE to configure */ | |
176 #define RCC_OSCILLATORTYPE_HSI ((uint32_t)0x00000002U) /*!< HSI to configure */ | |
177 #define RCC_OSCILLATORTYPE_LSE ((uint32_t)0x00000004U) /*!< LSE to configure */ | |
178 #define RCC_OSCILLATORTYPE_LSI ((uint32_t)0x00000008U) /*!< LSI to configure */ | |
179 #define RCC_OSCILLATORTYPE_MSI ((uint32_t)0x00000010U) /*!< MSI to configure */ | |
180 #if defined(RCC_HSI48_SUPPORT) | |
181 #define RCC_OSCILLATORTYPE_HSI48 ((uint32_t)0x00000020U) /*!< HSI48 to configure */ | |
182 #endif /* RCC_HSI48_SUPPORT */ | |
183 /** | |
184 * @} | |
185 */ | |
186 | |
187 /** @defgroup RCC_HSE_Config HSE Config | |
188 * @{ | |
189 */ | |
190 #define RCC_HSE_OFF ((uint32_t)0x00000000U) /*!< HSE clock deactivation */ | |
191 #define RCC_HSE_ON RCC_CR_HSEON /*!< HSE clock activation */ | |
192 #define RCC_HSE_BYPASS ((uint32_t)(RCC_CR_HSEBYP | RCC_CR_HSEON)) /*!< External clock source for HSE clock */ | |
193 /** | |
194 * @} | |
195 */ | |
196 | |
197 /** @defgroup RCC_LSE_Config LSE Config | |
198 * @{ | |
199 */ | |
200 #define RCC_LSE_OFF ((uint32_t)0x00000000U) /*!< LSE clock deactivation */ | |
201 #define RCC_LSE_ON RCC_BDCR_LSEON /*!< LSE clock activation */ | |
202 #define RCC_LSE_BYPASS ((uint32_t)(RCC_BDCR_LSEBYP | RCC_BDCR_LSEON)) /*!< External clock source for LSE clock */ | |
203 /** | |
204 * @} | |
205 */ | |
206 | |
207 /** @defgroup RCC_HSI_Config HSI Config | |
208 * @{ | |
209 */ | |
210 #define RCC_HSI_OFF ((uint32_t)0x00000000U) /*!< HSI clock deactivation */ | |
211 #define RCC_HSI_ON RCC_CR_HSION /*!< HSI clock activation */ | |
212 | |
213 #if defined(STM32L431xx) || defined(STM32L432xx) || defined(STM32L433xx) || defined(STM32L442xx) || defined(STM32L443xx) || \ | |
214 defined(STM32L471xx) || defined(STM32L475xx) || defined(STM32L476xx) || defined(STM32L485xx) || defined(STM32L486xx) | |
215 #define RCC_HSICALIBRATION_DEFAULT ((uint32_t)0x10U) /* Default HSI calibration trimming value */ | |
216 #else | |
217 #define RCC_HSICALIBRATION_DEFAULT ((uint32_t)0x40U) /* Default HSI calibration trimming value */ | |
218 #endif /* STM32L431xx || STM32L432xx || STM32L433xx || STM32L442xx || STM32L443xx || */ | |
219 /* STM32L471xx || STM32L475xx || STM32L476xx || STM32L485xx || STM32L486xx */ | |
220 /** | |
221 * @} | |
222 */ | |
223 | |
224 /** @defgroup RCC_LSI_Config LSI Config | |
225 * @{ | |
226 */ | |
227 #define RCC_LSI_OFF ((uint32_t)0x00000000U) /*!< LSI clock deactivation */ | |
228 #define RCC_LSI_ON RCC_CSR_LSION /*!< LSI clock activation */ | |
229 /** | |
230 * @} | |
231 */ | |
232 | |
233 /** @defgroup RCC_MSI_Config MSI Config | |
234 * @{ | |
235 */ | |
236 #define RCC_MSI_OFF ((uint32_t)0x00000000U) /*!< MSI clock deactivation */ | |
237 #define RCC_MSI_ON RCC_CR_MSION /*!< MSI clock activation */ | |
238 | |
239 #define RCC_MSICALIBRATION_DEFAULT ((uint32_t)0) /*!< Default MSI calibration trimming value */ | |
240 /** | |
241 * @} | |
242 */ | |
243 | |
244 #if defined(RCC_HSI48_SUPPORT) | |
245 /** @defgroup RCC_HSI48_Config HSI48 Config | |
246 * @{ | |
247 */ | |
248 #define RCC_HSI48_OFF ((uint32_t)0x00000000U) /*!< HSI48 clock deactivation */ | |
249 #define RCC_HSI48_ON RCC_CRRCR_HSI48ON /*!< HSI48 clock activation */ | |
250 /** | |
251 * @} | |
252 */ | |
253 #else | |
254 /** @defgroup RCC_HSI48_Config HSI48 Config | |
255 * @{ | |
256 */ | |
257 #define RCC_HSI48_OFF ((uint32_t)0x00000000U) /*!< HSI48 clock deactivation */ | |
258 /** | |
259 * @} | |
260 */ | |
261 #endif /* RCC_HSI48_SUPPORT */ | |
262 | |
263 /** @defgroup RCC_PLL_Config PLL Config | |
264 * @{ | |
265 */ | |
266 #define RCC_PLL_NONE ((uint32_t)0x00000000U) /*!< PLL configuration unchanged */ | |
267 #define RCC_PLL_OFF ((uint32_t)0x00000001U) /*!< PLL deactivation */ | |
268 #define RCC_PLL_ON ((uint32_t)0x00000002U) /*!< PLL activation */ | |
269 /** | |
270 * @} | |
271 */ | |
272 | |
273 /** @defgroup RCC_PLLP_Clock_Divider PLLP Clock Divider | |
274 * @{ | |
275 */ | |
276 #if defined(RCC_PLLP_DIV_2_31_SUPPORT) | |
277 #define RCC_PLLP_DIV2 ((uint32_t)0x00000002U) /*!< PLLP division factor = 2 */ | |
278 #define RCC_PLLP_DIV3 ((uint32_t)0x00000003U) /*!< PLLP division factor = 3 */ | |
279 #define RCC_PLLP_DIV4 ((uint32_t)0x00000004U) /*!< PLLP division factor = 4 */ | |
280 #define RCC_PLLP_DIV5 ((uint32_t)0x00000005U) /*!< PLLP division factor = 5 */ | |
281 #define RCC_PLLP_DIV6 ((uint32_t)0x00000006U) /*!< PLLP division factor = 6 */ | |
282 #define RCC_PLLP_DIV7 ((uint32_t)0x00000007U) /*!< PLLP division factor = 7 */ | |
283 #define RCC_PLLP_DIV8 ((uint32_t)0x00000008U) /*!< PLLP division factor = 8 */ | |
284 #define RCC_PLLP_DIV9 ((uint32_t)0x00000009U) /*!< PLLP division factor = 9 */ | |
285 #define RCC_PLLP_DIV10 ((uint32_t)0x0000000AU) /*!< PLLP division factor = 10 */ | |
286 #define RCC_PLLP_DIV11 ((uint32_t)0x0000000BU) /*!< PLLP division factor = 11 */ | |
287 #define RCC_PLLP_DIV12 ((uint32_t)0x0000000CU) /*!< PLLP division factor = 12 */ | |
288 #define RCC_PLLP_DIV13 ((uint32_t)0x0000000DU) /*!< PLLP division factor = 13 */ | |
289 #define RCC_PLLP_DIV14 ((uint32_t)0x0000000EU) /*!< PLLP division factor = 14 */ | |
290 #define RCC_PLLP_DIV15 ((uint32_t)0x0000000FU) /*!< PLLP division factor = 15 */ | |
291 #define RCC_PLLP_DIV16 ((uint32_t)0x00000010U) /*!< PLLP division factor = 16 */ | |
292 #define RCC_PLLP_DIV17 ((uint32_t)0x00000011U) /*!< PLLP division factor = 17 */ | |
293 #define RCC_PLLP_DIV18 ((uint32_t)0x00000012U) /*!< PLLP division factor = 18 */ | |
294 #define RCC_PLLP_DIV19 ((uint32_t)0x00000013U) /*!< PLLP division factor = 19 */ | |
295 #define RCC_PLLP_DIV20 ((uint32_t)0x00000014U) /*!< PLLP division factor = 20 */ | |
296 #define RCC_PLLP_DIV21 ((uint32_t)0x00000015U) /*!< PLLP division factor = 21 */ | |
297 #define RCC_PLLP_DIV22 ((uint32_t)0x00000016U) /*!< PLLP division factor = 22 */ | |
298 #define RCC_PLLP_DIV23 ((uint32_t)0x00000017U) /*!< PLLP division factor = 23 */ | |
299 #define RCC_PLLP_DIV24 ((uint32_t)0x00000018U) /*!< PLLP division factor = 24 */ | |
300 #define RCC_PLLP_DIV25 ((uint32_t)0x00000019U) /*!< PLLP division factor = 25 */ | |
301 #define RCC_PLLP_DIV26 ((uint32_t)0x0000001AU) /*!< PLLP division factor = 26 */ | |
302 #define RCC_PLLP_DIV27 ((uint32_t)0x0000001BU) /*!< PLLP division factor = 27 */ | |
303 #define RCC_PLLP_DIV28 ((uint32_t)0x0000001CU) /*!< PLLP division factor = 28 */ | |
304 #define RCC_PLLP_DIV29 ((uint32_t)0x0000001DU) /*!< PLLP division factor = 29 */ | |
305 #define RCC_PLLP_DIV30 ((uint32_t)0x0000001EU) /*!< PLLP division factor = 30 */ | |
306 #define RCC_PLLP_DIV31 ((uint32_t)0x0000001FU) /*!< PLLP division factor = 31 */ | |
307 #else | |
308 #define RCC_PLLP_DIV7 ((uint32_t)0x00000007U) /*!< PLLP division factor = 7 */ | |
309 #define RCC_PLLP_DIV17 ((uint32_t)0x00000011U) /*!< PLLP division factor = 17 */ | |
310 #endif /* RCC_PLLP_DIV_2_31_SUPPORT */ | |
311 /** | |
312 * @} | |
313 */ | |
314 | |
315 /** @defgroup RCC_PLLQ_Clock_Divider PLLQ Clock Divider | |
316 * @{ | |
317 */ | |
318 #define RCC_PLLQ_DIV2 ((uint32_t)0x00000002U) /*!< PLLQ division factor = 2 */ | |
319 #define RCC_PLLQ_DIV4 ((uint32_t)0x00000004U) /*!< PLLQ division factor = 4 */ | |
320 #define RCC_PLLQ_DIV6 ((uint32_t)0x00000006U) /*!< PLLQ division factor = 6 */ | |
321 #define RCC_PLLQ_DIV8 ((uint32_t)0x00000008U) /*!< PLLQ division factor = 8 */ | |
322 /** | |
323 * @} | |
324 */ | |
325 | |
326 /** @defgroup RCC_PLLR_Clock_Divider PLLR Clock Divider | |
327 * @{ | |
328 */ | |
329 #define RCC_PLLR_DIV2 ((uint32_t)0x00000002U) /*!< PLLR division factor = 2 */ | |
330 #define RCC_PLLR_DIV4 ((uint32_t)0x00000004U) /*!< PLLR division factor = 4 */ | |
331 #define RCC_PLLR_DIV6 ((uint32_t)0x00000006U) /*!< PLLR division factor = 6 */ | |
332 #define RCC_PLLR_DIV8 ((uint32_t)0x00000008U) /*!< PLLR division factor = 8 */ | |
333 /** | |
334 * @} | |
335 */ | |
336 | |
337 /** @defgroup RCC_PLL_Clock_Source PLL Clock Source | |
338 * @{ | |
339 */ | |
340 #define RCC_PLLSOURCE_NONE ((uint32_t)0x00000000U) /*!< No clock selected as PLL entry clock source */ | |
341 #define RCC_PLLSOURCE_MSI RCC_PLLCFGR_PLLSRC_MSI /*!< MSI clock selected as PLL entry clock source */ | |
342 #define RCC_PLLSOURCE_HSI RCC_PLLCFGR_PLLSRC_HSI /*!< HSI clock selected as PLL entry clock source */ | |
343 #define RCC_PLLSOURCE_HSE RCC_PLLCFGR_PLLSRC_HSE /*!< HSE clock selected as PLL entry clock source */ | |
344 /** | |
345 * @} | |
346 */ | |
347 | |
348 /** @defgroup RCC_PLL_Clock_Output PLL Clock Output | |
349 * @{ | |
350 */ | |
351 #if defined(RCC_PLLSAI2_SUPPORT) | |
352 #define RCC_PLL_SAI3CLK RCC_PLLCFGR_PLLPEN /*!< PLLSAI3CLK selection from main PLL (for devices with PLLSAI2) */ | |
353 #else | |
354 #define RCC_PLL_SAI2CLK RCC_PLLCFGR_PLLPEN /*!< PLLSAI2CLK selection from main PLL (for devices without PLLSAI2) */ | |
355 #endif /* RCC_PLLSAI2_SUPPORT */ | |
356 #define RCC_PLL_48M1CLK RCC_PLLCFGR_PLLQEN /*!< PLL48M1CLK selection from main PLL */ | |
357 #define RCC_PLL_SYSCLK RCC_PLLCFGR_PLLREN /*!< PLLCLK selection from main PLL */ | |
358 /** | |
359 * @} | |
360 */ | |
361 | |
362 /** @defgroup RCC_PLLSAI1_Clock_Output PLLSAI1 Clock Output | |
363 * @{ | |
364 */ | |
365 #define RCC_PLLSAI1_SAI1CLK RCC_PLLSAI1CFGR_PLLSAI1PEN /*!< PLLSAI1CLK selection from PLLSAI1 */ | |
366 #define RCC_PLLSAI1_48M2CLK RCC_PLLSAI1CFGR_PLLSAI1QEN /*!< PLL48M2CLK selection from PLLSAI1 */ | |
367 #define RCC_PLLSAI1_ADC1CLK RCC_PLLSAI1CFGR_PLLSAI1REN /*!< PLLADC1CLK selection from PLLSAI1 */ | |
368 /** | |
369 * @} | |
370 */ | |
371 | |
372 #if defined(RCC_PLLSAI2_SUPPORT) | |
373 | |
374 /** @defgroup RCC_PLLSAI2_Clock_Output PLLSAI2 Clock Output | |
375 * @{ | |
376 */ | |
377 #define RCC_PLLSAI2_SAI2CLK RCC_PLLSAI2CFGR_PLLSAI2PEN /*!< PLLSAI2CLK selection from PLLSAI2 */ | |
378 #define RCC_PLLSAI2_ADC2CLK RCC_PLLSAI2CFGR_PLLSAI2REN /*!< PLLADC2CLK selection from PLLSAI2 */ | |
379 /** | |
380 * @} | |
381 */ | |
382 | |
383 #endif /* RCC_PLLSAI2_SUPPORT */ | |
384 | |
385 /** @defgroup RCC_MSI_Clock_Range MSI Clock Range | |
386 * @{ | |
387 */ | |
388 #define RCC_MSIRANGE_0 RCC_CR_MSIRANGE_0 /*!< MSI = 100 KHz */ | |
389 #define RCC_MSIRANGE_1 RCC_CR_MSIRANGE_1 /*!< MSI = 200 KHz */ | |
390 #define RCC_MSIRANGE_2 RCC_CR_MSIRANGE_2 /*!< MSI = 400 KHz */ | |
391 #define RCC_MSIRANGE_3 RCC_CR_MSIRANGE_3 /*!< MSI = 800 KHz */ | |
392 #define RCC_MSIRANGE_4 RCC_CR_MSIRANGE_4 /*!< MSI = 1 MHz */ | |
393 #define RCC_MSIRANGE_5 RCC_CR_MSIRANGE_5 /*!< MSI = 2 MHz */ | |
394 #define RCC_MSIRANGE_6 RCC_CR_MSIRANGE_6 /*!< MSI = 4 MHz */ | |
395 #define RCC_MSIRANGE_7 RCC_CR_MSIRANGE_7 /*!< MSI = 8 MHz */ | |
396 #define RCC_MSIRANGE_8 RCC_CR_MSIRANGE_8 /*!< MSI = 16 MHz */ | |
397 #define RCC_MSIRANGE_9 RCC_CR_MSIRANGE_9 /*!< MSI = 24 MHz */ | |
398 #define RCC_MSIRANGE_10 RCC_CR_MSIRANGE_10 /*!< MSI = 32 MHz */ | |
399 #define RCC_MSIRANGE_11 RCC_CR_MSIRANGE_11 /*!< MSI = 48 MHz */ | |
400 /** | |
401 * @} | |
402 */ | |
403 | |
404 /** @defgroup RCC_System_Clock_Type System Clock Type | |
405 * @{ | |
406 */ | |
407 #define RCC_CLOCKTYPE_SYSCLK ((uint32_t)0x00000001U) /*!< SYSCLK to configure */ | |
408 #define RCC_CLOCKTYPE_HCLK ((uint32_t)0x00000002U) /*!< HCLK to configure */ | |
409 #define RCC_CLOCKTYPE_PCLK1 ((uint32_t)0x00000004U) /*!< PCLK1 to configure */ | |
410 #define RCC_CLOCKTYPE_PCLK2 ((uint32_t)0x00000008U) /*!< PCLK2 to configure */ | |
411 /** | |
412 * @} | |
413 */ | |
414 | |
415 /** @defgroup RCC_System_Clock_Source System Clock Source | |
416 * @{ | |
417 */ | |
418 #define RCC_SYSCLKSOURCE_MSI RCC_CFGR_SW_MSI /*!< MSI selection as system clock */ | |
419 #define RCC_SYSCLKSOURCE_HSI RCC_CFGR_SW_HSI /*!< HSI selection as system clock */ | |
420 #define RCC_SYSCLKSOURCE_HSE RCC_CFGR_SW_HSE /*!< HSE selection as system clock */ | |
421 #define RCC_SYSCLKSOURCE_PLLCLK RCC_CFGR_SW_PLL /*!< PLL selection as system clock */ | |
422 /** | |
423 * @} | |
424 */ | |
425 | |
426 /** @defgroup RCC_System_Clock_Source_Status System Clock Source Status | |
427 * @{ | |
428 */ | |
429 #define RCC_SYSCLKSOURCE_STATUS_MSI RCC_CFGR_SWS_MSI /*!< MSI used as system clock */ | |
430 #define RCC_SYSCLKSOURCE_STATUS_HSI RCC_CFGR_SWS_HSI /*!< HSI used as system clock */ | |
431 #define RCC_SYSCLKSOURCE_STATUS_HSE RCC_CFGR_SWS_HSE /*!< HSE used as system clock */ | |
432 #define RCC_SYSCLKSOURCE_STATUS_PLLCLK RCC_CFGR_SWS_PLL /*!< PLL used as system clock */ | |
433 /** | |
434 * @} | |
435 */ | |
436 | |
437 /** @defgroup RCC_AHB_Clock_Source AHB Clock Source | |
438 * @{ | |
439 */ | |
440 #define RCC_SYSCLK_DIV1 RCC_CFGR_HPRE_DIV1 /*!< SYSCLK not divided */ | |
441 #define RCC_SYSCLK_DIV2 RCC_CFGR_HPRE_DIV2 /*!< SYSCLK divided by 2 */ | |
442 #define RCC_SYSCLK_DIV4 RCC_CFGR_HPRE_DIV4 /*!< SYSCLK divided by 4 */ | |
443 #define RCC_SYSCLK_DIV8 RCC_CFGR_HPRE_DIV8 /*!< SYSCLK divided by 8 */ | |
444 #define RCC_SYSCLK_DIV16 RCC_CFGR_HPRE_DIV16 /*!< SYSCLK divided by 16 */ | |
445 #define RCC_SYSCLK_DIV64 RCC_CFGR_HPRE_DIV64 /*!< SYSCLK divided by 64 */ | |
446 #define RCC_SYSCLK_DIV128 RCC_CFGR_HPRE_DIV128 /*!< SYSCLK divided by 128 */ | |
447 #define RCC_SYSCLK_DIV256 RCC_CFGR_HPRE_DIV256 /*!< SYSCLK divided by 256 */ | |
448 #define RCC_SYSCLK_DIV512 RCC_CFGR_HPRE_DIV512 /*!< SYSCLK divided by 512 */ | |
449 /** | |
450 * @} | |
451 */ | |
452 | |
453 /** @defgroup RCC_APB1_APB2_Clock_Source APB1 APB2 Clock Source | |
454 * @{ | |
455 */ | |
456 #define RCC_HCLK_DIV1 RCC_CFGR_PPRE1_DIV1 /*!< HCLK not divided */ | |
457 #define RCC_HCLK_DIV2 RCC_CFGR_PPRE1_DIV2 /*!< HCLK divided by 2 */ | |
458 #define RCC_HCLK_DIV4 RCC_CFGR_PPRE1_DIV4 /*!< HCLK divided by 4 */ | |
459 #define RCC_HCLK_DIV8 RCC_CFGR_PPRE1_DIV8 /*!< HCLK divided by 8 */ | |
460 #define RCC_HCLK_DIV16 RCC_CFGR_PPRE1_DIV16 /*!< HCLK divided by 16 */ | |
461 /** | |
462 * @} | |
463 */ | |
464 | |
465 /** @defgroup RCC_RTC_Clock_Source RTC Clock Source | |
466 * @{ | |
467 */ | |
468 #define RCC_RTCCLKSOURCE_NO_CLK ((uint32_t)0x00000000U) /*!< No clock used as RTC clock */ | |
469 #define RCC_RTCCLKSOURCE_LSE RCC_BDCR_RTCSEL_0 /*!< LSE oscillator clock used as RTC clock */ | |
470 #define RCC_RTCCLKSOURCE_LSI RCC_BDCR_RTCSEL_1 /*!< LSI oscillator clock used as RTC clock */ | |
471 #define RCC_RTCCLKSOURCE_HSE_DIV32 RCC_BDCR_RTCSEL /*!< HSE oscillator clock divided by 32 used as RTC clock */ | |
472 /** | |
473 * @} | |
474 */ | |
475 | |
476 /** @defgroup RCC_MCO_Index MCO Index | |
477 * @{ | |
478 */ | |
479 #define RCC_MCO1 ((uint32_t)0x00000000U) | |
480 #define RCC_MCO RCC_MCO1 /*!< MCO1 to be compliant with other families with 2 MCOs*/ | |
481 /** | |
482 * @} | |
483 */ | |
484 | |
485 /** @defgroup RCC_MCO1_Clock_Source MCO1 Clock Source | |
486 * @{ | |
487 */ | |
488 #define RCC_MCO1SOURCE_NOCLOCK ((uint32_t)0x00000000U) /*!< MCO1 output disabled, no clock on MCO1 */ | |
489 #define RCC_MCO1SOURCE_SYSCLK RCC_CFGR_MCOSEL_0 /*!< SYSCLK selection as MCO1 source */ | |
490 #define RCC_MCO1SOURCE_MSI RCC_CFGR_MCOSEL_1 /*!< MSI selection as MCO1 source */ | |
491 #define RCC_MCO1SOURCE_HSI (RCC_CFGR_MCOSEL_0| RCC_CFGR_MCOSEL_1) /*!< HSI selection as MCO1 source */ | |
492 #define RCC_MCO1SOURCE_HSE RCC_CFGR_MCOSEL_2 /*!< HSE selection as MCO1 source */ | |
493 #define RCC_MCO1SOURCE_PLLCLK (RCC_CFGR_MCOSEL_0|RCC_CFGR_MCOSEL_2) /*!< PLLCLK selection as MCO1 source */ | |
494 #define RCC_MCO1SOURCE_LSI (RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_2) /*!< LSI selection as MCO1 source */ | |
495 #define RCC_MCO1SOURCE_LSE (RCC_CFGR_MCOSEL_0|RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_2) /*!< LSE selection as MCO1 source */ | |
496 #if defined(RCC_HSI48_SUPPORT) | |
497 #define RCC_MCO1SOURCE_HSI48 RCC_CFGR_MCOSEL_3 /*!< HSI48 selection as MCO1 source (STM32L43x/STM32L44x devices) */ | |
498 #endif /* RCC_HSI48_SUPPORT */ | |
499 /** | |
500 * @} | |
501 */ | |
502 | |
503 /** @defgroup RCC_MCOx_Clock_Prescaler MCO1 Clock Prescaler | |
504 * @{ | |
505 */ | |
506 #define RCC_MCODIV_1 RCC_CFGR_MCOPRE_DIV1 /*!< MCO not divided */ | |
507 #define RCC_MCODIV_2 RCC_CFGR_MCOPRE_DIV2 /*!< MCO divided by 2 */ | |
508 #define RCC_MCODIV_4 RCC_CFGR_MCOPRE_DIV4 /*!< MCO divided by 4 */ | |
509 #define RCC_MCODIV_8 RCC_CFGR_MCOPRE_DIV8 /*!< MCO divided by 8 */ | |
510 #define RCC_MCODIV_16 RCC_CFGR_MCOPRE_DIV16 /*!< MCO divided by 16 */ | |
511 /** | |
512 * @} | |
513 */ | |
514 | |
515 /** @defgroup RCC_Interrupt Interrupts | |
516 * @{ | |
517 */ | |
518 #define RCC_IT_LSIRDY RCC_CIFR_LSIRDYF /*!< LSI Ready Interrupt flag */ | |
519 #define RCC_IT_LSERDY RCC_CIFR_LSERDYF /*!< LSE Ready Interrupt flag */ | |
520 #define RCC_IT_MSIRDY RCC_CIFR_MSIRDYF /*!< MSI Ready Interrupt flag */ | |
521 #define RCC_IT_HSIRDY RCC_CIFR_HSIRDYF /*!< HSI16 Ready Interrupt flag */ | |
522 #define RCC_IT_HSERDY RCC_CIFR_HSERDYF /*!< HSE Ready Interrupt flag */ | |
523 #define RCC_IT_PLLRDY RCC_CIFR_PLLRDYF /*!< PLL Ready Interrupt flag */ | |
524 #define RCC_IT_PLLSAI1RDY RCC_CIFR_PLLSAI1RDYF /*!< PLLSAI1 Ready Interrupt flag */ | |
525 #if defined(RCC_PLLSAI2_SUPPORT) | |
526 #define RCC_IT_PLLSAI2RDY RCC_CIFR_PLLSAI2RDYF /*!< PLLSAI2 Ready Interrupt flag */ | |
527 #endif /* RCC_PLLSAI2_SUPPORT */ | |
528 #define RCC_IT_CSS RCC_CIFR_CSSF /*!< Clock Security System Interrupt flag */ | |
529 #define RCC_IT_LSECSS RCC_CIFR_LSECSSF /*!< LSE Clock Security System Interrupt flag */ | |
530 #if defined(RCC_HSI48_SUPPORT) | |
531 #define RCC_IT_HSI48RDY RCC_CIFR_HSI48RDYF /*!< HSI48 Ready Interrupt flag */ | |
532 #endif /* RCC_HSI48_SUPPORT */ | |
533 /** | |
534 * @} | |
535 */ | |
536 | |
537 /** @defgroup RCC_Flag Flags | |
538 * Elements values convention: XXXYYYYYb | |
539 * - YYYYY : Flag position in the register | |
540 * - XXX : Register index | |
541 * - 001: CR register | |
542 * - 010: BDCR register | |
543 * - 011: CSR register | |
544 * - 100: CRRCR register | |
545 * @{ | |
546 */ | |
547 /* Flags in the CR register */ | |
548 #define RCC_FLAG_MSIRDY ((uint32_t)((CR_REG_INDEX << 5U) | POSITION_VAL(RCC_CR_MSIRDY))) /*!< MSI Ready flag */ | |
549 #define RCC_FLAG_HSIRDY ((uint32_t)((CR_REG_INDEX << 5U) | POSITION_VAL(RCC_CR_HSIRDY))) /*!< HSI Ready flag */ | |
550 #define RCC_FLAG_HSERDY ((uint32_t)((CR_REG_INDEX << 5U) | POSITION_VAL(RCC_CR_HSERDY))) /*!< HSE Ready flag */ | |
551 #define RCC_FLAG_PLLRDY ((uint32_t)((CR_REG_INDEX << 5U) | POSITION_VAL(RCC_CR_PLLRDY))) /*!< PLL Ready flag */ | |
552 #define RCC_FLAG_PLLSAI1RDY ((uint32_t)((CR_REG_INDEX << 5U) | POSITION_VAL(RCC_CR_PLLSAI1RDY))) /*!< PLLSAI1 Ready flag */ | |
553 #if defined(RCC_PLLSAI2_SUPPORT) | |
554 #define RCC_FLAG_PLLSAI2RDY ((uint32_t)((CR_REG_INDEX << 5U) | POSITION_VAL(RCC_CR_PLLSAI2RDY))) /*!< PLLSAI2 Ready flag */ | |
555 #endif /* RCC_PLLSAI2_SUPPORT */ | |
556 | |
557 /* Flags in the BDCR register */ | |
558 #define RCC_FLAG_LSERDY ((uint32_t)((BDCR_REG_INDEX << 5U) | POSITION_VAL(RCC_BDCR_LSERDY))) /*!< LSE Ready flag */ | |
559 #define RCC_FLAG_LSECSSD ((uint32_t)((BDCR_REG_INDEX << 5U) | POSITION_VAL(RCC_BDCR_LSECSSD))) /*!< LSE Clock Security System Interrupt flag */ | |
560 | |
561 /* Flags in the CSR register */ | |
562 #define RCC_FLAG_LSIRDY ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_LSIRDY))) /*!< LSI Ready flag */ | |
563 #define RCC_FLAG_RMVF ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_RMVF))) /*!< Remove reset flag */ | |
564 #define RCC_FLAG_FWRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_FWRSTF))) /*!< Firewall reset flag */ | |
565 #define RCC_FLAG_OBLRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_OBLRSTF))) /*!< Option Byte Loader reset flag */ | |
566 #define RCC_FLAG_PINRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_PINRSTF))) /*!< PIN reset flag */ | |
567 #define RCC_FLAG_BORRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_BORRSTF))) /*!< BOR reset flag */ | |
568 #define RCC_FLAG_SFTRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_SFTRSTF))) /*!< Software Reset flag */ | |
569 #define RCC_FLAG_IWDGRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_IWDGRSTF))) /*!< Independent Watchdog reset flag */ | |
570 #define RCC_FLAG_WWDGRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_WWDGRSTF))) /*!< Window watchdog reset flag */ | |
571 #define RCC_FLAG_LPWRRST ((uint32_t)((CSR_REG_INDEX << 5U) | POSITION_VAL(RCC_CSR_LPWRRSTF))) /*!< Low-Power reset flag */ | |
572 | |
573 #if defined(RCC_HSI48_SUPPORT) | |
574 /* Flags in the CRRCR register */ | |
575 #define RCC_FLAG_HSI48RDY ((uint32_t)((CRRCR_REG_INDEX << 5U) | POSITION_VAL(RCC_CRRCR_HSI48RDY))) /*!< HSI48 Ready flag */ | |
576 #endif /* RCC_HSI48_SUPPORT */ | |
577 /** | |
578 * @} | |
579 */ | |
580 | |
581 /** @defgroup RCC_LSEDrive_Config LSE Drive Config | |
582 * @{ | |
583 */ | |
584 #define RCC_LSEDRIVE_LOW ((uint32_t)0x00000000U) /*!< LSE low drive capability */ | |
585 #define RCC_LSEDRIVE_MEDIUMLOW RCC_BDCR_LSEDRV_0 /*!< LSE medium low drive capability */ | |
586 #define RCC_LSEDRIVE_MEDIUMHIGH RCC_BDCR_LSEDRV_1 /*!< LSE medium high drive capability */ | |
587 #define RCC_LSEDRIVE_HIGH RCC_BDCR_LSEDRV /*!< LSE high drive capability */ | |
588 /** | |
589 * @} | |
590 */ | |
591 | |
592 /** @defgroup RCC_Stop_WakeUpClock Wake-Up from STOP Clock | |
593 * @{ | |
594 */ | |
595 #define RCC_STOP_WAKEUPCLOCK_MSI ((uint32_t)0x00000000U) /*!< MSI selection after wake-up from STOP */ | |
596 #define RCC_STOP_WAKEUPCLOCK_HSI RCC_CFGR_STOPWUCK /*!< HSI selection after wake-up from STOP */ | |
597 /** | |
598 * @} | |
599 */ | |
600 | |
601 /** | |
602 * @} | |
603 */ | |
604 | |
605 /* Exported macros -----------------------------------------------------------*/ | |
606 | |
607 /** @defgroup RCC_Exported_Macros RCC Exported Macros | |
608 * @{ | |
609 */ | |
610 | |
611 /** @defgroup RCC_AHB1_Peripheral_Clock_Enable_Disable AHB1 Peripheral Clock Enable Disable | |
612 * @brief Enable or disable the AHB1 peripheral clock. | |
613 * @note After reset, the peripheral clock (used for registers read/write access) | |
614 * is disabled and the application software has to enable this clock before | |
615 * using it. | |
616 * @{ | |
617 */ | |
618 | |
619 #define __HAL_RCC_DMA1_CLK_ENABLE() do { \ | |
620 __IO uint32_t tmpreg; \ | |
621 SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN); \ | |
622 /* Delay after an RCC peripheral clock enabling */ \ | |
623 tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN); \ | |
624 UNUSED(tmpreg); \ | |
625 } while(0) | |
626 | |
627 #define __HAL_RCC_DMA2_CLK_ENABLE() do { \ | |
628 __IO uint32_t tmpreg; \ | |
629 SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN); \ | |
630 /* Delay after an RCC peripheral clock enabling */ \ | |
631 tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN); \ | |
632 UNUSED(tmpreg); \ | |
633 } while(0) | |
634 | |
635 #define __HAL_RCC_FLASH_CLK_ENABLE() do { \ | |
636 __IO uint32_t tmpreg; \ | |
637 SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN); \ | |
638 /* Delay after an RCC peripheral clock enabling */ \ | |
639 tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN); \ | |
640 UNUSED(tmpreg); \ | |
641 } while(0) | |
642 | |
643 #define __HAL_RCC_CRC_CLK_ENABLE() do { \ | |
644 __IO uint32_t tmpreg; \ | |
645 SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN); \ | |
646 /* Delay after an RCC peripheral clock enabling */ \ | |
647 tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN); \ | |
648 UNUSED(tmpreg); \ | |
649 } while(0) | |
650 | |
651 #define __HAL_RCC_TSC_CLK_ENABLE() do { \ | |
652 __IO uint32_t tmpreg; \ | |
653 SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN); \ | |
654 /* Delay after an RCC peripheral clock enabling */ \ | |
655 tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN); \ | |
656 UNUSED(tmpreg); \ | |
657 } while(0) | |
658 | |
659 | |
660 #define __HAL_RCC_DMA1_CLK_DISABLE() CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN) | |
661 | |
662 #define __HAL_RCC_DMA2_CLK_DISABLE() CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN) | |
663 | |
664 #define __HAL_RCC_FLASH_CLK_DISABLE() CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN) | |
665 | |
666 #define __HAL_RCC_CRC_CLK_DISABLE() CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN) | |
667 | |
668 #define __HAL_RCC_TSC_CLK_DISABLE() CLEAR_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN) | |
669 | |
670 /** | |
671 * @} | |
672 */ | |
673 | |
674 /** @defgroup RCC_AHB2_Peripheral_Clock_Enable_Disable AHB2 Peripheral Clock Enable Disable | |
675 * @brief Enable or disable the AHB2 peripheral clock. | |
676 * @note After reset, the peripheral clock (used for registers read/write access) | |
677 * is disabled and the application software has to enable this clock before | |
678 * using it. | |
679 * @{ | |
680 */ | |
681 | |
682 #define __HAL_RCC_GPIOA_CLK_ENABLE() do { \ | |
683 __IO uint32_t tmpreg; \ | |
684 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOAEN); \ | |
685 /* Delay after an RCC peripheral clock enabling */ \ | |
686 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOAEN); \ | |
687 UNUSED(tmpreg); \ | |
688 } while(0) | |
689 | |
690 #define __HAL_RCC_GPIOB_CLK_ENABLE() do { \ | |
691 __IO uint32_t tmpreg; \ | |
692 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOBEN); \ | |
693 /* Delay after an RCC peripheral clock enabling */ \ | |
694 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOBEN); \ | |
695 UNUSED(tmpreg); \ | |
696 } while(0) | |
697 | |
698 #define __HAL_RCC_GPIOC_CLK_ENABLE() do { \ | |
699 __IO uint32_t tmpreg; \ | |
700 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOCEN); \ | |
701 /* Delay after an RCC peripheral clock enabling */ \ | |
702 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOCEN); \ | |
703 UNUSED(tmpreg); \ | |
704 } while(0) | |
705 | |
706 #if defined(GPIOD) | |
707 #define __HAL_RCC_GPIOD_CLK_ENABLE() do { \ | |
708 __IO uint32_t tmpreg; \ | |
709 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIODEN); \ | |
710 /* Delay after an RCC peripheral clock enabling */ \ | |
711 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIODEN); \ | |
712 UNUSED(tmpreg); \ | |
713 } while(0) | |
714 #endif /* GPIOD */ | |
715 | |
716 #if defined(GPIOE) | |
717 #define __HAL_RCC_GPIOE_CLK_ENABLE() do { \ | |
718 __IO uint32_t tmpreg; \ | |
719 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOEEN); \ | |
720 /* Delay after an RCC peripheral clock enabling */ \ | |
721 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOEEN); \ | |
722 UNUSED(tmpreg); \ | |
723 } while(0) | |
724 #endif /* GPIOE */ | |
725 | |
726 #if defined(GPIOF) | |
727 #define __HAL_RCC_GPIOF_CLK_ENABLE() do { \ | |
728 __IO uint32_t tmpreg; \ | |
729 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOFEN); \ | |
730 /* Delay after an RCC peripheral clock enabling */ \ | |
731 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOFEN); \ | |
732 UNUSED(tmpreg); \ | |
733 } while(0) | |
734 #endif /* GPIOF */ | |
735 | |
736 #if defined(GPIOG) | |
737 #define __HAL_RCC_GPIOG_CLK_ENABLE() do { \ | |
738 __IO uint32_t tmpreg; \ | |
739 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOGEN); \ | |
740 /* Delay after an RCC peripheral clock enabling */ \ | |
741 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOGEN); \ | |
742 UNUSED(tmpreg); \ | |
743 } while(0) | |
744 #endif /* GPIOG */ | |
745 | |
746 #define __HAL_RCC_GPIOH_CLK_ENABLE() do { \ | |
747 __IO uint32_t tmpreg; \ | |
748 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOHEN); \ | |
749 /* Delay after an RCC peripheral clock enabling */ \ | |
750 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOHEN); \ | |
751 UNUSED(tmpreg); \ | |
752 } while(0) | |
753 | |
754 #if defined(USB_OTG_FS) | |
755 #define __HAL_RCC_USB_OTG_FS_CLK_ENABLE() do { \ | |
756 __IO uint32_t tmpreg; \ | |
757 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_OTGFSEN); \ | |
758 /* Delay after an RCC peripheral clock enabling */ \ | |
759 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_OTGFSEN); \ | |
760 UNUSED(tmpreg); \ | |
761 } while(0) | |
762 #endif /* USB_OTG_FS */ | |
763 | |
764 #define __HAL_RCC_ADC_CLK_ENABLE() do { \ | |
765 __IO uint32_t tmpreg; \ | |
766 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_ADCEN); \ | |
767 /* Delay after an RCC peripheral clock enabling */ \ | |
768 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_ADCEN); \ | |
769 UNUSED(tmpreg); \ | |
770 } while(0) | |
771 | |
772 #if defined(AES) | |
773 #define __HAL_RCC_AES_CLK_ENABLE() do { \ | |
774 __IO uint32_t tmpreg; \ | |
775 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AESEN); \ | |
776 /* Delay after an RCC peripheral clock enabling */ \ | |
777 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AESEN); \ | |
778 UNUSED(tmpreg); \ | |
779 } while(0) | |
780 #endif /* AES */ | |
781 | |
782 #define __HAL_RCC_RNG_CLK_ENABLE() do { \ | |
783 __IO uint32_t tmpreg; \ | |
784 SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN); \ | |
785 /* Delay after an RCC peripheral clock enabling */ \ | |
786 tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN); \ | |
787 UNUSED(tmpreg); \ | |
788 } while(0) | |
789 | |
790 | |
791 #define __HAL_RCC_GPIOA_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOAEN) | |
792 | |
793 #define __HAL_RCC_GPIOB_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOBEN) | |
794 | |
795 #define __HAL_RCC_GPIOC_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOCEN) | |
796 | |
797 #if defined(GPIOD) | |
798 #define __HAL_RCC_GPIOD_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIODEN) | |
799 #endif /* GPIOD */ | |
800 | |
801 #if defined(GPIOE) | |
802 #define __HAL_RCC_GPIOE_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOEEN) | |
803 #endif /* GPIOE */ | |
804 | |
805 #if defined(GPIOF) | |
806 #define __HAL_RCC_GPIOF_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOFEN) | |
807 #endif /* GPIOF */ | |
808 | |
809 #if defined(GPIOG) | |
810 #define __HAL_RCC_GPIOG_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOGEN) | |
811 #endif /* GPIOG */ | |
812 | |
813 #define __HAL_RCC_GPIOH_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOHEN) | |
814 | |
815 #if defined(USB_OTG_FS) | |
816 #define __HAL_RCC_USB_OTG_FS_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_OTGFSEN); | |
817 #endif /* USB_OTG_FS */ | |
818 | |
819 #define __HAL_RCC_ADC_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_ADCEN) | |
820 | |
821 #if defined(AES) | |
822 #define __HAL_RCC_AES_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AESEN); | |
823 #endif /* AES */ | |
824 | |
825 #define __HAL_RCC_RNG_CLK_DISABLE() CLEAR_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN) | |
826 | |
827 /** | |
828 * @} | |
829 */ | |
830 | |
831 /** @defgroup RCC_AHB3_Clock_Enable_Disable AHB3 Peripheral Clock Enable Disable | |
832 * @brief Enable or disable the AHB3 peripheral clock. | |
833 * @note After reset, the peripheral clock (used for registers read/write access) | |
834 * is disabled and the application software has to enable this clock before | |
835 * using it. | |
836 * @{ | |
837 */ | |
838 | |
839 #if defined(FMC_BANK1) | |
840 #define __HAL_RCC_FMC_CLK_ENABLE() do { \ | |
841 __IO uint32_t tmpreg; \ | |
842 SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN); \ | |
843 /* Delay after an RCC peripheral clock enabling */ \ | |
844 tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN); \ | |
845 UNUSED(tmpreg); \ | |
846 } while(0) | |
847 #endif /* FMC_BANK1 */ | |
848 | |
849 #if defined(QUADSPI) | |
850 #define __HAL_RCC_QSPI_CLK_ENABLE() do { \ | |
851 __IO uint32_t tmpreg; \ | |
852 SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN); \ | |
853 /* Delay after an RCC peripheral clock enabling */ \ | |
854 tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN); \ | |
855 UNUSED(tmpreg); \ | |
856 } while(0) | |
857 #endif /* QUADSPI */ | |
858 | |
859 #if defined(FMC_BANK1) | |
860 #define __HAL_RCC_FMC_CLK_DISABLE() CLEAR_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN) | |
861 #endif /* FMC_BANK1 */ | |
862 | |
863 #if defined(QUADSPI) | |
864 #define __HAL_RCC_QSPI_CLK_DISABLE() CLEAR_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN) | |
865 #endif /* QUADSPI */ | |
866 | |
867 /** | |
868 * @} | |
869 */ | |
870 | |
871 /** @defgroup RCC_APB1_Clock_Enable_Disable APB1 Peripheral Clock Enable Disable | |
872 * @brief Enable or disable the APB1 peripheral clock. | |
873 * @note After reset, the peripheral clock (used for registers read/write access) | |
874 * is disabled and the application software has to enable this clock before | |
875 * using it. | |
876 * @{ | |
877 */ | |
878 | |
879 #define __HAL_RCC_TIM2_CLK_ENABLE() do { \ | |
880 __IO uint32_t tmpreg; \ | |
881 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN); \ | |
882 /* Delay after an RCC peripheral clock enabling */ \ | |
883 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN); \ | |
884 UNUSED(tmpreg); \ | |
885 } while(0) | |
886 | |
887 #if defined(TIM3) | |
888 #define __HAL_RCC_TIM3_CLK_ENABLE() do { \ | |
889 __IO uint32_t tmpreg; \ | |
890 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN); \ | |
891 /* Delay after an RCC peripheral clock enabling */ \ | |
892 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN); \ | |
893 UNUSED(tmpreg); \ | |
894 } while(0) | |
895 #endif /* TIM3 */ | |
896 | |
897 #if defined(TIM4) | |
898 #define __HAL_RCC_TIM4_CLK_ENABLE() do { \ | |
899 __IO uint32_t tmpreg; \ | |
900 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN); \ | |
901 /* Delay after an RCC peripheral clock enabling */ \ | |
902 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN); \ | |
903 UNUSED(tmpreg); \ | |
904 } while(0) | |
905 #endif /* TIM4 */ | |
906 | |
907 #if defined(TIM5) | |
908 #define __HAL_RCC_TIM5_CLK_ENABLE() do { \ | |
909 __IO uint32_t tmpreg; \ | |
910 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN); \ | |
911 /* Delay after an RCC peripheral clock enabling */ \ | |
912 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN); \ | |
913 UNUSED(tmpreg); \ | |
914 } while(0) | |
915 #endif /* TIM5 */ | |
916 | |
917 #define __HAL_RCC_TIM6_CLK_ENABLE() do { \ | |
918 __IO uint32_t tmpreg; \ | |
919 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN); \ | |
920 /* Delay after an RCC peripheral clock enabling */ \ | |
921 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN); \ | |
922 UNUSED(tmpreg); \ | |
923 } while(0) | |
924 | |
925 #define __HAL_RCC_TIM7_CLK_ENABLE() do { \ | |
926 __IO uint32_t tmpreg; \ | |
927 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN); \ | |
928 /* Delay after an RCC peripheral clock enabling */ \ | |
929 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN); \ | |
930 UNUSED(tmpreg); \ | |
931 } while(0) | |
932 | |
933 #if defined(LCD) | |
934 #define __HAL_RCC_LCD_CLK_ENABLE() do { \ | |
935 __IO uint32_t tmpreg; \ | |
936 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LCDEN); \ | |
937 /* Delay after an RCC peripheral clock enabling */ \ | |
938 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LCDEN); \ | |
939 UNUSED(tmpreg); \ | |
940 } while(0) | |
941 #endif /* LCD */ | |
942 | |
943 #if defined(RCC_APB1ENR1_RTCAPBEN) | |
944 #define __HAL_RCC_RTCAPB_CLK_ENABLE() do { \ | |
945 __IO uint32_t tmpreg; \ | |
946 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_RTCAPBEN); \ | |
947 /* Delay after an RCC peripheral clock enabling */ \ | |
948 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_RTCAPBEN); \ | |
949 UNUSED(tmpreg); \ | |
950 } while(0) | |
951 #endif /* RCC_APB1ENR1_RTCAPBEN */ | |
952 | |
953 #define __HAL_RCC_WWDG_CLK_ENABLE() do { \ | |
954 __IO uint32_t tmpreg; \ | |
955 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_WWDGEN); \ | |
956 /* Delay after an RCC peripheral clock enabling */ \ | |
957 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_WWDGEN); \ | |
958 UNUSED(tmpreg); \ | |
959 } while(0) | |
960 | |
961 #if defined(SPI2) | |
962 #define __HAL_RCC_SPI2_CLK_ENABLE() do { \ | |
963 __IO uint32_t tmpreg; \ | |
964 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN); \ | |
965 /* Delay after an RCC peripheral clock enabling */ \ | |
966 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN); \ | |
967 UNUSED(tmpreg); \ | |
968 } while(0) | |
969 #endif /* SPI2 */ | |
970 | |
971 #define __HAL_RCC_SPI3_CLK_ENABLE() do { \ | |
972 __IO uint32_t tmpreg; \ | |
973 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI3EN); \ | |
974 /* Delay after an RCC peripheral clock enabling */ \ | |
975 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI3EN); \ | |
976 UNUSED(tmpreg); \ | |
977 } while(0) | |
978 | |
979 #define __HAL_RCC_USART2_CLK_ENABLE() do { \ | |
980 __IO uint32_t tmpreg; \ | |
981 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN); \ | |
982 /* Delay after an RCC peripheral clock enabling */ \ | |
983 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN); \ | |
984 UNUSED(tmpreg); \ | |
985 } while(0) | |
986 | |
987 #if defined(USART3) | |
988 #define __HAL_RCC_USART3_CLK_ENABLE() do { \ | |
989 __IO uint32_t tmpreg; \ | |
990 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN); \ | |
991 /* Delay after an RCC peripheral clock enabling */ \ | |
992 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN); \ | |
993 UNUSED(tmpreg); \ | |
994 } while(0) | |
995 #endif /* USART3 */ | |
996 | |
997 #if defined(UART4) | |
998 #define __HAL_RCC_UART4_CLK_ENABLE() do { \ | |
999 __IO uint32_t tmpreg; \ | |
1000 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN); \ | |
1001 /* Delay after an RCC peripheral clock enabling */ \ | |
1002 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN); \ | |
1003 UNUSED(tmpreg); \ | |
1004 } while(0) | |
1005 #endif /* UART4 */ | |
1006 | |
1007 #if defined(UART5) | |
1008 #define __HAL_RCC_UART5_CLK_ENABLE() do { \ | |
1009 __IO uint32_t tmpreg; \ | |
1010 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN); \ | |
1011 /* Delay after an RCC peripheral clock enabling */ \ | |
1012 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN); \ | |
1013 UNUSED(tmpreg); \ | |
1014 } while(0) | |
1015 #endif /* UART5 */ | |
1016 | |
1017 #define __HAL_RCC_I2C1_CLK_ENABLE() do { \ | |
1018 __IO uint32_t tmpreg; \ | |
1019 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN); \ | |
1020 /* Delay after an RCC peripheral clock enabling */ \ | |
1021 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN); \ | |
1022 UNUSED(tmpreg); \ | |
1023 } while(0) | |
1024 | |
1025 #if defined(I2C2) | |
1026 #define __HAL_RCC_I2C2_CLK_ENABLE() do { \ | |
1027 __IO uint32_t tmpreg; \ | |
1028 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN); \ | |
1029 /* Delay after an RCC peripheral clock enabling */ \ | |
1030 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN); \ | |
1031 UNUSED(tmpreg); \ | |
1032 } while(0) | |
1033 #endif /* I2C2 */ | |
1034 | |
1035 #define __HAL_RCC_I2C3_CLK_ENABLE() do { \ | |
1036 __IO uint32_t tmpreg; \ | |
1037 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C3EN); \ | |
1038 /* Delay after an RCC peripheral clock enabling */ \ | |
1039 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C3EN); \ | |
1040 UNUSED(tmpreg); \ | |
1041 } while(0) | |
1042 | |
1043 #if defined(I2C4) | |
1044 #define __HAL_RCC_I2C4_CLK_ENABLE() do { \ | |
1045 __IO uint32_t tmpreg; \ | |
1046 SET_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN); \ | |
1047 /* Delay after an RCC peripheral clock enabling */ \ | |
1048 tmpreg = READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN); \ | |
1049 UNUSED(tmpreg); \ | |
1050 } while(0) | |
1051 #endif /* I2C4 */ | |
1052 | |
1053 #if defined(CRS) | |
1054 #define __HAL_RCC_CRS_CLK_ENABLE() do { \ | |
1055 __IO uint32_t tmpreg; \ | |
1056 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN); \ | |
1057 /* Delay after an RCC peripheral clock enabling */ \ | |
1058 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN); \ | |
1059 UNUSED(tmpreg); \ | |
1060 } while(0) | |
1061 #endif /* CRS */ | |
1062 | |
1063 #define __HAL_RCC_CAN1_CLK_ENABLE() do { \ | |
1064 __IO uint32_t tmpreg; \ | |
1065 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CAN1EN); \ | |
1066 /* Delay after an RCC peripheral clock enabling */ \ | |
1067 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CAN1EN); \ | |
1068 UNUSED(tmpreg); \ | |
1069 } while(0) | |
1070 | |
1071 #if defined(USB) | |
1072 #define __HAL_RCC_USB_CLK_ENABLE() do { \ | |
1073 __IO uint32_t tmpreg; \ | |
1074 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USBFSEN); \ | |
1075 /* Delay after an RCC peripheral clock enabling */ \ | |
1076 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USBFSEN); \ | |
1077 UNUSED(tmpreg); \ | |
1078 } while(0) | |
1079 #endif /* USB */ | |
1080 | |
1081 #define __HAL_RCC_PWR_CLK_ENABLE() do { \ | |
1082 __IO uint32_t tmpreg; \ | |
1083 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_PWREN); \ | |
1084 /* Delay after an RCC peripheral clock enabling */ \ | |
1085 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_PWREN); \ | |
1086 UNUSED(tmpreg); \ | |
1087 } while(0) | |
1088 | |
1089 #define __HAL_RCC_DAC1_CLK_ENABLE() do { \ | |
1090 __IO uint32_t tmpreg; \ | |
1091 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_DAC1EN); \ | |
1092 /* Delay after an RCC peripheral clock enabling */ \ | |
1093 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_DAC1EN); \ | |
1094 UNUSED(tmpreg); \ | |
1095 } while(0) | |
1096 | |
1097 #define __HAL_RCC_OPAMP_CLK_ENABLE() do { \ | |
1098 __IO uint32_t tmpreg; \ | |
1099 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_OPAMPEN); \ | |
1100 /* Delay after an RCC peripheral clock enabling */ \ | |
1101 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_OPAMPEN); \ | |
1102 UNUSED(tmpreg); \ | |
1103 } while(0) | |
1104 | |
1105 #define __HAL_RCC_LPTIM1_CLK_ENABLE() do { \ | |
1106 __IO uint32_t tmpreg; \ | |
1107 SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LPTIM1EN); \ | |
1108 /* Delay after an RCC peripheral clock enabling */ \ | |
1109 tmpreg = READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LPTIM1EN); \ | |
1110 UNUSED(tmpreg); \ | |
1111 } while(0) | |
1112 | |
1113 #define __HAL_RCC_LPUART1_CLK_ENABLE() do { \ | |
1114 __IO uint32_t tmpreg; \ | |
1115 SET_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPUART1EN); \ | |
1116 /* Delay after an RCC peripheral clock enabling */ \ | |
1117 tmpreg = READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPUART1EN); \ | |
1118 UNUSED(tmpreg); \ | |
1119 } while(0) | |
1120 | |
1121 #if defined(SWPMI1) | |
1122 #define __HAL_RCC_SWPMI1_CLK_ENABLE() do { \ | |
1123 __IO uint32_t tmpreg; \ | |
1124 SET_BIT(RCC->APB1ENR2, RCC_APB1ENR2_SWPMI1EN); \ | |
1125 /* Delay after an RCC peripheral clock enabling */ \ | |
1126 tmpreg = READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_SWPMI1EN); \ | |
1127 UNUSED(tmpreg); \ | |
1128 } while(0) | |
1129 #endif /* SWPMI1 */ | |
1130 | |
1131 #define __HAL_RCC_LPTIM2_CLK_ENABLE() do { \ | |
1132 __IO uint32_t tmpreg; \ | |
1133 SET_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN); \ | |
1134 /* Delay after an RCC peripheral clock enabling */ \ | |
1135 tmpreg = READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN); \ | |
1136 UNUSED(tmpreg); \ | |
1137 } while(0) | |
1138 | |
1139 | |
1140 #define __HAL_RCC_TIM2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN) | |
1141 | |
1142 #if defined(TIM3) | |
1143 #define __HAL_RCC_TIM3_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN) | |
1144 #endif /* TIM3 */ | |
1145 | |
1146 #if defined(TIM4) | |
1147 #define __HAL_RCC_TIM4_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN) | |
1148 #endif /* TIM4 */ | |
1149 | |
1150 #if defined(TIM5) | |
1151 #define __HAL_RCC_TIM5_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN) | |
1152 #endif /* TIM5 */ | |
1153 | |
1154 #define __HAL_RCC_TIM6_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN) | |
1155 | |
1156 #define __HAL_RCC_TIM7_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN) | |
1157 | |
1158 #if defined(LCD) | |
1159 #define __HAL_RCC_LCD_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LCDEN); | |
1160 #endif /* LCD */ | |
1161 | |
1162 #if defined(RCC_APB1ENR1_RTCAPBEN) | |
1163 #define __HAL_RCC_RTCAPB_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_RTCAPBEN); | |
1164 #endif /* RCC_APB1ENR1_RTCAPBEN */ | |
1165 | |
1166 #if defined(SPI2) | |
1167 #define __HAL_RCC_SPI2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN) | |
1168 #endif /* SPI2 */ | |
1169 | |
1170 #define __HAL_RCC_SPI3_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI3EN) | |
1171 | |
1172 #define __HAL_RCC_USART2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN) | |
1173 | |
1174 #if defined(USART3) | |
1175 #define __HAL_RCC_USART3_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN) | |
1176 #endif /* USART3 */ | |
1177 | |
1178 #if defined(UART4) | |
1179 #define __HAL_RCC_UART4_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN) | |
1180 #endif /* UART4 */ | |
1181 | |
1182 #if defined(UART5) | |
1183 #define __HAL_RCC_UART5_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN) | |
1184 #endif /* UART5 */ | |
1185 | |
1186 #define __HAL_RCC_I2C1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN) | |
1187 | |
1188 #if defined(I2C2) | |
1189 #define __HAL_RCC_I2C2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN) | |
1190 #endif /* I2C2 */ | |
1191 | |
1192 #define __HAL_RCC_I2C3_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C3EN) | |
1193 | |
1194 #if defined(I2C4) | |
1195 #define __HAL_RCC_I2C4_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN) | |
1196 #endif /* I2C4 */ | |
1197 | |
1198 #if defined(CRS) | |
1199 #define __HAL_RCC_CRS_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN); | |
1200 #endif /* CRS */ | |
1201 | |
1202 #define __HAL_RCC_CAN1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CAN1EN) | |
1203 | |
1204 #if defined(USB) | |
1205 #define __HAL_RCC_USB_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USBFSEN); | |
1206 #endif /* USB */ | |
1207 | |
1208 #define __HAL_RCC_PWR_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_PWREN) | |
1209 | |
1210 #define __HAL_RCC_DAC1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_DAC1EN) | |
1211 | |
1212 #define __HAL_RCC_OPAMP_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_OPAMPEN) | |
1213 | |
1214 #define __HAL_RCC_LPTIM1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LPTIM1EN) | |
1215 | |
1216 #define __HAL_RCC_LPUART1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPUART1EN) | |
1217 | |
1218 #if defined(SWPMI1) | |
1219 #define __HAL_RCC_SWPMI1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR2, RCC_APB1ENR2_SWPMI1EN) | |
1220 #endif /* SWPMI1 */ | |
1221 | |
1222 #define __HAL_RCC_LPTIM2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN) | |
1223 | |
1224 /** | |
1225 * @} | |
1226 */ | |
1227 | |
1228 /** @defgroup RCC_APB2_Clock_Enable_Disable APB2 Peripheral Clock Enable Disable | |
1229 * @brief Enable or disable the APB2 peripheral clock. | |
1230 * @note After reset, the peripheral clock (used for registers read/write access) | |
1231 * is disabled and the application software has to enable this clock before | |
1232 * using it. | |
1233 * @{ | |
1234 */ | |
1235 | |
1236 #define __HAL_RCC_SYSCFG_CLK_ENABLE() do { \ | |
1237 __IO uint32_t tmpreg; \ | |
1238 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN); \ | |
1239 /* Delay after an RCC peripheral clock enabling */ \ | |
1240 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN); \ | |
1241 UNUSED(tmpreg); \ | |
1242 } while(0) | |
1243 | |
1244 #define __HAL_RCC_FIREWALL_CLK_ENABLE() do { \ | |
1245 __IO uint32_t tmpreg; \ | |
1246 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_FWEN); \ | |
1247 /* Delay after an RCC peripheral clock enabling */ \ | |
1248 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_FWEN); \ | |
1249 UNUSED(tmpreg); \ | |
1250 } while(0) | |
1251 | |
1252 #if defined(SDMMC1) | |
1253 #define __HAL_RCC_SDMMC1_CLK_ENABLE() do { \ | |
1254 __IO uint32_t tmpreg; \ | |
1255 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC1EN); \ | |
1256 /* Delay after an RCC peripheral clock enabling */ \ | |
1257 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC1EN); \ | |
1258 UNUSED(tmpreg); \ | |
1259 } while(0) | |
1260 #endif /* SDMMC1 */ | |
1261 | |
1262 #define __HAL_RCC_TIM1_CLK_ENABLE() do { \ | |
1263 __IO uint32_t tmpreg; \ | |
1264 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN); \ | |
1265 /* Delay after an RCC peripheral clock enabling */ \ | |
1266 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN); \ | |
1267 UNUSED(tmpreg); \ | |
1268 } while(0) | |
1269 | |
1270 #define __HAL_RCC_SPI1_CLK_ENABLE() do { \ | |
1271 __IO uint32_t tmpreg; \ | |
1272 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN); \ | |
1273 /* Delay after an RCC peripheral clock enabling */ \ | |
1274 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN); \ | |
1275 UNUSED(tmpreg); \ | |
1276 } while(0) | |
1277 | |
1278 #if defined(TIM8) | |
1279 #define __HAL_RCC_TIM8_CLK_ENABLE() do { \ | |
1280 __IO uint32_t tmpreg; \ | |
1281 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN); \ | |
1282 /* Delay after an RCC peripheral clock enabling */ \ | |
1283 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN); \ | |
1284 UNUSED(tmpreg); \ | |
1285 } while(0) | |
1286 #endif /* TIM8 */ | |
1287 | |
1288 #define __HAL_RCC_USART1_CLK_ENABLE() do { \ | |
1289 __IO uint32_t tmpreg; \ | |
1290 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN); \ | |
1291 /* Delay after an RCC peripheral clock enabling */ \ | |
1292 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN); \ | |
1293 UNUSED(tmpreg); \ | |
1294 } while(0) | |
1295 | |
1296 | |
1297 #define __HAL_RCC_TIM15_CLK_ENABLE() do { \ | |
1298 __IO uint32_t tmpreg; \ | |
1299 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN); \ | |
1300 /* Delay after an RCC peripheral clock enabling */ \ | |
1301 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN); \ | |
1302 UNUSED(tmpreg); \ | |
1303 } while(0) | |
1304 | |
1305 #define __HAL_RCC_TIM16_CLK_ENABLE() do { \ | |
1306 __IO uint32_t tmpreg; \ | |
1307 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN); \ | |
1308 /* Delay after an RCC peripheral clock enabling */ \ | |
1309 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN); \ | |
1310 UNUSED(tmpreg); \ | |
1311 } while(0) | |
1312 | |
1313 #if defined(TIM17) | |
1314 #define __HAL_RCC_TIM17_CLK_ENABLE() do { \ | |
1315 __IO uint32_t tmpreg; \ | |
1316 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN); \ | |
1317 /* Delay after an RCC peripheral clock enabling */ \ | |
1318 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN); \ | |
1319 UNUSED(tmpreg); \ | |
1320 } while(0) | |
1321 #endif /* TIM17 */ | |
1322 | |
1323 #define __HAL_RCC_SAI1_CLK_ENABLE() do { \ | |
1324 __IO uint32_t tmpreg; \ | |
1325 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN); \ | |
1326 /* Delay after an RCC peripheral clock enabling */ \ | |
1327 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN); \ | |
1328 UNUSED(tmpreg); \ | |
1329 } while(0) | |
1330 | |
1331 #if defined(SAI2) | |
1332 #define __HAL_RCC_SAI2_CLK_ENABLE() do { \ | |
1333 __IO uint32_t tmpreg; \ | |
1334 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN); \ | |
1335 /* Delay after an RCC peripheral clock enabling */ \ | |
1336 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN); \ | |
1337 UNUSED(tmpreg); \ | |
1338 } while(0) | |
1339 #endif /* SAI2 */ | |
1340 | |
1341 #if defined(DFSDM1_Filter0) | |
1342 #define __HAL_RCC_DFSDM1_CLK_ENABLE() do { \ | |
1343 __IO uint32_t tmpreg; \ | |
1344 SET_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN); \ | |
1345 /* Delay after an RCC peripheral clock enabling */ \ | |
1346 tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN); \ | |
1347 UNUSED(tmpreg); \ | |
1348 } while(0) | |
1349 #endif /* DFSDM1_Filter0 */ | |
1350 | |
1351 | |
1352 #define __HAL_RCC_SYSCFG_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN) | |
1353 | |
1354 #if defined(SDMMC1) | |
1355 #define __HAL_RCC_SDMMC1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC1EN) | |
1356 #endif /* SDMMC1 */ | |
1357 | |
1358 #define __HAL_RCC_TIM1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN) | |
1359 | |
1360 #define __HAL_RCC_SPI1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN) | |
1361 | |
1362 #if defined(TIM8) | |
1363 #define __HAL_RCC_TIM8_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN) | |
1364 #endif /* TIM8 */ | |
1365 | |
1366 #define __HAL_RCC_USART1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN) | |
1367 | |
1368 #define __HAL_RCC_TIM15_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN) | |
1369 | |
1370 #define __HAL_RCC_TIM16_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN) | |
1371 | |
1372 #if defined(TIM17) | |
1373 #define __HAL_RCC_TIM17_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN) | |
1374 #endif /* TIM17 */ | |
1375 | |
1376 #define __HAL_RCC_SAI1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN) | |
1377 | |
1378 #if defined(SAI2) | |
1379 #define __HAL_RCC_SAI2_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN) | |
1380 #endif /* SAI2 */ | |
1381 | |
1382 #if defined(DFSDM1_Filter0) | |
1383 #define __HAL_RCC_DFSDM1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN) | |
1384 #endif /* DFSDM1_Filter0 */ | |
1385 | |
1386 /** | |
1387 * @} | |
1388 */ | |
1389 | |
1390 /** @defgroup RCC_AHB1_Peripheral_Clock_Enable_Disable_Status AHB1 Peripheral Clock Enabled or Disabled Status | |
1391 * @brief Check whether the AHB1 peripheral clock is enabled or not. | |
1392 * @note After reset, the peripheral clock (used for registers read/write access) | |
1393 * is disabled and the application software has to enable this clock before | |
1394 * using it. | |
1395 * @{ | |
1396 */ | |
1397 | |
1398 #define __HAL_RCC_DMA1_IS_CLK_ENABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN) != RESET) | |
1399 | |
1400 #define __HAL_RCC_DMA2_IS_CLK_ENABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN) != RESET) | |
1401 | |
1402 #define __HAL_RCC_FLASH_IS_CLK_ENABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN) != RESET) | |
1403 | |
1404 #define __HAL_RCC_CRC_IS_CLK_ENABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN) != RESET) | |
1405 | |
1406 #define __HAL_RCC_TSC_IS_CLK_ENABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN) != RESET) | |
1407 | |
1408 | |
1409 #define __HAL_RCC_DMA1_IS_CLK_DISABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN) == RESET) | |
1410 | |
1411 #define __HAL_RCC_DMA2_IS_CLK_DISABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN) == RESET) | |
1412 | |
1413 #define __HAL_RCC_FLASH_IS_CLK_DISABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_FLASHEN) == RESET) | |
1414 | |
1415 #define __HAL_RCC_CRC_IS_CLK_DISABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN) == RESET) | |
1416 | |
1417 #define __HAL_RCC_TSC_IS_CLK_DISABLED() (READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_TSCEN) == RESET) | |
1418 | |
1419 /** | |
1420 * @} | |
1421 */ | |
1422 | |
1423 /** @defgroup RCC_AHB2_Clock_Enable_Disable_Status AHB2 Peripheral Clock Enabled or Disabled Status | |
1424 * @brief Check whether the AHB2 peripheral clock is enabled or not. | |
1425 * @note After reset, the peripheral clock (used for registers read/write access) | |
1426 * is disabled and the application software has to enable this clock before | |
1427 * using it. | |
1428 * @{ | |
1429 */ | |
1430 | |
1431 #define __HAL_RCC_GPIOA_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOAEN) != RESET) | |
1432 | |
1433 #define __HAL_RCC_GPIOB_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOCEN) != RESET) | |
1434 | |
1435 #define __HAL_RCC_GPIOC_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOCEN) != RESET) | |
1436 | |
1437 #if defined(GPIOD) | |
1438 #define __HAL_RCC_GPIOD_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIODEN) != RESET) | |
1439 #endif /* GPIOD */ | |
1440 | |
1441 #if defined(GPIOE) | |
1442 #define __HAL_RCC_GPIOE_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOEEN) != RESET) | |
1443 #endif /* GPIOE */ | |
1444 | |
1445 #if defined(GPIOF) | |
1446 #define __HAL_RCC_GPIOF_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOFEN) != RESET) | |
1447 #endif /* GPIOF */ | |
1448 | |
1449 #if defined(GPIOG) | |
1450 #define __HAL_RCC_GPIOG_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOGEN) != RESET) | |
1451 #endif /* GPIOG */ | |
1452 | |
1453 #define __HAL_RCC_GPIOH_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOHEN) != RESET) | |
1454 | |
1455 #if defined(USB_OTG_FS) | |
1456 #define __HAL_RCC_USB_OTG_FS_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_OTGFSEN) != RESET) | |
1457 #endif /* USB_OTG_FS */ | |
1458 | |
1459 #define __HAL_RCC_ADC_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_ADCEN) != RESET) | |
1460 | |
1461 #if defined(AES) | |
1462 #define __HAL_RCC_AES_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AESEN) != RESET) | |
1463 #endif /* AES */ | |
1464 | |
1465 #define __HAL_RCC_RNG_IS_CLK_ENABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN) != RESET) | |
1466 | |
1467 | |
1468 #define __HAL_RCC_GPIOA_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOAEN) == RESET) | |
1469 | |
1470 #define __HAL_RCC_GPIOB_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOBEN) == RESET) | |
1471 | |
1472 #define __HAL_RCC_GPIOC_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOCEN) == RESET) | |
1473 | |
1474 #if defined(GPIOD) | |
1475 #define __HAL_RCC_GPIOD_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIODEN) == RESET) | |
1476 #endif /* GPIOD */ | |
1477 | |
1478 #if defined(GPIOE) | |
1479 #define __HAL_RCC_GPIOE_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOEEN) == RESET) | |
1480 #endif /* GPIOE */ | |
1481 | |
1482 #if defined(GPIOF) | |
1483 #define __HAL_RCC_GPIOF_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOFEN) == RESET) | |
1484 #endif /* GPIOF */ | |
1485 | |
1486 #if defined(GPIOG) | |
1487 #define __HAL_RCC_GPIOG_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOGEN) == RESET) | |
1488 #endif /* GPIOG */ | |
1489 | |
1490 #define __HAL_RCC_GPIOH_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIOHEN) == RESET) | |
1491 | |
1492 #if defined(USB_OTG_FS) | |
1493 #define __HAL_RCC_USB_OTG_FS_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_OTGFSEN) == RESET) | |
1494 #endif /* USB_OTG_FS */ | |
1495 | |
1496 #define __HAL_RCC_ADC_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_ADCEN) == RESET) | |
1497 | |
1498 #if defined(AES) | |
1499 #define __HAL_RCC_AES_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AESEN) == RESET) | |
1500 #endif /* AES */ | |
1501 | |
1502 #define __HAL_RCC_RNG_IS_CLK_DISABLED() (READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN) == RESET) | |
1503 | |
1504 /** | |
1505 * @} | |
1506 */ | |
1507 | |
1508 /** @defgroup RCC_AHB3_Clock_Enable_Disable_Status AHB3 Peripheral Clock Enabled or Disabled Status | |
1509 * @brief Check whether the AHB3 peripheral clock is enabled or not. | |
1510 * @note After reset, the peripheral clock (used for registers read/write access) | |
1511 * is disabled and the application software has to enable this clock before | |
1512 * using it. | |
1513 * @{ | |
1514 */ | |
1515 | |
1516 #if defined(FMC_BANK1) | |
1517 #define __HAL_RCC_FMC_IS_CLK_ENABLED() (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN) != RESET) | |
1518 #endif /* FMC_BANK1 */ | |
1519 | |
1520 #if defined(QUADSPI) | |
1521 #define __HAL_RCC_QSPI_IS_CLK_ENABLED() (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN) != RESET) | |
1522 #endif /* QUADSPI */ | |
1523 | |
1524 #if defined(FMC_BANK1) | |
1525 #define __HAL_RCC_FMC_IS_CLK_DISABLED() (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN) == RESET) | |
1526 #endif /* FMC_BANK1 */ | |
1527 | |
1528 #if defined(QUADSPI) | |
1529 #define __HAL_RCC_QSPI_IS_CLK_DISABLED() (READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN) == RESET) | |
1530 #endif /* QUADSPI */ | |
1531 | |
1532 /** | |
1533 * @} | |
1534 */ | |
1535 | |
1536 /** @defgroup RCC_APB1_Clock_Enable_Disable_Status APB1 Peripheral Clock Enabled or Disabled Status | |
1537 * @brief Check whether the APB1 peripheral clock is enabled or not. | |
1538 * @note After reset, the peripheral clock (used for registers read/write access) | |
1539 * is disabled and the application software has to enable this clock before | |
1540 * using it. | |
1541 * @{ | |
1542 */ | |
1543 | |
1544 #define __HAL_RCC_TIM2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN) != RESET) | |
1545 | |
1546 #if defined(TIM3) | |
1547 #define __HAL_RCC_TIM3_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN) != RESET) | |
1548 #endif /* TIM3 */ | |
1549 | |
1550 #if defined(TIM4) | |
1551 #define __HAL_RCC_TIM4_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN) != RESET) | |
1552 #endif /* TIM4 */ | |
1553 | |
1554 #if defined(TIM5) | |
1555 #define __HAL_RCC_TIM5_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN) != RESET) | |
1556 #endif /* TIM5 */ | |
1557 | |
1558 #define __HAL_RCC_TIM6_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN) != RESET) | |
1559 | |
1560 #define __HAL_RCC_TIM7_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN) != RESET) | |
1561 | |
1562 #if defined(LCD) | |
1563 #define __HAL_RCC_LCD_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LCDEN) != RESET) | |
1564 #endif /* LCD */ | |
1565 | |
1566 #if defined(RCC_APB1ENR1_RTCAPBEN) | |
1567 #define __HAL_RCC_RTCAPB_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_RTCAPBEN) != RESET) | |
1568 #endif /* RCC_APB1ENR1_RTCAPBEN */ | |
1569 | |
1570 #define __HAL_RCC_WWDG_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_WWDGEN) != RESET) | |
1571 | |
1572 #if defined(SPI2) | |
1573 #define __HAL_RCC_SPI2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN) != RESET) | |
1574 #endif /* SPI2 */ | |
1575 | |
1576 #define __HAL_RCC_SPI3_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI3EN) != RESET) | |
1577 | |
1578 #define __HAL_RCC_USART2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN) != RESET) | |
1579 | |
1580 #if defined(USART3) | |
1581 #define __HAL_RCC_USART3_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN) != RESET) | |
1582 #endif /* USART3 */ | |
1583 | |
1584 #if defined(UART4) | |
1585 #define __HAL_RCC_UART4_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN) != RESET) | |
1586 #endif /* UART4 */ | |
1587 | |
1588 #if defined(UART5) | |
1589 #define __HAL_RCC_UART5_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN) != RESET) | |
1590 #endif /* UART5 */ | |
1591 | |
1592 #define __HAL_RCC_I2C1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN) != RESET) | |
1593 | |
1594 #if defined(I2C2) | |
1595 #define __HAL_RCC_I2C2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN) != RESET) | |
1596 #endif /* I2C2 */ | |
1597 | |
1598 #define __HAL_RCC_I2C3_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C3EN) != RESET) | |
1599 | |
1600 #if defined(I2C4) | |
1601 #define __HAL_RCC_I2C4_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN) != RESET) | |
1602 #endif /* I2C4 */ | |
1603 | |
1604 #if defined(CRS) | |
1605 #define __HAL_RCC_CRS_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN) != RESET) | |
1606 #endif /* CRS */ | |
1607 | |
1608 #define __HAL_RCC_CAN1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CAN1EN) != RESET) | |
1609 | |
1610 #if defined(USB) | |
1611 #define __HAL_RCC_USB_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USBFSEN) != RESET) | |
1612 #endif /* USB */ | |
1613 | |
1614 #define __HAL_RCC_PWR_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_PWREN) != RESET) | |
1615 | |
1616 #define __HAL_RCC_DAC1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_DAC1EN) != RESET) | |
1617 | |
1618 #define __HAL_RCC_OPAMP_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_OPAMPEN) != RESET) | |
1619 | |
1620 #define __HAL_RCC_LPTIM1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LPTIM1EN) != RESET) | |
1621 | |
1622 #define __HAL_RCC_LPUART1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPUART1EN) != RESET) | |
1623 | |
1624 #if defined(SWPMI1) | |
1625 #define __HAL_RCC_SWPMI1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_SWPMI1EN) != RESET) | |
1626 #endif /* SWPMI1 */ | |
1627 | |
1628 #define __HAL_RCC_LPTIM2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN) != RESET) | |
1629 | |
1630 | |
1631 #define __HAL_RCC_TIM2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM2EN) == RESET) | |
1632 | |
1633 #if defined(TIM3) | |
1634 #define __HAL_RCC_TIM3_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM3EN) == RESET) | |
1635 #endif /* TIM3 */ | |
1636 | |
1637 #if defined(TIM4) | |
1638 #define __HAL_RCC_TIM4_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM4EN) == RESET) | |
1639 #endif /* TIM4 */ | |
1640 | |
1641 #if defined(TIM5) | |
1642 #define __HAL_RCC_TIM5_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM5EN) == RESET) | |
1643 #endif /* TIM5 */ | |
1644 | |
1645 #define __HAL_RCC_TIM6_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM6EN) == RESET) | |
1646 | |
1647 #define __HAL_RCC_TIM7_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_TIM7EN) == RESET) | |
1648 | |
1649 #if defined(LCD) | |
1650 #define __HAL_RCC_LCD_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LCDEN) == RESET) | |
1651 #endif /* LCD */ | |
1652 | |
1653 #if defined(RCC_APB1ENR1_RTCAPBEN) | |
1654 #define __HAL_RCC_RTCAPB_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_RTCAPBEN) == RESET) | |
1655 #endif /* RCC_APB1ENR1_RTCAPBEN */ | |
1656 | |
1657 #define __HAL_RCC_WWDG_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_WWDGEN) == RESET) | |
1658 | |
1659 #if defined(SPI2) | |
1660 #define __HAL_RCC_SPI2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI2EN) == RESET) | |
1661 #endif /* SPI2 */ | |
1662 | |
1663 #define __HAL_RCC_SPI3_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_SPI3EN) == RESET) | |
1664 | |
1665 #define __HAL_RCC_USART2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART2EN) == RESET) | |
1666 | |
1667 #if defined(USART3) | |
1668 #define __HAL_RCC_USART3_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USART3EN) == RESET) | |
1669 #endif /* USART3 */ | |
1670 | |
1671 #if defined(UART4) | |
1672 #define __HAL_RCC_UART4_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART4EN) == RESET) | |
1673 #endif /* UART4 */ | |
1674 | |
1675 #if defined(UART5) | |
1676 #define __HAL_RCC_UART5_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_UART5EN) == RESET) | |
1677 #endif /* UART5 */ | |
1678 | |
1679 #define __HAL_RCC_I2C1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C1EN) == RESET) | |
1680 | |
1681 #if defined(I2C2) | |
1682 #define __HAL_RCC_I2C2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C2EN) == RESET) | |
1683 #endif /* I2C2 */ | |
1684 | |
1685 #define __HAL_RCC_I2C3_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_I2C3EN) == RESET) | |
1686 | |
1687 #if defined(I2C4) | |
1688 #define __HAL_RCC_I2C4_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_I2C4EN) == RESET) | |
1689 #endif /* I2C4 */ | |
1690 | |
1691 #if defined(CRS) | |
1692 #define __HAL_RCC_CRS_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CRSEN) == RESET) | |
1693 #endif /* CRS */ | |
1694 | |
1695 #define __HAL_RCC_CAN1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_CAN1EN) == RESET) | |
1696 | |
1697 #if defined(USB) | |
1698 #define __HAL_RCC_USB_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USBFSEN) == RESET) | |
1699 #endif /* USB */ | |
1700 | |
1701 #define __HAL_RCC_PWR_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_PWREN) == RESET) | |
1702 | |
1703 #define __HAL_RCC_DAC1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_DAC1EN) == RESET) | |
1704 | |
1705 #define __HAL_RCC_OPAMP_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_OPAMPEN) == RESET) | |
1706 | |
1707 #define __HAL_RCC_LPTIM1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR1, RCC_APB1ENR1_LPTIM1EN) == RESET) | |
1708 | |
1709 #define __HAL_RCC_LPUART1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPUART1EN) == RESET) | |
1710 | |
1711 #if defined(SWPMI1) | |
1712 #define __HAL_RCC_SWPMI1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_SWPMI1EN) == RESET) | |
1713 #endif /* SWPMI1 */ | |
1714 | |
1715 #define __HAL_RCC_LPTIM2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR2, RCC_APB1ENR2_LPTIM2EN) == RESET) | |
1716 | |
1717 /** | |
1718 * @} | |
1719 */ | |
1720 | |
1721 /** @defgroup RCC_APB2_Clock_Enable_Disable_Status APB2 Peripheral Clock Enabled or Disabled Status | |
1722 * @brief Check whether the APB2 peripheral clock is enabled or not. | |
1723 * @note After reset, the peripheral clock (used for registers read/write access) | |
1724 * is disabled and the application software has to enable this clock before | |
1725 * using it. | |
1726 * @{ | |
1727 */ | |
1728 | |
1729 #define __HAL_RCC_SYSCFG_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN) != RESET) | |
1730 | |
1731 #define __HAL_RCC_FIREWALL_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_FWEN) != RESET) | |
1732 | |
1733 #if defined(SDMMC1) | |
1734 #define __HAL_RCC_SDMMC1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC1EN) != RESET) | |
1735 #endif /* SDMMC1 */ | |
1736 | |
1737 #define __HAL_RCC_TIM1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN) != RESET) | |
1738 | |
1739 #define __HAL_RCC_SPI1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN) != RESET) | |
1740 | |
1741 #if defined(TIM8) | |
1742 #define __HAL_RCC_TIM8_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN) != RESET) | |
1743 #endif /* TIM8 */ | |
1744 | |
1745 #define __HAL_RCC_USART1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN) != RESET) | |
1746 | |
1747 #define __HAL_RCC_TIM15_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN) != RESET) | |
1748 | |
1749 #define __HAL_RCC_TIM16_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN) != RESET) | |
1750 | |
1751 #if defined(TIM17) | |
1752 #define __HAL_RCC_TIM17_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN) != RESET) | |
1753 #endif /* TIM17 */ | |
1754 | |
1755 #define __HAL_RCC_SAI1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN) != RESET) | |
1756 | |
1757 #if defined(SAI2) | |
1758 #define __HAL_RCC_SAI2_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN) != RESET) | |
1759 #endif /* SAI2 */ | |
1760 | |
1761 #if defined(DFSDM1_Filter0) | |
1762 #define __HAL_RCC_DFSDM1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN) != RESET) | |
1763 #endif /* DFSDM1_Filter0 */ | |
1764 | |
1765 | |
1766 #define __HAL_RCC_SYSCFG_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN) == RESET) | |
1767 | |
1768 #if defined(SDMMC1) | |
1769 #define __HAL_RCC_SDMMC1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC1EN) == RESET) | |
1770 #endif /* SDMMC1 */ | |
1771 | |
1772 #define __HAL_RCC_TIM1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN) == RESET) | |
1773 | |
1774 #define __HAL_RCC_SPI1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN) == RESET) | |
1775 | |
1776 #if defined(TIM8) | |
1777 #define __HAL_RCC_TIM8_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN) == RESET) | |
1778 #endif /* TIM8 */ | |
1779 | |
1780 #define __HAL_RCC_USART1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN) == RESET) | |
1781 | |
1782 #define __HAL_RCC_TIM15_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM15EN) == RESET) | |
1783 | |
1784 #define __HAL_RCC_TIM16_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM16EN) == RESET) | |
1785 | |
1786 #if defined(TIM17) | |
1787 #define __HAL_RCC_TIM17_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM17EN) == RESET) | |
1788 #endif /* TIM17 */ | |
1789 | |
1790 #define __HAL_RCC_SAI1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN) == RESET) | |
1791 | |
1792 #if defined(SAI2) | |
1793 #define __HAL_RCC_SAI2_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN) == RESET) | |
1794 #endif /* SAI2 */ | |
1795 | |
1796 #if defined(DFSDM1_Filter0) | |
1797 #define __HAL_RCC_DFSDM1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN) == RESET) | |
1798 #endif /* DFSDM1_Filter0 */ | |
1799 | |
1800 /** | |
1801 * @} | |
1802 */ | |
1803 | |
1804 /** @defgroup RCC_AHB1_Force_Release_Reset AHB1 Peripheral Force Release Reset | |
1805 * @brief Force or release AHB1 peripheral reset. | |
1806 * @{ | |
1807 */ | |
1808 #define __HAL_RCC_AHB1_FORCE_RESET() WRITE_REG(RCC->AHB1RSTR, 0xFFFFFFFFU) | |
1809 | |
1810 #define __HAL_RCC_DMA1_FORCE_RESET() SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_DMA1RST) | |
1811 | |
1812 #define __HAL_RCC_DMA2_FORCE_RESET() SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_DMA2RST) | |
1813 | |
1814 #define __HAL_RCC_FLASH_FORCE_RESET() SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_FLASHRST) | |
1815 | |
1816 #define __HAL_RCC_CRC_FORCE_RESET() SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_CRCRST) | |
1817 | |
1818 #define __HAL_RCC_TSC_FORCE_RESET() SET_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_TSCRST) | |
1819 | |
1820 | |
1821 #define __HAL_RCC_AHB1_RELEASE_RESET() WRITE_REG(RCC->AHB1RSTR, 0x00000000U) | |
1822 | |
1823 #define __HAL_RCC_DMA1_RELEASE_RESET() CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_DMA1RST) | |
1824 | |
1825 #define __HAL_RCC_DMA2_RELEASE_RESET() CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_DMA2RST) | |
1826 | |
1827 #define __HAL_RCC_FLASH_RELEASE_RESET() CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_FLASHRST) | |
1828 | |
1829 #define __HAL_RCC_CRC_RELEASE_RESET() CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_CRCRST) | |
1830 | |
1831 #define __HAL_RCC_TSC_RELEASE_RESET() CLEAR_BIT(RCC->AHB1RSTR, RCC_AHB1RSTR_TSCRST) | |
1832 | |
1833 /** | |
1834 * @} | |
1835 */ | |
1836 | |
1837 /** @defgroup RCC_AHB2_Force_Release_Reset AHB2 Peripheral Force Release Reset | |
1838 * @brief Force or release AHB2 peripheral reset. | |
1839 * @{ | |
1840 */ | |
1841 #define __HAL_RCC_AHB2_FORCE_RESET() WRITE_REG(RCC->AHB2RSTR, 0xFFFFFFFFU) | |
1842 | |
1843 #define __HAL_RCC_GPIOA_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOARST) | |
1844 | |
1845 #define __HAL_RCC_GPIOB_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOBRST) | |
1846 | |
1847 #define __HAL_RCC_GPIOC_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOCRST) | |
1848 | |
1849 #if defined(GPIOD) | |
1850 #define __HAL_RCC_GPIOD_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIODRST) | |
1851 #endif /* GPIOD */ | |
1852 | |
1853 #if defined(GPIOE) | |
1854 #define __HAL_RCC_GPIOE_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOERST) | |
1855 #endif /* GPIOE */ | |
1856 | |
1857 #if defined(GPIOF) | |
1858 #define __HAL_RCC_GPIOF_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOFRST) | |
1859 #endif /* GPIOF */ | |
1860 | |
1861 #if defined(GPIOG) | |
1862 #define __HAL_RCC_GPIOG_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOGRST) | |
1863 #endif /* GPIOG */ | |
1864 | |
1865 #define __HAL_RCC_GPIOH_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOHRST) | |
1866 | |
1867 #if defined(USB_OTG_FS) | |
1868 #define __HAL_RCC_USB_OTG_FS_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_OTGFSRST) | |
1869 #endif /* USB_OTG_FS */ | |
1870 | |
1871 #define __HAL_RCC_ADC_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_ADCRST) | |
1872 | |
1873 #if defined(AES) | |
1874 #define __HAL_RCC_AES_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_AESRST) | |
1875 #endif /* AES */ | |
1876 | |
1877 #define __HAL_RCC_RNG_FORCE_RESET() SET_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_RNGRST) | |
1878 | |
1879 | |
1880 #define __HAL_RCC_AHB2_RELEASE_RESET() WRITE_REG(RCC->AHB2RSTR, 0x00000000U) | |
1881 | |
1882 #define __HAL_RCC_GPIOA_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOARST) | |
1883 | |
1884 #define __HAL_RCC_GPIOB_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOBRST) | |
1885 | |
1886 #define __HAL_RCC_GPIOC_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOCRST) | |
1887 | |
1888 #if defined(GPIOD) | |
1889 #define __HAL_RCC_GPIOD_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIODRST) | |
1890 #endif /* GPIOD */ | |
1891 | |
1892 #if defined(GPIOE) | |
1893 #define __HAL_RCC_GPIOE_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOERST) | |
1894 #endif /* GPIOE */ | |
1895 | |
1896 #if defined(GPIOF) | |
1897 #define __HAL_RCC_GPIOF_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOFRST) | |
1898 #endif /* GPIOF */ | |
1899 | |
1900 #if defined(GPIOG) | |
1901 #define __HAL_RCC_GPIOG_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOGRST) | |
1902 #endif /* GPIOG */ | |
1903 | |
1904 #define __HAL_RCC_GPIOH_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_GPIOHRST) | |
1905 | |
1906 #if defined(USB_OTG_FS) | |
1907 #define __HAL_RCC_USB_OTG_FS_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_OTGFSRST) | |
1908 #endif /* USB_OTG_FS */ | |
1909 | |
1910 #define __HAL_RCC_ADC_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_ADCRST) | |
1911 | |
1912 #if defined(AES) | |
1913 #define __HAL_RCC_AES_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_AESRST) | |
1914 #endif /* AES */ | |
1915 | |
1916 #define __HAL_RCC_RNG_RELEASE_RESET() CLEAR_BIT(RCC->AHB2RSTR, RCC_AHB2RSTR_RNGRST) | |
1917 | |
1918 /** | |
1919 * @} | |
1920 */ | |
1921 | |
1922 /** @defgroup RCC_AHB3_Force_Release_Reset AHB3 Peripheral Force Release Reset | |
1923 * @brief Force or release AHB3 peripheral reset. | |
1924 * @{ | |
1925 */ | |
1926 #define __HAL_RCC_AHB3_FORCE_RESET() WRITE_REG(RCC->AHB3RSTR, 0xFFFFFFFFU) | |
1927 | |
1928 #if defined(FMC_BANK1) | |
1929 #define __HAL_RCC_FMC_FORCE_RESET() SET_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_FMCRST) | |
1930 #endif /* FMC_BANK1 */ | |
1931 | |
1932 #if defined(QUADSPI) | |
1933 #define __HAL_RCC_QSPI_FORCE_RESET() SET_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_QSPIRST) | |
1934 #endif /* QUADSPI */ | |
1935 | |
1936 #define __HAL_RCC_AHB3_RELEASE_RESET() WRITE_REG(RCC->AHB3RSTR, 0x00000000U) | |
1937 | |
1938 #if defined(FMC_BANK1) | |
1939 #define __HAL_RCC_FMC_RELEASE_RESET() CLEAR_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_FMCRST) | |
1940 #endif /* FMC_BANK1 */ | |
1941 | |
1942 #if defined(QUADSPI) | |
1943 #define __HAL_RCC_QSPI_RELEASE_RESET() CLEAR_BIT(RCC->AHB3RSTR, RCC_AHB3RSTR_QSPIRST) | |
1944 #endif /* QUADSPI */ | |
1945 | |
1946 /** | |
1947 * @} | |
1948 */ | |
1949 | |
1950 /** @defgroup RCC_APB1_Force_Release_Reset APB1 Peripheral Force Release Reset | |
1951 * @brief Force or release APB1 peripheral reset. | |
1952 * @{ | |
1953 */ | |
1954 #define __HAL_RCC_APB1_FORCE_RESET() WRITE_REG(RCC->APB1RSTR1, 0xFFFFFFFFU) | |
1955 | |
1956 #define __HAL_RCC_TIM2_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM2RST) | |
1957 | |
1958 #if defined(TIM3) | |
1959 #define __HAL_RCC_TIM3_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM3RST) | |
1960 #endif /* TIM3 */ | |
1961 | |
1962 #if defined(TIM4) | |
1963 #define __HAL_RCC_TIM4_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM4RST) | |
1964 #endif /* TIM4 */ | |
1965 | |
1966 #if defined(TIM5) | |
1967 #define __HAL_RCC_TIM5_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM5RST) | |
1968 #endif /* TIM5 */ | |
1969 | |
1970 #define __HAL_RCC_TIM6_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM6RST) | |
1971 | |
1972 #define __HAL_RCC_TIM7_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM7RST) | |
1973 | |
1974 #if defined(LCD) | |
1975 #define __HAL_RCC_LCD_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_LCDRST) | |
1976 #endif /* LCD */ | |
1977 | |
1978 #if defined(SPI2) | |
1979 #define __HAL_RCC_SPI2_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_SPI2RST) | |
1980 #endif /* SPI2 */ | |
1981 | |
1982 #define __HAL_RCC_SPI3_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_SPI3RST) | |
1983 | |
1984 #define __HAL_RCC_USART2_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USART2RST) | |
1985 | |
1986 #if defined(USART3) | |
1987 #define __HAL_RCC_USART3_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USART3RST) | |
1988 #endif /* USART3 */ | |
1989 | |
1990 #if defined(UART4) | |
1991 #define __HAL_RCC_UART4_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_UART4RST) | |
1992 #endif /* UART4 */ | |
1993 | |
1994 #if defined(UART5) | |
1995 #define __HAL_RCC_UART5_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_UART5RST) | |
1996 #endif /* UART5 */ | |
1997 | |
1998 #define __HAL_RCC_I2C1_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C1RST) | |
1999 | |
2000 #if defined(I2C2) | |
2001 #define __HAL_RCC_I2C2_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C2RST) | |
2002 #endif /* I2C2 */ | |
2003 | |
2004 #define __HAL_RCC_I2C3_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C3RST) | |
2005 | |
2006 #if defined(I2C4) | |
2007 #define __HAL_RCC_I2C4_FORCE_RESET() SET_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_I2C4RST) | |
2008 #endif /* I2C4 */ | |
2009 | |
2010 #if defined(CRS) | |
2011 #define __HAL_RCC_CRS_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_CRSRST) | |
2012 #endif /* CRS */ | |
2013 | |
2014 #define __HAL_RCC_CAN1_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_CAN1RST) | |
2015 | |
2016 #if defined(USB) | |
2017 #define __HAL_RCC_USB_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USBFSRST) | |
2018 #endif /* USB */ | |
2019 | |
2020 #define __HAL_RCC_PWR_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_PWRRST) | |
2021 | |
2022 #define __HAL_RCC_DAC1_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_DAC1RST) | |
2023 | |
2024 #define __HAL_RCC_OPAMP_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_OPAMPRST) | |
2025 | |
2026 #define __HAL_RCC_LPTIM1_FORCE_RESET() SET_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_LPTIM1RST) | |
2027 | |
2028 #define __HAL_RCC_LPUART1_FORCE_RESET() SET_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_LPUART1RST) | |
2029 | |
2030 #if defined(SWPMI1) | |
2031 #define __HAL_RCC_SWPMI1_FORCE_RESET() SET_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_SWPMI1RST) | |
2032 #endif /* SWPMI1 */ | |
2033 | |
2034 #define __HAL_RCC_LPTIM2_FORCE_RESET() SET_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_LPTIM2RST) | |
2035 | |
2036 | |
2037 #define __HAL_RCC_APB1_RELEASE_RESET() WRITE_REG(RCC->APB1RSTR1, 0x00000000U) | |
2038 | |
2039 #define __HAL_RCC_TIM2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM2RST) | |
2040 | |
2041 #if defined(TIM3) | |
2042 #define __HAL_RCC_TIM3_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM3RST) | |
2043 #endif /* TIM3 */ | |
2044 | |
2045 #if defined(TIM4) | |
2046 #define __HAL_RCC_TIM4_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM4RST) | |
2047 #endif /* TIM4 */ | |
2048 | |
2049 #if defined(TIM5) | |
2050 #define __HAL_RCC_TIM5_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM5RST) | |
2051 #endif /* TIM5 */ | |
2052 | |
2053 #define __HAL_RCC_TIM6_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM6RST) | |
2054 | |
2055 #define __HAL_RCC_TIM7_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_TIM7RST) | |
2056 | |
2057 #if defined(LCD) | |
2058 #define __HAL_RCC_LCD_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_LCDRST) | |
2059 #endif /* LCD */ | |
2060 | |
2061 #if defined(SPI2) | |
2062 #define __HAL_RCC_SPI2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_SPI2RST) | |
2063 #endif /* SPI2 */ | |
2064 | |
2065 #define __HAL_RCC_SPI3_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_SPI3RST) | |
2066 | |
2067 #define __HAL_RCC_USART2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USART2RST) | |
2068 | |
2069 #if defined(USART3) | |
2070 #define __HAL_RCC_USART3_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USART3RST) | |
2071 #endif /* USART3 */ | |
2072 | |
2073 #if defined(UART4) | |
2074 #define __HAL_RCC_UART4_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_UART4RST) | |
2075 #endif /* UART4 */ | |
2076 | |
2077 #if defined(UART5) | |
2078 #define __HAL_RCC_UART5_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_UART5RST) | |
2079 #endif /* UART5 */ | |
2080 | |
2081 #define __HAL_RCC_I2C1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C1RST) | |
2082 | |
2083 #if defined(I2C2) | |
2084 #define __HAL_RCC_I2C2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C2RST) | |
2085 #endif /* I2C2 */ | |
2086 | |
2087 #define __HAL_RCC_I2C3_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_I2C3RST) | |
2088 | |
2089 #if defined(I2C4) | |
2090 #define __HAL_RCC_I2C4_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_I2C4RST) | |
2091 #endif /* I2C4 */ | |
2092 | |
2093 #if defined(CRS) | |
2094 #define __HAL_RCC_CRS_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_CRSRST) | |
2095 #endif /* CRS */ | |
2096 | |
2097 #define __HAL_RCC_CAN1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_CAN1RST) | |
2098 | |
2099 #if defined(USB) | |
2100 #define __HAL_RCC_USB_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_USBFSRST) | |
2101 #endif /* USB */ | |
2102 | |
2103 #define __HAL_RCC_PWR_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_PWRRST) | |
2104 | |
2105 #define __HAL_RCC_DAC1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_DAC1RST) | |
2106 | |
2107 #define __HAL_RCC_OPAMP_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_OPAMPRST) | |
2108 | |
2109 #define __HAL_RCC_LPTIM1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR1, RCC_APB1RSTR1_LPTIM1RST) | |
2110 | |
2111 #define __HAL_RCC_LPUART1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_LPUART1RST) | |
2112 | |
2113 #if defined(SWPMI1) | |
2114 #define __HAL_RCC_SWPMI1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_SWPMI1RST) | |
2115 #endif /* SWPMI1 */ | |
2116 | |
2117 #define __HAL_RCC_LPTIM2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR2, RCC_APB1RSTR2_LPTIM2RST) | |
2118 | |
2119 /** | |
2120 * @} | |
2121 */ | |
2122 | |
2123 /** @defgroup RCC_APB2_Force_Release_Reset APB2 Peripheral Force Release Reset | |
2124 * @brief Force or release APB2 peripheral reset. | |
2125 * @{ | |
2126 */ | |
2127 #define __HAL_RCC_APB2_FORCE_RESET() WRITE_REG(RCC->APB2RSTR, 0xFFFFFFFFU) | |
2128 | |
2129 #define __HAL_RCC_SYSCFG_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SYSCFGRST) | |
2130 | |
2131 #if defined(SDMMC1) | |
2132 #define __HAL_RCC_SDMMC1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SDMMC1RST) | |
2133 #endif /* SDMMC1 */ | |
2134 | |
2135 #define __HAL_RCC_TIM1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM1RST) | |
2136 | |
2137 #define __HAL_RCC_SPI1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SPI1RST) | |
2138 | |
2139 #if defined(TIM8) | |
2140 #define __HAL_RCC_TIM8_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM8RST) | |
2141 #endif /* TIM8 */ | |
2142 | |
2143 #define __HAL_RCC_USART1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_USART1RST) | |
2144 | |
2145 #define __HAL_RCC_TIM15_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM15RST) | |
2146 | |
2147 #define __HAL_RCC_TIM16_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM16RST) | |
2148 | |
2149 #if defined(TIM17) | |
2150 #define __HAL_RCC_TIM17_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM17RST) | |
2151 #endif /* TIM17 */ | |
2152 | |
2153 #define __HAL_RCC_SAI1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SAI1RST) | |
2154 | |
2155 #if defined(SAI2) | |
2156 #define __HAL_RCC_SAI2_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SAI2RST) | |
2157 #endif /* SAI2 */ | |
2158 | |
2159 #if defined(DFSDM1_Filter0) | |
2160 #define __HAL_RCC_DFSDM1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, RCC_APB2RSTR_DFSDM1RST) | |
2161 #endif /* DFSDM1_Filter0 */ | |
2162 | |
2163 | |
2164 #define __HAL_RCC_APB2_RELEASE_RESET() WRITE_REG(RCC->APB2RSTR, 0x00000000U) | |
2165 | |
2166 #define __HAL_RCC_SYSCFG_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SYSCFGRST) | |
2167 | |
2168 #if defined(SDMMC1) | |
2169 #define __HAL_RCC_SDMMC1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SDMMC1RST) | |
2170 #endif /* SDMMC1 */ | |
2171 | |
2172 #define __HAL_RCC_TIM1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM1RST) | |
2173 | |
2174 #define __HAL_RCC_SPI1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SPI1RST) | |
2175 | |
2176 #if defined(TIM8) | |
2177 #define __HAL_RCC_TIM8_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM8RST) | |
2178 #endif /* TIM8 */ | |
2179 | |
2180 #define __HAL_RCC_USART1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_USART1RST) | |
2181 | |
2182 #define __HAL_RCC_TIM15_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM15RST) | |
2183 | |
2184 #define __HAL_RCC_TIM16_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM16RST) | |
2185 | |
2186 #if defined(TIM17) | |
2187 #define __HAL_RCC_TIM17_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_TIM17RST) | |
2188 #endif /* TIM17 */ | |
2189 | |
2190 #define __HAL_RCC_SAI1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SAI1RST) | |
2191 | |
2192 #if defined(SAI2) | |
2193 #define __HAL_RCC_SAI2_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_SAI2RST) | |
2194 #endif /* SAI2 */ | |
2195 | |
2196 #if defined(DFSDM1_Filter0) | |
2197 #define __HAL_RCC_DFSDM1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, RCC_APB2RSTR_DFSDM1RST) | |
2198 #endif /* DFSDM1_Filter0 */ | |
2199 | |
2200 /** | |
2201 * @} | |
2202 */ | |
2203 | |
2204 /** @defgroup RCC_AHB1_Clock_Sleep_Enable_Disable AHB1 Peripheral Clock Sleep Enable Disable | |
2205 * @brief Enable or disable the AHB1 peripheral clock during Low Power (Sleep) mode. | |
2206 * @note Peripheral clock gating in SLEEP mode can be used to further reduce | |
2207 * power consumption. | |
2208 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. | |
2209 * @note By default, all peripheral clocks are enabled during SLEEP mode. | |
2210 * @{ | |
2211 */ | |
2212 | |
2213 #define __HAL_RCC_DMA1_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA1SMEN) | |
2214 | |
2215 #define __HAL_RCC_DMA2_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA2SMEN) | |
2216 | |
2217 #define __HAL_RCC_FLASH_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_FLASHSMEN) | |
2218 | |
2219 #define __HAL_RCC_SRAM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_SRAM1SMEN) | |
2220 | |
2221 #define __HAL_RCC_CRC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_CRCSMEN) | |
2222 | |
2223 #define __HAL_RCC_TSC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_TSCSMEN) | |
2224 | |
2225 | |
2226 #define __HAL_RCC_DMA1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA1SMEN) | |
2227 | |
2228 #define __HAL_RCC_DMA2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA2SMEN) | |
2229 | |
2230 #define __HAL_RCC_FLASH_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_FLASHSMEN) | |
2231 | |
2232 #define __HAL_RCC_SRAM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_SRAM1SMEN) | |
2233 | |
2234 #define __HAL_RCC_CRC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_CRCSMEN) | |
2235 | |
2236 #define __HAL_RCC_TSC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_TSCSMEN) | |
2237 | |
2238 /** | |
2239 * @} | |
2240 */ | |
2241 | |
2242 /** @defgroup RCC_AHB2_Clock_Sleep_Enable_Disable AHB2 Peripheral Clock Sleep Enable Disable | |
2243 * @brief Enable or disable the AHB2 peripheral clock during Low Power (Sleep) mode. | |
2244 * @note Peripheral clock gating in SLEEP mode can be used to further reduce | |
2245 * power consumption. | |
2246 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. | |
2247 * @note By default, all peripheral clocks are enabled during SLEEP mode. | |
2248 * @{ | |
2249 */ | |
2250 | |
2251 #define __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOASMEN) | |
2252 | |
2253 #define __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOBSMEN) | |
2254 | |
2255 #define __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOCSMEN) | |
2256 | |
2257 #if defined(GPIOD) | |
2258 #define __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIODSMEN) | |
2259 #endif /* GPIOD */ | |
2260 | |
2261 #if defined(GPIOE) | |
2262 #define __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOESMEN) | |
2263 #endif /* GPIOE */ | |
2264 | |
2265 #if defined(GPIOF) | |
2266 #define __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOFSMEN) | |
2267 #endif /* GPIOF */ | |
2268 | |
2269 #if defined(GPIOG) | |
2270 #define __HAL_RCC_GPIOG_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOGSMEN) | |
2271 #endif /* GPIOG */ | |
2272 | |
2273 #define __HAL_RCC_GPIOH_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOHSMEN) | |
2274 | |
2275 #define __HAL_RCC_SRAM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_SRAM2SMEN) | |
2276 | |
2277 #if defined(USB_OTG_FS) | |
2278 #define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_OTGFSSMEN) | |
2279 #endif /* USB_OTG_FS */ | |
2280 | |
2281 #define __HAL_RCC_ADC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_ADCSMEN) | |
2282 | |
2283 #if defined(AES) | |
2284 #define __HAL_RCC_AES_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_AESSMEN) | |
2285 #endif /* AES */ | |
2286 | |
2287 #define __HAL_RCC_RNG_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_RNGSMEN) | |
2288 | |
2289 | |
2290 #define __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOASMEN) | |
2291 | |
2292 #define __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOBSMEN) | |
2293 | |
2294 #define __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOCSMEN) | |
2295 | |
2296 #if defined(GPIOD) | |
2297 #define __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIODSMEN) | |
2298 #endif /* GPIOD */ | |
2299 | |
2300 #if defined(GPIOE) | |
2301 #define __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOESMEN) | |
2302 #endif /* GPIOE */ | |
2303 | |
2304 #if defined(GPIOF) | |
2305 #define __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOFSMEN) | |
2306 #endif /* GPIOF */ | |
2307 | |
2308 #if defined(GPIOG) | |
2309 #define __HAL_RCC_GPIOG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOGSMEN) | |
2310 #endif /* GPIOG */ | |
2311 | |
2312 #define __HAL_RCC_GPIOH_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOHSMEN) | |
2313 | |
2314 #define __HAL_RCC_SRAM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_SRAM2SMEN) | |
2315 | |
2316 #if defined(USB_OTG_FS) | |
2317 #define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_OTGFSSMEN) | |
2318 #endif /* USB_OTG_FS */ | |
2319 | |
2320 #define __HAL_RCC_ADC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_ADCSMEN) | |
2321 | |
2322 #if defined(AES) | |
2323 #define __HAL_RCC_AES_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_AESSMEN) | |
2324 #endif /* AES */ | |
2325 | |
2326 #define __HAL_RCC_RNG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_RNGSMEN) | |
2327 | |
2328 /** | |
2329 * @} | |
2330 */ | |
2331 | |
2332 /** @defgroup RCC_AHB3_Clock_Sleep_Enable_Disable AHB3 Peripheral Clock Sleep Enable Disable | |
2333 * @brief Enable or disable the AHB3 peripheral clock during Low Power (Sleep) mode. | |
2334 * @note Peripheral clock gating in SLEEP mode can be used to further reduce | |
2335 * power consumption. | |
2336 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. | |
2337 * @note By default, all peripheral clocks are enabled during SLEEP mode. | |
2338 * @{ | |
2339 */ | |
2340 | |
2341 #if defined(QUADSPI) | |
2342 #define __HAL_RCC_QSPI_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_QSPISMEN) | |
2343 #endif /* QUADSPI */ | |
2344 | |
2345 #if defined(FMC_BANK1) | |
2346 #define __HAL_RCC_FMC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_FMCSMEN) | |
2347 #endif /* FMC_BANK1 */ | |
2348 | |
2349 #if defined(QUADSPI) | |
2350 #define __HAL_RCC_QSPI_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_QSPISMEN) | |
2351 #endif /* QUADSPI */ | |
2352 | |
2353 #if defined(FMC_BANK1) | |
2354 #define __HAL_RCC_FMC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_FMCSMEN) | |
2355 #endif /* FMC_BANK1 */ | |
2356 | |
2357 /** | |
2358 * @} | |
2359 */ | |
2360 | |
2361 /** @defgroup RCC_APB1_Clock_Sleep_Enable_Disable APB1 Peripheral Clock Sleep Enable Disable | |
2362 * @brief Enable or disable the APB1 peripheral clock during Low Power (Sleep) mode. | |
2363 * @note Peripheral clock gating in SLEEP mode can be used to further reduce | |
2364 * power consumption. | |
2365 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. | |
2366 * @note By default, all peripheral clocks are enabled during SLEEP mode. | |
2367 * @{ | |
2368 */ | |
2369 | |
2370 #define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM2SMEN) | |
2371 | |
2372 #if defined(TIM3) | |
2373 #define __HAL_RCC_TIM3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM3SMEN) | |
2374 #endif /* TIM3 */ | |
2375 | |
2376 #if defined(TIM4) | |
2377 #define __HAL_RCC_TIM4_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM4SMEN) | |
2378 #endif /* TIM4 */ | |
2379 | |
2380 #if defined(TIM5) | |
2381 #define __HAL_RCC_TIM5_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM5SMEN) | |
2382 #endif /* TIM5 */ | |
2383 | |
2384 #define __HAL_RCC_TIM6_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM6SMEN) | |
2385 | |
2386 #define __HAL_RCC_TIM7_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM7SMEN) | |
2387 | |
2388 #if defined(LCD) | |
2389 #define __HAL_RCC_LCD_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LCDSMEN) | |
2390 #endif /* LCD */ | |
2391 | |
2392 #if defined(RCC_APB1SMENR1_RTCAPBSMEN) | |
2393 #define __HAL_RCC_RTCAPB_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_RTCAPBSMEN) | |
2394 #endif /* RCC_APB1SMENR1_RTCAPBSMEN */ | |
2395 | |
2396 #define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_WWDGSMEN) | |
2397 | |
2398 #if defined(SPI2) | |
2399 #define __HAL_RCC_SPI2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI2SMEN) | |
2400 #endif /* SPI2 */ | |
2401 | |
2402 #define __HAL_RCC_SPI3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI3SMEN) | |
2403 | |
2404 #define __HAL_RCC_USART2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART2SMEN) | |
2405 | |
2406 #if defined(USART3) | |
2407 #define __HAL_RCC_USART3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART3SMEN) | |
2408 #endif /* USART3 */ | |
2409 | |
2410 #if defined(UART4) | |
2411 #define __HAL_RCC_UART4_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART4SMEN) | |
2412 #endif /* UART4 */ | |
2413 | |
2414 #if defined(UART5) | |
2415 #define __HAL_RCC_UART5_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART5SMEN) | |
2416 #endif /* UART5 */ | |
2417 | |
2418 #define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C1SMEN) | |
2419 | |
2420 #if defined(I2C2) | |
2421 #define __HAL_RCC_I2C2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C2SMEN) | |
2422 #endif /* I2C2 */ | |
2423 | |
2424 #define __HAL_RCC_I2C3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C3SMEN) | |
2425 | |
2426 #if defined(I2C4) | |
2427 #define __HAL_RCC_I2C4_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_I2C4SMEN) | |
2428 #endif /* I2C4 */ | |
2429 | |
2430 #if defined(CRS) | |
2431 #define __HAL_RCC_CRS_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CRSSMEN) | |
2432 #endif /* CRS */ | |
2433 | |
2434 #define __HAL_RCC_CAN1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CAN1SMEN) | |
2435 | |
2436 #if defined(USB) | |
2437 #define __HAL_RCC_USB_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USBFSSMEN) | |
2438 #endif /* USB */ | |
2439 | |
2440 #define __HAL_RCC_PWR_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_PWRSMEN) | |
2441 | |
2442 #define __HAL_RCC_DAC1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_DAC1SMEN) | |
2443 | |
2444 #define __HAL_RCC_OPAMP_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_OPAMPSMEN) | |
2445 | |
2446 #define __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LPTIM1SMEN) | |
2447 | |
2448 #define __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPUART1SMEN) | |
2449 | |
2450 #if defined(SWPMI1) | |
2451 #define __HAL_RCC_SWPMI1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_SWPMI1SMEN) | |
2452 #endif /* SWPMI1 */ | |
2453 | |
2454 #define __HAL_RCC_LPTIM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPTIM2SMEN) | |
2455 | |
2456 | |
2457 #define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM2SMEN) | |
2458 | |
2459 #if defined(TIM3) | |
2460 #define __HAL_RCC_TIM3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM3SMEN) | |
2461 #endif /* TIM3 */ | |
2462 | |
2463 #if defined(TIM4) | |
2464 #define __HAL_RCC_TIM4_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM4SMEN) | |
2465 #endif /* TIM4 */ | |
2466 | |
2467 #if defined(TIM5) | |
2468 #define __HAL_RCC_TIM5_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM5SMEN) | |
2469 #endif /* TIM5 */ | |
2470 | |
2471 #define __HAL_RCC_TIM6_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM6SMEN) | |
2472 | |
2473 #define __HAL_RCC_TIM7_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM7SMEN) | |
2474 | |
2475 #if defined(LCD) | |
2476 #define __HAL_RCC_LCD_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LCDSMEN) | |
2477 #endif /* LCD */ | |
2478 | |
2479 #if defined(RCC_APB1SMENR1_RTCAPBSMEN) | |
2480 #define __HAL_RCC_RTCAPB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_RTCAPBSMEN) | |
2481 #endif /* RCC_APB1SMENR1_RTCAPBSMEN */ | |
2482 | |
2483 #define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_WWDGSMEN) | |
2484 | |
2485 #if defined(SPI2) | |
2486 #define __HAL_RCC_SPI2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI2SMEN) | |
2487 #endif /* SPI2 */ | |
2488 | |
2489 #define __HAL_RCC_SPI3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI3SMEN) | |
2490 | |
2491 #define __HAL_RCC_USART2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART2SMEN) | |
2492 | |
2493 #if defined(USART3) | |
2494 #define __HAL_RCC_USART3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART3SMEN) | |
2495 #endif /* USART3 */ | |
2496 | |
2497 #if defined(UART4) | |
2498 #define __HAL_RCC_UART4_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART4SMEN) | |
2499 #endif /* UART4 */ | |
2500 | |
2501 #if defined(UART5) | |
2502 #define __HAL_RCC_UART5_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART5SMEN) | |
2503 #endif /* UART5 */ | |
2504 | |
2505 #define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C1SMEN) | |
2506 | |
2507 #if defined(I2C2) | |
2508 #define __HAL_RCC_I2C2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C2SMEN) | |
2509 #endif /* I2C2 */ | |
2510 | |
2511 #define __HAL_RCC_I2C3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C3SMEN) | |
2512 | |
2513 #if defined(I2C4) | |
2514 #define __HAL_RCC_I2C4_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_I2C4SMEN) | |
2515 #endif /* I2C4 */ | |
2516 | |
2517 #if defined(CRS) | |
2518 #define __HAL_RCC_CRS_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CRSSMEN) | |
2519 #endif /* CRS */ | |
2520 | |
2521 #define __HAL_RCC_CAN1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CAN1SMEN) | |
2522 | |
2523 #if defined(USB) | |
2524 #define __HAL_RCC_USB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USBFSSMEN) | |
2525 #endif /* USB */ | |
2526 | |
2527 #define __HAL_RCC_PWR_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_PWRSMEN) | |
2528 | |
2529 #define __HAL_RCC_DAC1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_DAC1SMEN) | |
2530 | |
2531 #define __HAL_RCC_OPAMP_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_OPAMPSMEN) | |
2532 | |
2533 #define __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LPTIM1SMEN) | |
2534 | |
2535 #define __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPUART1SMEN) | |
2536 | |
2537 #if defined(SWPMI1) | |
2538 #define __HAL_RCC_SWPMI1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_SWPMI1SMEN) | |
2539 #endif /* SWPMI1 */ | |
2540 | |
2541 #define __HAL_RCC_LPTIM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPTIM2SMEN) | |
2542 | |
2543 /** | |
2544 * @} | |
2545 */ | |
2546 | |
2547 /** @defgroup RCC_APB2_Clock_Sleep_Enable_Disable APB2 Peripheral Clock Sleep Enable Disable | |
2548 * @brief Enable or disable the APB2 peripheral clock during Low Power (Sleep) mode. | |
2549 * @note Peripheral clock gating in SLEEP mode can be used to further reduce | |
2550 * power consumption. | |
2551 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. | |
2552 * @note By default, all peripheral clocks are enabled during SLEEP mode. | |
2553 * @{ | |
2554 */ | |
2555 | |
2556 #define __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SYSCFGSMEN) | |
2557 | |
2558 #if defined(SDMMC1) | |
2559 #define __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SDMMC1SMEN) | |
2560 #endif /* SDMMC1 */ | |
2561 | |
2562 #define __HAL_RCC_TIM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM1SMEN) | |
2563 | |
2564 #define __HAL_RCC_SPI1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SPI1SMEN) | |
2565 | |
2566 #if defined(TIM8) | |
2567 #define __HAL_RCC_TIM8_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM8SMEN) | |
2568 #endif /* TIM8 */ | |
2569 | |
2570 #define __HAL_RCC_USART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_USART1SMEN) | |
2571 | |
2572 #define __HAL_RCC_TIM15_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM15SMEN) | |
2573 | |
2574 #define __HAL_RCC_TIM16_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM16SMEN) | |
2575 | |
2576 #if defined(TIM17) | |
2577 #define __HAL_RCC_TIM17_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM17SMEN) | |
2578 #endif /* TIM17 */ | |
2579 | |
2580 #define __HAL_RCC_SAI1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI1SMEN) | |
2581 | |
2582 #if defined(SAI2) | |
2583 #define __HAL_RCC_SAI2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI2SMEN) | |
2584 #endif /* SAI2 */ | |
2585 | |
2586 #if defined(DFSDM1_Filter0) | |
2587 #define __HAL_RCC_DFSDM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, RCC_APB2SMENR_DFSDM1SMEN) | |
2588 #endif /* DFSDM1_Filter0 */ | |
2589 | |
2590 | |
2591 #define __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SYSCFGSMEN) | |
2592 | |
2593 #if defined(SDMMC1) | |
2594 #define __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SDMMC1SMEN) | |
2595 #endif /* SDMMC1 */ | |
2596 | |
2597 #define __HAL_RCC_TIM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM1SMEN) | |
2598 | |
2599 #define __HAL_RCC_SPI1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SPI1SMEN) | |
2600 | |
2601 #if defined(TIM8) | |
2602 #define __HAL_RCC_TIM8_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM8SMEN) | |
2603 #endif /* TIM8 */ | |
2604 | |
2605 #define __HAL_RCC_USART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_USART1SMEN) | |
2606 | |
2607 #define __HAL_RCC_TIM15_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM15SMEN) | |
2608 | |
2609 #define __HAL_RCC_TIM16_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM16SMEN) | |
2610 | |
2611 #if defined(TIM17) | |
2612 #define __HAL_RCC_TIM17_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM17SMEN) | |
2613 #endif /* TIM17 */ | |
2614 | |
2615 #define __HAL_RCC_SAI1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI1SMEN) | |
2616 | |
2617 #if defined(SAI2) | |
2618 #define __HAL_RCC_SAI2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI2SMEN) | |
2619 #endif /* SAI2 */ | |
2620 | |
2621 #if defined(DFSDM1_Filter0) | |
2622 #define __HAL_RCC_DFSDM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, RCC_APB2SMENR_DFSDM1SMEN) | |
2623 #endif /* DFSDM1_Filter0 */ | |
2624 | |
2625 /** | |
2626 * @} | |
2627 */ | |
2628 | |
2629 /** @defgroup RCC_AHB1_Clock_Sleep_Enable_Disable_Status AHB1 Peripheral Clock Sleep Enabled or Disabled Status | |
2630 * @brief Check whether the AHB1 peripheral clock during Low Power (Sleep) mode is enabled or not. | |
2631 * @note Peripheral clock gating in SLEEP mode can be used to further reduce | |
2632 * power consumption. | |
2633 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. | |
2634 * @note By default, all peripheral clocks are enabled during SLEEP mode. | |
2635 * @{ | |
2636 */ | |
2637 | |
2638 #define __HAL_RCC_DMA1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA1SMEN) != RESET) | |
2639 | |
2640 #define __HAL_RCC_DMA2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA2SMEN) != RESET) | |
2641 | |
2642 #define __HAL_RCC_FLASH_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_FLASHSMEN) != RESET) | |
2643 | |
2644 #define __HAL_RCC_SRAM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_SRAM1SMEN) != RESET) | |
2645 | |
2646 #define __HAL_RCC_CRC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_CRCSMEN) != RESET) | |
2647 | |
2648 #define __HAL_RCC_TSC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_TSCSMEN) != RESET) | |
2649 | |
2650 | |
2651 #define __HAL_RCC_DMA1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA1SMEN) == RESET) | |
2652 | |
2653 #define __HAL_RCC_DMA2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_DMA2SMEN) == RESET) | |
2654 | |
2655 #define __HAL_RCC_FLASH_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_FLASHSMEN) == RESET) | |
2656 | |
2657 #define __HAL_RCC_SRAM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_SRAM1SMEN) == RESET) | |
2658 | |
2659 #define __HAL_RCC_CRC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_CRCSMEN) == RESET) | |
2660 | |
2661 #define __HAL_RCC_TSC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB1SMENR, RCC_AHB1SMENR_TSCSMEN) == RESET) | |
2662 | |
2663 /** | |
2664 * @} | |
2665 */ | |
2666 | |
2667 /** @defgroup RCC_AHB2_Clock_Sleep_Enable_Disable_Status AHB2 Peripheral Clock Sleep Enabled or Disabled Status | |
2668 * @brief Check whether the AHB2 peripheral clock during Low Power (Sleep) mode is enabled or not. | |
2669 * @note Peripheral clock gating in SLEEP mode can be used to further reduce | |
2670 * power consumption. | |
2671 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. | |
2672 * @note By default, all peripheral clocks are enabled during SLEEP mode. | |
2673 * @{ | |
2674 */ | |
2675 | |
2676 #define __HAL_RCC_GPIOA_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOASMEN) != RESET) | |
2677 | |
2678 #define __HAL_RCC_GPIOB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOBSMEN) != RESET) | |
2679 | |
2680 #define __HAL_RCC_GPIOC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOCSMEN) != RESET) | |
2681 | |
2682 #if defined(GPIOD) | |
2683 #define __HAL_RCC_GPIOD_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIODSMEN) != RESET) | |
2684 #endif /* GPIOD */ | |
2685 | |
2686 #if defined(GPIOE) | |
2687 #define __HAL_RCC_GPIOE_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOESMEN) != RESET) | |
2688 #endif /* GPIOE */ | |
2689 | |
2690 #if defined(GPIOF) | |
2691 #define __HAL_RCC_GPIOF_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOFSMEN) != RESET) | |
2692 #endif /* GPIOF */ | |
2693 | |
2694 #if defined(GPIOG) | |
2695 #define __HAL_RCC_GPIOG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOGSMEN) != RESET) | |
2696 #endif /* GPIOG */ | |
2697 | |
2698 #define __HAL_RCC_GPIOH_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOHSMEN) != RESET) | |
2699 | |
2700 #define __HAL_RCC_SRAM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_SRAM2SMEN) != RESET) | |
2701 | |
2702 #if defined(USB_OTG_FS) | |
2703 #define __HAL_RCC_USB_OTG_FS_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_OTGFSSMEN) != RESET) | |
2704 #endif /* USB_OTG_FS */ | |
2705 | |
2706 #define __HAL_RCC_ADC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_ADCSMEN) != RESET) | |
2707 | |
2708 #if defined(AES) | |
2709 #define __HAL_RCC_AES_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_AESSMEN) != RESET) | |
2710 #endif /* AES */ | |
2711 | |
2712 #define __HAL_RCC_RNG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_RNGSMEN) != RESET) | |
2713 | |
2714 | |
2715 #define __HAL_RCC_GPIOA_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOASMEN) == RESET) | |
2716 | |
2717 #define __HAL_RCC_GPIOB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOBSMEN) == RESET) | |
2718 | |
2719 #define __HAL_RCC_GPIOC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOCSMEN) == RESET) | |
2720 | |
2721 #if defined(GPIOD) | |
2722 #define __HAL_RCC_GPIOD_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIODSMEN) == RESET) | |
2723 #endif /* GPIOD */ | |
2724 | |
2725 #if defined(GPIOE) | |
2726 #define __HAL_RCC_GPIOE_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOESMEN) == RESET) | |
2727 #endif /* GPIOE */ | |
2728 | |
2729 #if defined(GPIOF) | |
2730 #define __HAL_RCC_GPIOF_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOFSMEN) == RESET) | |
2731 #endif /* GPIOF */ | |
2732 | |
2733 #if defined(GPIOG) | |
2734 #define __HAL_RCC_GPIOG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOGSMEN) == RESET) | |
2735 #endif /* GPIOG */ | |
2736 | |
2737 #define __HAL_RCC_GPIOH_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_GPIOHSMEN) == RESET) | |
2738 | |
2739 #define __HAL_RCC_SRAM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_SRAM2SMEN) == RESET) | |
2740 | |
2741 #if defined(USB_OTG_FS) | |
2742 #define __HAL_RCC_USB_OTG_FS_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_OTGFSSMEN) == RESET) | |
2743 #endif /* USB_OTG_FS */ | |
2744 | |
2745 #define __HAL_RCC_ADC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_ADCSMEN) == RESET) | |
2746 | |
2747 #if defined(AES) | |
2748 #define __HAL_RCC_AES_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_AESSMEN) == RESET) | |
2749 #endif /* AES */ | |
2750 | |
2751 #define __HAL_RCC_RNG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB2SMENR, RCC_AHB2SMENR_RNGSMEN) == RESET) | |
2752 | |
2753 /** | |
2754 * @} | |
2755 */ | |
2756 | |
2757 /** @defgroup RCC_AHB3_Clock_Sleep_Enable_Disable_Status AHB3 Peripheral Clock Sleep Enabled or Disabled Status | |
2758 * @brief Check whether the AHB3 peripheral clock during Low Power (Sleep) mode is enabled or not. | |
2759 * @note Peripheral clock gating in SLEEP mode can be used to further reduce | |
2760 * power consumption. | |
2761 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. | |
2762 * @note By default, all peripheral clocks are enabled during SLEEP mode. | |
2763 * @{ | |
2764 */ | |
2765 | |
2766 #if defined(QUADSPI) | |
2767 #define __HAL_RCC_QSPI_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_QSPISMEN) != RESET) | |
2768 #endif /* QUADSPI */ | |
2769 | |
2770 #if defined(FMC_BANK1) | |
2771 #define __HAL_RCC_FMC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_FMCSMEN) != RESET) | |
2772 #endif /* FMC_BANK1 */ | |
2773 | |
2774 #if defined(QUADSPI) | |
2775 #define __HAL_RCC_QSPI_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_QSPISMEN) == RESET) | |
2776 #endif /* QUADSPI */ | |
2777 | |
2778 #if defined(FMC_BANK1) | |
2779 #define __HAL_RCC_FMC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHB3SMENR, RCC_AHB3SMENR_FMCSMEN) == RESET) | |
2780 #endif /* FMC_BANK1 */ | |
2781 | |
2782 /** | |
2783 * @} | |
2784 */ | |
2785 | |
2786 /** @defgroup RCC_APB1_Clock_Sleep_Enable_Disable_Status APB1 Peripheral Clock Sleep Enabled or Disabled Status | |
2787 * @brief Check whether the APB1 peripheral clock during Low Power (Sleep) mode is enabled or not. | |
2788 * @note Peripheral clock gating in SLEEP mode can be used to further reduce | |
2789 * power consumption. | |
2790 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. | |
2791 * @note By default, all peripheral clocks are enabled during SLEEP mode. | |
2792 * @{ | |
2793 */ | |
2794 | |
2795 #define __HAL_RCC_TIM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM2SMEN) != RESET) | |
2796 | |
2797 #if defined(TIM3) | |
2798 #define __HAL_RCC_TIM3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM3SMEN) != RESET) | |
2799 #endif /* TIM3 */ | |
2800 | |
2801 #if defined(TIM4) | |
2802 #define __HAL_RCC_TIM4_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM4SMEN) != RESET) | |
2803 #endif /* TIM4 */ | |
2804 | |
2805 #if defined(TIM5) | |
2806 #define __HAL_RCC_TIM5_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM5SMEN) != RESET) | |
2807 #endif /* TIM5 */ | |
2808 | |
2809 #define __HAL_RCC_TIM6_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM6SMEN) != RESET) | |
2810 | |
2811 #define __HAL_RCC_TIM7_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM7SMEN) != RESET) | |
2812 | |
2813 #if defined(LCD) | |
2814 #define __HAL_RCC_LCD_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LCDSMEN) != RESET) | |
2815 #endif /* LCD */ | |
2816 | |
2817 #if defined(RCC_APB1SMENR1_RTCAPBSMEN) | |
2818 #define __HAL_RCC_RTCAPB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_RTCAPBSMEN) != RESET) | |
2819 #endif /* RCC_APB1SMENR1_RTCAPBSMEN */ | |
2820 | |
2821 #define __HAL_RCC_WWDG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_WWDGSMEN) != RESET) | |
2822 | |
2823 #if defined(SPI2) | |
2824 #define __HAL_RCC_SPI2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI2SMEN) != RESET) | |
2825 #endif /* SPI2 */ | |
2826 | |
2827 #define __HAL_RCC_SPI3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI3SMEN) != RESET) | |
2828 | |
2829 #define __HAL_RCC_USART2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART2SMEN) != RESET) | |
2830 | |
2831 #if defined(USART3) | |
2832 #define __HAL_RCC_USART3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART3SMEN) != RESET) | |
2833 #endif /* USART3 */ | |
2834 | |
2835 #if defined(UART4) | |
2836 #define __HAL_RCC_UART4_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART4SMEN) != RESET) | |
2837 #endif /* UART4 */ | |
2838 | |
2839 #if defined(UART5) | |
2840 #define __HAL_RCC_UART5_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART5SMEN) != RESET) | |
2841 #endif /* UART5 */ | |
2842 | |
2843 #define __HAL_RCC_I2C1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C1SMEN) != RESET) | |
2844 | |
2845 #if defined(I2C2) | |
2846 #define __HAL_RCC_I2C2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C2SMEN) != RESET) | |
2847 #endif /* I2C2 */ | |
2848 | |
2849 #define __HAL_RCC_I2C3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C3SMEN) != RESET) | |
2850 | |
2851 #if defined(I2C4) | |
2852 #define __HAL_RCC_I2C4_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_I2C4SMEN) != RESET) | |
2853 #endif /* I2C4 */ | |
2854 | |
2855 #if defined(CRS) | |
2856 #define __HAL_RCC_CRS_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CRSSMEN) != RESET) | |
2857 #endif /* CRS */ | |
2858 | |
2859 #define __HAL_RCC_CAN1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CAN1SMEN) != RESET) | |
2860 | |
2861 #if defined(USB) | |
2862 #define __HAL_RCC_USB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USBFSSMEN) != RESET) | |
2863 #endif /* USB */ | |
2864 | |
2865 #define __HAL_RCC_PWR_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_PWRSMEN) != RESET) | |
2866 | |
2867 #define __HAL_RCC_DAC1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_DAC1SMEN) != RESET) | |
2868 | |
2869 #define __HAL_RCC_OPAMP_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_OPAMPSMEN) != RESET) | |
2870 | |
2871 #define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LPTIM1SMEN) != RESET) | |
2872 | |
2873 #define __HAL_RCC_LPUART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPUART1SMEN) != RESET) | |
2874 | |
2875 #if defined(SWPMI1) | |
2876 #define __HAL_RCC_SWPMI1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_SWPMI1SMEN) != RESET) | |
2877 #endif /* SWPMI1 */ | |
2878 | |
2879 #define __HAL_RCC_LPTIM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPTIM2SMEN) != RESET) | |
2880 | |
2881 | |
2882 #define __HAL_RCC_TIM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM2SMEN) == RESET) | |
2883 | |
2884 #if defined(TIM3) | |
2885 #define __HAL_RCC_TIM3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM3SMEN) == RESET) | |
2886 #endif /* TIM3 */ | |
2887 | |
2888 #if defined(TIM4) | |
2889 #define __HAL_RCC_TIM4_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM4SMEN) == RESET) | |
2890 #endif /* TIM4 */ | |
2891 | |
2892 #if defined(TIM5) | |
2893 #define __HAL_RCC_TIM5_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM5SMEN) == RESET) | |
2894 #endif /* TIM5 */ | |
2895 | |
2896 #define __HAL_RCC_TIM6_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM6SMEN) == RESET) | |
2897 | |
2898 #define __HAL_RCC_TIM7_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_TIM7SMEN) == RESET) | |
2899 | |
2900 #if defined(LCD) | |
2901 #define __HAL_RCC_LCD_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LCDSMEN) == RESET) | |
2902 #endif /* LCD */ | |
2903 | |
2904 #if defined(RCC_APB1SMENR1_RTCAPBSMEN) | |
2905 #define __HAL_RCC_RTCAPB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_RTCAPBSMEN) == RESET) | |
2906 #endif /* RCC_APB1SMENR1_RTCAPBSMEN */ | |
2907 | |
2908 #define __HAL_RCC_WWDG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_WWDGSMEN) == RESET) | |
2909 | |
2910 #if defined(SPI2) | |
2911 #define __HAL_RCC_SPI2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI2SMEN) == RESET) | |
2912 #endif /* SPI2 */ | |
2913 | |
2914 #define __HAL_RCC_SPI3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_SPI3SMEN) == RESET) | |
2915 | |
2916 #define __HAL_RCC_USART2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART2SMEN) == RESET) | |
2917 | |
2918 #if defined(USART3) | |
2919 #define __HAL_RCC_USART3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USART3SMEN) == RESET) | |
2920 #endif /* USART3 */ | |
2921 | |
2922 #if defined(UART4) | |
2923 #define __HAL_RCC_UART4_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART4SMEN) == RESET) | |
2924 #endif /* UART4 */ | |
2925 | |
2926 #if defined(UART5) | |
2927 #define __HAL_RCC_UART5_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_UART5SMEN) == RESET) | |
2928 #endif /* UART5 */ | |
2929 | |
2930 #define __HAL_RCC_I2C1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C1SMEN) == RESET) | |
2931 | |
2932 #if defined(I2C2) | |
2933 #define __HAL_RCC_I2C2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C2SMEN) == RESET) | |
2934 #endif /* I2C2 */ | |
2935 | |
2936 #define __HAL_RCC_I2C3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_I2C3SMEN) == RESET) | |
2937 | |
2938 #if defined(I2C4) | |
2939 #define __HAL_RCC_I2C4_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_I2C4SMEN) == RESET) | |
2940 #endif /* I2C4 */ | |
2941 | |
2942 #if defined(CRS) | |
2943 #define __HAL_RCC_CRS_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CRSSMEN) == RESET) | |
2944 #endif /* CRS */ | |
2945 | |
2946 #define __HAL_RCC_CAN1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_CAN1SMEN) == RESET) | |
2947 | |
2948 #if defined(USB) | |
2949 #define __HAL_RCC_USB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_USBFSSMEN) == RESET) | |
2950 #endif /* USB */ | |
2951 | |
2952 #define __HAL_RCC_PWR_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_PWRSMEN) == RESET) | |
2953 | |
2954 #define __HAL_RCC_DAC1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_DAC1SMEN) == RESET) | |
2955 | |
2956 #define __HAL_RCC_OPAMP_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_OPAMPSMEN) == RESET) | |
2957 | |
2958 #define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR1, RCC_APB1SMENR1_LPTIM1SMEN) == RESET) | |
2959 | |
2960 #define __HAL_RCC_LPUART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPUART1SMEN) == RESET) | |
2961 | |
2962 #if defined(SWPMI1) | |
2963 #define __HAL_RCC_SWPMI1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_SWPMI1SMEN) == RESET) | |
2964 #endif /* SWPMI1 */ | |
2965 | |
2966 #define __HAL_RCC_LPTIM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR2, RCC_APB1SMENR2_LPTIM2SMEN) == RESET) | |
2967 | |
2968 /** | |
2969 * @} | |
2970 */ | |
2971 | |
2972 /** @defgroup RCC_APB2_Clock_Sleep_Enable_Disable_Status APB2 Peripheral Clock Sleep Enabled or Disabled Status | |
2973 * @brief Check whether the APB2 peripheral clock during Low Power (Sleep) mode is enabled or not. | |
2974 * @note Peripheral clock gating in SLEEP mode can be used to further reduce | |
2975 * power consumption. | |
2976 * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. | |
2977 * @note By default, all peripheral clocks are enabled during SLEEP mode. | |
2978 * @{ | |
2979 */ | |
2980 | |
2981 #define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SYSCFGSMEN) != RESET) | |
2982 | |
2983 #if defined(SDMMC1) | |
2984 #define __HAL_RCC_SDMMC1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SDMMC1SMEN) != RESET) | |
2985 #endif /* SDMMC1 */ | |
2986 | |
2987 #define __HAL_RCC_TIM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM1SMEN) != RESET) | |
2988 | |
2989 #define __HAL_RCC_SPI1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SPI1SMEN) != RESET) | |
2990 | |
2991 #if defined(TIM8) | |
2992 #define __HAL_RCC_TIM8_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM8SMEN) != RESET) | |
2993 #endif /* TIM8 */ | |
2994 | |
2995 #define __HAL_RCC_USART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_USART1SMEN) != RESET) | |
2996 | |
2997 #define __HAL_RCC_TIM15_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM15SMEN) != RESET) | |
2998 | |
2999 #define __HAL_RCC_TIM16_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM16SMEN) != RESET) | |
3000 | |
3001 #if defined(TIM17) | |
3002 #define __HAL_RCC_TIM17_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM17SMEN) != RESET) | |
3003 #endif /* TIM17 */ | |
3004 | |
3005 #define __HAL_RCC_SAI1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI1SMEN) != RESET) | |
3006 | |
3007 #if defined(SAI2) | |
3008 #define __HAL_RCC_SAI2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI2SMEN) != RESET) | |
3009 #endif /* SAI2 */ | |
3010 | |
3011 #if defined(DFSDM1_Filter0) | |
3012 #define __HAL_RCC_DFSDM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_DFSDM1SMEN) != RESET) | |
3013 #endif /* DFSDM1_Filter0 */ | |
3014 | |
3015 | |
3016 #define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SYSCFGSMEN) == RESET) | |
3017 | |
3018 #if defined(SDMMC1) | |
3019 #define __HAL_RCC_SDMMC1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SDMMC1SMEN) == RESET) | |
3020 #endif /* SDMMC1 */ | |
3021 | |
3022 #define __HAL_RCC_TIM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM1SMEN) == RESET) | |
3023 | |
3024 #define __HAL_RCC_SPI1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SPI1SMEN) == RESET) | |
3025 | |
3026 #if defined(TIM8) | |
3027 #define __HAL_RCC_TIM8_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM8SMEN) == RESET) | |
3028 #endif /* TIM8 */ | |
3029 | |
3030 #define __HAL_RCC_USART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_USART1SMEN) == RESET) | |
3031 | |
3032 #define __HAL_RCC_TIM15_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM15SMEN) == RESET) | |
3033 | |
3034 #define __HAL_RCC_TIM16_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM16SMEN) == RESET) | |
3035 | |
3036 #if defined(TIM17) | |
3037 #define __HAL_RCC_TIM17_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM17SMEN) == RESET) | |
3038 #endif /* TIM17 */ | |
3039 | |
3040 #define __HAL_RCC_SAI1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI1SMEN) == RESET) | |
3041 | |
3042 #if defined(SAI2) | |
3043 #define __HAL_RCC_SAI2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SAI2SMEN) == RESET) | |
3044 #endif /* SAI2 */ | |
3045 | |
3046 #if defined(DFSDM1_Filter0) | |
3047 #define __HAL_RCC_DFSDM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_DFSDM1SMEN) == RESET) | |
3048 #endif /* DFSDM1_Filter0 */ | |
3049 | |
3050 /** | |
3051 * @} | |
3052 */ | |
3053 | |
3054 /** @defgroup RCC_Backup_Domain_Reset RCC Backup Domain Reset | |
3055 * @{ | |
3056 */ | |
3057 | |
3058 /** @brief Macros to force or release the Backup domain reset. | |
3059 * @note This function resets the RTC peripheral (including the backup registers) | |
3060 * and the RTC clock source selection in RCC_CSR register. | |
3061 * @note The BKPSRAM is not affected by this reset. | |
3062 * @retval None | |
3063 */ | |
3064 #define __HAL_RCC_BACKUPRESET_FORCE() SET_BIT(RCC->BDCR, RCC_BDCR_BDRST) | |
3065 | |
3066 #define __HAL_RCC_BACKUPRESET_RELEASE() CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST) | |
3067 | |
3068 /** | |
3069 * @} | |
3070 */ | |
3071 | |
3072 /** @defgroup RCC_RTC_Clock_Configuration RCC RTC Clock Configuration | |
3073 * @{ | |
3074 */ | |
3075 | |
3076 /** @brief Macros to enable or disable the RTC clock. | |
3077 * @note As the RTC is in the Backup domain and write access is denied to | |
3078 * this domain after reset, you have to enable write access using | |
3079 * HAL_PWR_EnableBkUpAccess() function before to configure the RTC | |
3080 * (to be done once after reset). | |
3081 * @note These macros must be used after the RTC clock source was selected. | |
3082 * @retval None | |
3083 */ | |
3084 #define __HAL_RCC_RTC_ENABLE() SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN) | |
3085 | |
3086 #define __HAL_RCC_RTC_DISABLE() CLEAR_BIT(RCC->BDCR, RCC_BDCR_RTCEN) | |
3087 | |
3088 /** | |
3089 * @} | |
3090 */ | |
3091 | |
3092 /** @brief Macros to enable or disable the Internal High Speed 16MHz oscillator (HSI). | |
3093 * @note The HSI is stopped by hardware when entering STOP and STANDBY modes. | |
3094 * It is used (enabled by hardware) as system clock source after startup | |
3095 * from Reset, wakeup from STOP and STANDBY mode, or in case of failure | |
3096 * of the HSE used directly or indirectly as system clock (if the Clock | |
3097 * Security System CSS is enabled). | |
3098 * @note HSI can not be stopped if it is used as system clock source. In this case, | |
3099 * you have to select another source of the system clock then stop the HSI. | |
3100 * @note After enabling the HSI, the application software should wait on HSIRDY | |
3101 * flag to be set indicating that HSI clock is stable and can be used as | |
3102 * system clock source. | |
3103 * This parameter can be: ENABLE or DISABLE. | |
3104 * @note When the HSI is stopped, HSIRDY flag goes low after 6 HSI oscillator | |
3105 * clock cycles. | |
3106 * @retval None | |
3107 */ | |
3108 #define __HAL_RCC_HSI_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSION) | |
3109 | |
3110 #define __HAL_RCC_HSI_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSION) | |
3111 | |
3112 /** @brief Macro to adjust the Internal High Speed 16MHz oscillator (HSI) calibration value. | |
3113 * @note The calibration is used to compensate for the variations in voltage | |
3114 * and temperature that influence the frequency of the internal HSI RC. | |
3115 * @param __HSICALIBRATIONVALUE__: specifies the calibration trimming value | |
3116 * (default is RCC_HSICALIBRATION_DEFAULT). | |
3117 * This parameter must be a number between 0 and 0x1F (STM32L43x/STM32L44x/STM32L47x/STM32L48x) or 0x7F (for other devices). | |
3118 * @retval None | |
3119 */ | |
3120 #define __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(__HSICALIBRATIONVALUE__) \ | |
3121 MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSITRIM, (uint32_t)(__HSICALIBRATIONVALUE__) << POSITION_VAL(RCC_ICSCR_HSITRIM)) | |
3122 | |
3123 /** | |
3124 * @brief Macros to enable or disable the wakeup the Internal High Speed oscillator (HSI) | |
3125 * in parallel to the Internal Multi Speed oscillator (MSI) used at system wakeup. | |
3126 * @note The enable of this function has not effect on the HSION bit. | |
3127 * This parameter can be: ENABLE or DISABLE. | |
3128 * @retval None | |
3129 */ | |
3130 #define __HAL_RCC_HSIAUTOMATIC_START_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSIASFS) | |
3131 | |
3132 #define __HAL_RCC_HSIAUTOMATIC_START_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSIASFS) | |
3133 | |
3134 /** | |
3135 * @brief Macros to enable or disable the force of the Internal High Speed oscillator (HSI) | |
3136 * in STOP mode to be quickly available as kernel clock for USARTs and I2Cs. | |
3137 * @note Keeping the HSI ON in STOP mode allows to avoid slowing down the communication | |
3138 * speed because of the HSI startup time. | |
3139 * @note The enable of this function has not effect on the HSION bit. | |
3140 * This parameter can be: ENABLE or DISABLE. | |
3141 * @retval None | |
3142 */ | |
3143 #define __HAL_RCC_HSISTOP_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSIKERON) | |
3144 | |
3145 #define __HAL_RCC_HSISTOP_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSIKERON) | |
3146 | |
3147 /** | |
3148 * @brief Macros to enable or disable the Internal Multi Speed oscillator (MSI). | |
3149 * @note The MSI is stopped by hardware when entering STOP and STANDBY modes. | |
3150 * It is used (enabled by hardware) as system clock source after | |
3151 * startup from Reset, wakeup from STOP and STANDBY mode, or in case | |
3152 * of failure of the HSE used directly or indirectly as system clock | |
3153 * (if the Clock Security System CSS is enabled). | |
3154 * @note MSI can not be stopped if it is used as system clock source. | |
3155 * In this case, you have to select another source of the system | |
3156 * clock then stop the MSI. | |
3157 * @note After enabling the MSI, the application software should wait on | |
3158 * MSIRDY flag to be set indicating that MSI clock is stable and can | |
3159 * be used as system clock source. | |
3160 * @note When the MSI is stopped, MSIRDY flag goes low after 6 MSI oscillator | |
3161 * clock cycles. | |
3162 * @retval None | |
3163 */ | |
3164 #define __HAL_RCC_MSI_ENABLE() SET_BIT(RCC->CR, RCC_CR_MSION) | |
3165 | |
3166 #define __HAL_RCC_MSI_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_MSION) | |
3167 | |
3168 /** @brief Macro Adjusts the Internal Multi Speed oscillator (MSI) calibration value. | |
3169 * @note The calibration is used to compensate for the variations in voltage | |
3170 * and temperature that influence the frequency of the internal MSI RC. | |
3171 * Refer to the Application Note AN3300 for more details on how to | |
3172 * calibrate the MSI. | |
3173 * @param __MSICALIBRATIONVALUE__: specifies the calibration trimming value | |
3174 * (default is RCC_MSICALIBRATION_DEFAULT). | |
3175 * This parameter must be a number between 0 and 255. | |
3176 * @retval None | |
3177 */ | |
3178 #define __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(__MSICALIBRATIONVALUE__) \ | |
3179 MODIFY_REG(RCC->ICSCR, RCC_ICSCR_MSITRIM, (uint32_t)(__MSICALIBRATIONVALUE__) << 8) | |
3180 | |
3181 /** | |
3182 * @brief Macro configures the Internal Multi Speed oscillator (MSI) clock range in run mode | |
3183 * @note After restart from Reset , the MSI clock is around 4 MHz. | |
3184 * After stop the startup clock can be MSI (at any of its possible | |
3185 * frequencies, the one that was used before entering stop mode) or HSI. | |
3186 * After Standby its frequency can be selected between 4 possible values | |
3187 * (1, 2, 4 or 8 MHz). | |
3188 * @note MSIRANGE can be modified when MSI is OFF (MSION=0) or when MSI is ready | |
3189 * (MSIRDY=1). | |
3190 * @note The MSI clock range after reset can be modified on the fly. | |
3191 * @param __MSIRANGEVALUE__: specifies the MSI clock range. | |
3192 * This parameter must be one of the following values: | |
3193 * @arg @ref RCC_MSIRANGE_0 MSI clock is around 100 KHz | |
3194 * @arg @ref RCC_MSIRANGE_1 MSI clock is around 200 KHz | |
3195 * @arg @ref RCC_MSIRANGE_2 MSI clock is around 400 KHz | |
3196 * @arg @ref RCC_MSIRANGE_3 MSI clock is around 800 KHz | |
3197 * @arg @ref RCC_MSIRANGE_4 MSI clock is around 1 MHz | |
3198 * @arg @ref RCC_MSIRANGE_5 MSI clock is around 2 MHz | |
3199 * @arg @ref RCC_MSIRANGE_6 MSI clock is around 4 MHz (default after Reset) | |
3200 * @arg @ref RCC_MSIRANGE_7 MSI clock is around 8 MHz | |
3201 * @arg @ref RCC_MSIRANGE_8 MSI clock is around 16 MHz | |
3202 * @arg @ref RCC_MSIRANGE_9 MSI clock is around 24 MHz | |
3203 * @arg @ref RCC_MSIRANGE_10 MSI clock is around 32 MHz | |
3204 * @arg @ref RCC_MSIRANGE_11 MSI clock is around 48 MHz | |
3205 * @retval None | |
3206 */ | |
3207 #define __HAL_RCC_MSI_RANGE_CONFIG(__MSIRANGEVALUE__) \ | |
3208 do { \ | |
3209 SET_BIT(RCC->CR, RCC_CR_MSIRGSEL); \ | |
3210 MODIFY_REG(RCC->CR, RCC_CR_MSIRANGE, (__MSIRANGEVALUE__)); \ | |
3211 } while(0) | |
3212 | |
3213 /** | |
3214 * @brief Macro configures the Internal Multi Speed oscillator (MSI) clock range after Standby mode | |
3215 * After Standby its frequency can be selected between 4 possible values (1, 2, 4 or 8 MHz). | |
3216 * @param __MSIRANGEVALUE__: specifies the MSI clock range. | |
3217 * This parameter must be one of the following values: | |
3218 * @arg @ref RCC_MSIRANGE_4 MSI clock is around 1 MHz | |
3219 * @arg @ref RCC_MSIRANGE_5 MSI clock is around 2 MHz | |
3220 * @arg @ref RCC_MSIRANGE_6 MSI clock is around 4 MHz (default after Reset) | |
3221 * @arg @ref RCC_MSIRANGE_7 MSI clock is around 8 MHz | |
3222 * @retval None | |
3223 */ | |
3224 #define __HAL_RCC_MSI_STANDBY_RANGE_CONFIG(__MSIRANGEVALUE__) \ | |
3225 MODIFY_REG(RCC->CSR, RCC_CSR_MSISRANGE, (__MSIRANGEVALUE__) << 4U) | |
3226 | |
3227 /** @brief Macro to get the Internal Multi Speed oscillator (MSI) clock range in run mode | |
3228 * @retval MSI clock range. | |
3229 * This parameter must be one of the following values: | |
3230 * @arg @ref RCC_MSIRANGE_0 MSI clock is around 100 KHz | |
3231 * @arg @ref RCC_MSIRANGE_1 MSI clock is around 200 KHz | |
3232 * @arg @ref RCC_MSIRANGE_2 MSI clock is around 400 KHz | |
3233 * @arg @ref RCC_MSIRANGE_3 MSI clock is around 800 KHz | |
3234 * @arg @ref RCC_MSIRANGE_4 MSI clock is around 1 MHz | |
3235 * @arg @ref RCC_MSIRANGE_5 MSI clock is around 2 MHz | |
3236 * @arg @ref RCC_MSIRANGE_6 MSI clock is around 4 MHz (default after Reset) | |
3237 * @arg @ref RCC_MSIRANGE_7 MSI clock is around 8 MHz | |
3238 * @arg @ref RCC_MSIRANGE_8 MSI clock is around 16 MHz | |
3239 * @arg @ref RCC_MSIRANGE_9 MSI clock is around 24 MHz | |
3240 * @arg @ref RCC_MSIRANGE_10 MSI clock is around 32 MHz | |
3241 * @arg @ref RCC_MSIRANGE_11 MSI clock is around 48 MHz | |
3242 */ | |
3243 #define __HAL_RCC_GET_MSI_RANGE() \ | |
3244 ((READ_BIT(RCC->CR, RCC_CR_MSIRGSEL) != RESET) ? \ | |
3245 (uint32_t)(READ_BIT(RCC->CR, RCC_CR_MSIRANGE)) : \ | |
3246 (uint32_t)(READ_BIT(RCC->CSR, RCC_CSR_MSISRANGE) >> 4)) | |
3247 | |
3248 /** @brief Macros to enable or disable the Internal Low Speed oscillator (LSI). | |
3249 * @note After enabling the LSI, the application software should wait on | |
3250 * LSIRDY flag to be set indicating that LSI clock is stable and can | |
3251 * be used to clock the IWDG and/or the RTC. | |
3252 * @note LSI can not be disabled if the IWDG is running. | |
3253 * @note When the LSI is stopped, LSIRDY flag goes low after 6 LSI oscillator | |
3254 * clock cycles. | |
3255 * @retval None | |
3256 */ | |
3257 #define __HAL_RCC_LSI_ENABLE() SET_BIT(RCC->CSR, RCC_CSR_LSION) | |
3258 | |
3259 #define __HAL_RCC_LSI_DISABLE() CLEAR_BIT(RCC->CSR, RCC_CSR_LSION) | |
3260 | |
3261 /** | |
3262 * @brief Macro to configure the External High Speed oscillator (HSE). | |
3263 * @note Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not | |
3264 * supported by this macro. User should request a transition to HSE Off | |
3265 * first and then HSE On or HSE Bypass. | |
3266 * @note After enabling the HSE (RCC_HSE_ON or RCC_HSE_Bypass), the application | |
3267 * software should wait on HSERDY flag to be set indicating that HSE clock | |
3268 * is stable and can be used to clock the PLL and/or system clock. | |
3269 * @note HSE state can not be changed if it is used directly or through the | |
3270 * PLL as system clock. In this case, you have to select another source | |
3271 * of the system clock then change the HSE state (ex. disable it). | |
3272 * @note The HSE is stopped by hardware when entering STOP and STANDBY modes. | |
3273 * @note This function reset the CSSON bit, so if the clock security system(CSS) | |
3274 * was previously enabled you have to enable it again after calling this | |
3275 * function. | |
3276 * @param __STATE__: specifies the new state of the HSE. | |
3277 * This parameter can be one of the following values: | |
3278 * @arg @ref RCC_HSE_OFF Turn OFF the HSE oscillator, HSERDY flag goes low after | |
3279 * 6 HSE oscillator clock cycles. | |
3280 * @arg @ref RCC_HSE_ON Turn ON the HSE oscillator. | |
3281 * @arg @ref RCC_HSE_BYPASS HSE oscillator bypassed with external clock. | |
3282 * @retval None | |
3283 */ | |
3284 #define __HAL_RCC_HSE_CONFIG(__STATE__) \ | |
3285 do { \ | |
3286 if((__STATE__) == RCC_HSE_ON) \ | |
3287 { \ | |
3288 SET_BIT(RCC->CR, RCC_CR_HSEON); \ | |
3289 } \ | |
3290 else if((__STATE__) == RCC_HSE_BYPASS) \ | |
3291 { \ | |
3292 SET_BIT(RCC->CR, RCC_CR_HSEBYP); \ | |
3293 SET_BIT(RCC->CR, RCC_CR_HSEON); \ | |
3294 } \ | |
3295 else \ | |
3296 { \ | |
3297 CLEAR_BIT(RCC->CR, RCC_CR_HSEON); \ | |
3298 CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); \ | |
3299 } \ | |
3300 } while(0) | |
3301 | |
3302 /** | |
3303 * @brief Macro to configure the External Low Speed oscillator (LSE). | |
3304 * @note Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not | |
3305 * supported by this macro. User should request a transition to LSE Off | |
3306 * first and then LSE On or LSE Bypass. | |
3307 * @note As the LSE is in the Backup domain and write access is denied to | |
3308 * this domain after reset, you have to enable write access using | |
3309 * HAL_PWR_EnableBkUpAccess() function before to configure the LSE | |
3310 * (to be done once after reset). | |
3311 * @note After enabling the LSE (RCC_LSE_ON or RCC_LSE_BYPASS), the application | |
3312 * software should wait on LSERDY flag to be set indicating that LSE clock | |
3313 * is stable and can be used to clock the RTC. | |
3314 * @param __STATE__: specifies the new state of the LSE. | |
3315 * This parameter can be one of the following values: | |
3316 * @arg @ref RCC_LSE_OFF Turn OFF the LSE oscillator, LSERDY flag goes low after | |
3317 * 6 LSE oscillator clock cycles. | |
3318 * @arg @ref RCC_LSE_ON Turn ON the LSE oscillator. | |
3319 * @arg @ref RCC_LSE_BYPASS LSE oscillator bypassed with external clock. | |
3320 * @retval None | |
3321 */ | |
3322 #define __HAL_RCC_LSE_CONFIG(__STATE__) \ | |
3323 do { \ | |
3324 if((__STATE__) == RCC_LSE_ON) \ | |
3325 { \ | |
3326 SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); \ | |
3327 } \ | |
3328 else if((__STATE__) == RCC_LSE_BYPASS) \ | |
3329 { \ | |
3330 SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \ | |
3331 SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); \ | |
3332 } \ | |
3333 else \ | |
3334 { \ | |
3335 CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); \ | |
3336 CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \ | |
3337 } \ | |
3338 } while(0) | |
3339 | |
3340 #if defined(RCC_HSI48_SUPPORT) | |
3341 | |
3342 /** @brief Macros to enable or disable the Internal High Speed 48MHz oscillator (HSI48). | |
3343 * @note The HSI48 is stopped by hardware when entering STOP and STANDBY modes. | |
3344 * @note After enabling the HSI48, the application software should wait on HSI48RDY | |
3345 * flag to be set indicating that HSI48 clock is stable. | |
3346 * This parameter can be: ENABLE or DISABLE. | |
3347 * @retval None | |
3348 */ | |
3349 #define __HAL_RCC_HSI48_ENABLE() SET_BIT(RCC->CRRCR, RCC_CRRCR_HSI48ON) | |
3350 | |
3351 #define __HAL_RCC_HSI48_DISABLE() CLEAR_BIT(RCC->CRRCR, RCC_CRRCR_HSI48ON) | |
3352 | |
3353 #endif /* RCC_HSI48_SUPPORT */ | |
3354 | |
3355 /** @brief Macros to configure the RTC clock (RTCCLK). | |
3356 * @note As the RTC clock configuration bits are in the Backup domain and write | |
3357 * access is denied to this domain after reset, you have to enable write | |
3358 * access using the Power Backup Access macro before to configure | |
3359 * the RTC clock source (to be done once after reset). | |
3360 * @note Once the RTC clock is configured it cannot be changed unless the | |
3361 * Backup domain is reset using __HAL_RCC_BACKUPRESET_FORCE() macro, or by | |
3362 * a Power On Reset (POR). | |
3363 * | |
3364 * @param __RTC_CLKSOURCE__: specifies the RTC clock source. | |
3365 * This parameter can be one of the following values: | |
3366 * @arg @ref RCC_RTCCLKSOURCE_NO_CLK No clock selected as RTC clock. | |
3367 * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as RTC clock. | |
3368 * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as RTC clock. | |
3369 * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV32 HSE clock divided by 32 selected | |
3370 * | |
3371 * @note If the LSE or LSI is used as RTC clock source, the RTC continues to | |
3372 * work in STOP and STANDBY modes, and can be used as wakeup source. | |
3373 * However, when the HSE clock is used as RTC clock source, the RTC | |
3374 * cannot be used in STOP and STANDBY modes. | |
3375 * @note The maximum input clock frequency for RTC is 1MHz (when using HSE as | |
3376 * RTC clock source). | |
3377 * @retval None | |
3378 */ | |
3379 #define __HAL_RCC_RTC_CONFIG(__RTC_CLKSOURCE__) \ | |
3380 MODIFY_REG( RCC->BDCR, RCC_BDCR_RTCSEL, (__RTC_CLKSOURCE__)) | |
3381 | |
3382 | |
3383 /** @brief Macro to get the RTC clock source. | |
3384 * @retval The returned value can be one of the following: | |
3385 * @arg @ref RCC_RTCCLKSOURCE_NO_CLK No clock selected as RTC clock. | |
3386 * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as RTC clock. | |
3387 * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as RTC clock. | |
3388 * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV32 HSE clock divided by 32 selected | |
3389 */ | |
3390 #define __HAL_RCC_GET_RTC_SOURCE() ((uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL))) | |
3391 | |
3392 /** @brief Macros to enable or disable the main PLL. | |
3393 * @note After enabling the main PLL, the application software should wait on | |
3394 * PLLRDY flag to be set indicating that PLL clock is stable and can | |
3395 * be used as system clock source. | |
3396 * @note The main PLL can not be disabled if it is used as system clock source | |
3397 * @note The main PLL is disabled by hardware when entering STOP and STANDBY modes. | |
3398 * @retval None | |
3399 */ | |
3400 #define __HAL_RCC_PLL_ENABLE() SET_BIT(RCC->CR, RCC_CR_PLLON) | |
3401 | |
3402 #define __HAL_RCC_PLL_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_PLLON) | |
3403 | |
3404 /** @brief Macro to configure the PLL clock source. | |
3405 * @note This function must be used only when the main PLL is disabled. | |
3406 * @param __PLLSOURCE__: specifies the PLL entry clock source. | |
3407 * This parameter can be one of the following values: | |
3408 * @arg @ref RCC_PLLSOURCE_NONE No clock selected as PLL clock entry | |
3409 * @arg @ref RCC_PLLSOURCE_MSI MSI oscillator clock selected as PLL clock entry | |
3410 * @arg @ref RCC_PLLSOURCE_HSI HSI oscillator clock selected as PLL clock entry | |
3411 * @arg @ref RCC_PLLSOURCE_HSE HSE oscillator clock selected as PLL clock entry | |
3412 * @note This clock source is common for the main PLL and audio PLL (PLLSAI1 and PLLSAI2). | |
3413 * @retval None | |
3414 * | |
3415 */ | |
3416 #define __HAL_RCC_PLL_PLLSOURCE_CONFIG(__PLLSOURCE__) \ | |
3417 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, (__PLLSOURCE__)) | |
3418 | |
3419 /** @brief Macro to configure the PLL source division factor M. | |
3420 * @note This function must be used only when the main PLL is disabled. | |
3421 * @param __PLLM__: specifies the division factor for PLL VCO input clock | |
3422 * This parameter must be a number between Min_Data = 1 and Max_Data = 8. | |
3423 * @note You have to set the PLLM parameter correctly to ensure that the VCO input | |
3424 * frequency ranges from 4 to 16 MHz. It is recommended to select a frequency | |
3425 * of 16 MHz to limit PLL jitter. | |
3426 * @retval None | |
3427 * | |
3428 */ | |
3429 #define __HAL_RCC_PLL_PLLM_CONFIG(__PLLM__) \ | |
3430 MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLM, ((__PLLM__) - 1) << 4U) | |
3431 | |
3432 /** | |
3433 * @brief Macro to configure the main PLL clock source, multiplication and division factors. | |
3434 * @note This function must be used only when the main PLL is disabled. | |
3435 * | |
3436 * @param __PLLSOURCE__: specifies the PLL entry clock source. | |
3437 * This parameter can be one of the following values: | |
3438 * @arg @ref RCC_PLLSOURCE_NONE No clock selected as PLL clock entry | |
3439 * @arg @ref RCC_PLLSOURCE_MSI MSI oscillator clock selected as PLL clock entry | |
3440 * @arg @ref RCC_PLLSOURCE_HSI HSI oscillator clock selected as PLL clock entry | |
3441 * @arg @ref RCC_PLLSOURCE_HSE HSE oscillator clock selected as PLL clock entry | |
3442 * @note This clock source is common for the main PLL and audio PLL (PLLSAI1 and PLLSAI2). | |
3443 * | |
3444 * @param __PLLM__: specifies the division factor for PLL VCO input clock. | |
3445 * This parameter must be a number between 1 and 8. | |
3446 * @note You have to set the PLLM parameter correctly to ensure that the VCO input | |
3447 * frequency ranges from 4 to 16 MHz. It is recommended to select a frequency | |
3448 * of 16 MHz to limit PLL jitter. | |
3449 * | |
3450 * @param __PLLN__: specifies the multiplication factor for PLL VCO output clock. | |
3451 * This parameter must be a number between 8 and 86. | |
3452 * @note You have to set the PLLN parameter correctly to ensure that the VCO | |
3453 * output frequency is between 64 and 344 MHz. | |
3454 * | |
3455 * @param __PLLP__: specifies the division factor for SAI clock. | |
3456 * This parameter must be a number in the range (7 or 17) for STM32L47x/STM32L48x | |
3457 * else (2 to 31). | |
3458 * | |
3459 * @param __PLLQ__: specifies the division factor for OTG FS, SDMMC1 and RNG clocks. | |
3460 * This parameter must be in the range (2, 4, 6 or 8). | |
3461 * @note If the USB OTG FS is used in your application, you have to set the | |
3462 * PLLQ parameter correctly to have 48 MHz clock for the USB. However, | |
3463 * the SDMMC1 and RNG need a frequency lower than or equal to 48 MHz to work | |
3464 * correctly. | |
3465 * @param __PLLR__: specifies the division factor for the main system clock. | |
3466 * @note You have to set the PLLR parameter correctly to not exceed 80MHZ. | |
3467 * This parameter must be in the range (2, 4, 6 or 8). | |
3468 * @retval None | |
3469 */ | |
3470 #if defined(RCC_PLLP_DIV_2_31_SUPPORT) | |
3471 | |
3472 #define __HAL_RCC_PLL_CONFIG(__PLLSOURCE__, __PLLM__, __PLLN__, __PLLP__, __PLLQ__,__PLLR__ ) \ | |
3473 (RCC->PLLCFGR = (uint32_t)(((__PLLM__) - 1U) << 4U) | (uint32_t)((__PLLN__) << 8U) | \ | |
3474 (uint32_t)(__PLLSOURCE__) | (uint32_t)((((__PLLQ__) >> 1U) - 1U) << 21U) | (uint32_t)((((__PLLR__) >> 1U) - 1U) << 25U) | \ | |
3475 (uint32_t)((__PLLP__) << 27U)) | |
3476 | |
3477 #else | |
3478 | |
3479 #define __HAL_RCC_PLL_CONFIG(__PLLSOURCE__, __PLLM__, __PLLN__, __PLLP__, __PLLQ__,__PLLR__ ) \ | |
3480 (RCC->PLLCFGR = (uint32_t)(((__PLLM__) - 1U) << 4U) | (uint32_t)((__PLLN__) << 8U) | (uint32_t)(((__PLLP__) >> 4U ) << 17U) | \ | |
3481 (uint32_t)(__PLLSOURCE__) | (uint32_t)((((__PLLQ__) >> 1U) - 1U) << 21U) | (uint32_t)((((__PLLR__) >> 1U) - 1U) << 25U)) | |
3482 | |
3483 #endif /* RCC_PLLP_DIV_2_31_SUPPORT */ | |
3484 | |
3485 /** @brief Macro to get the oscillator used as PLL clock source. | |
3486 * @retval The oscillator used as PLL clock source. The returned value can be one | |
3487 * of the following: | |
3488 * - RCC_PLLSOURCE_NONE: No oscillator is used as PLL clock source. | |
3489 * - RCC_PLLSOURCE_MSI: MSI oscillator is used as PLL clock source. | |
3490 * - RCC_PLLSOURCE_HSI: HSI oscillator is used as PLL clock source. | |
3491 * - RCC_PLLSOURCE_HSE: HSE oscillator is used as PLL clock source. | |
3492 */ | |
3493 #define __HAL_RCC_GET_PLL_OSCSOURCE() ((uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC)) | |
3494 | |
3495 /** | |
3496 * @brief Enable or disable each clock output (RCC_PLL_SYSCLK, RCC_PLL_48M1CLK, RCC_PLL_SAI3CLK) | |
3497 * @note Enabling/disabling clock outputs RCC_PLL_SAI3CLK and RCC_PLL_48M1CLK can be done at anytime | |
3498 * without the need to stop the PLL in order to save power. But RCC_PLL_SYSCLK cannot | |
3499 * be stopped if used as System Clock. | |
3500 * @param __PLLCLOCKOUT__: specifies the PLL clock to be output. | |
3501 * This parameter can be one or a combination of the following values: | |
3502 * @arg @ref RCC_PLL_SAI3CLK This clock is used to generate an accurate clock to achieve | |
3503 * high-quality audio performance on SAI interface in case. | |
3504 * @arg @ref RCC_PLL_48M1CLK This Clock is used to generate the clock for the USB OTG FS (48 MHz), | |
3505 * the random analog generator (<=48 MHz) and the SDMMC1 (<= 48 MHz). | |
3506 * @arg @ref RCC_PLL_SYSCLK This Clock is used to generate the high speed system clock (up to 80MHz) | |
3507 * @retval None | |
3508 */ | |
3509 #define __HAL_RCC_PLLCLKOUT_ENABLE(__PLLCLOCKOUT__) SET_BIT(RCC->PLLCFGR, (__PLLCLOCKOUT__)) | |
3510 | |
3511 #define __HAL_RCC_PLLCLKOUT_DISABLE(__PLLCLOCKOUT__) CLEAR_BIT(RCC->PLLCFGR, (__PLLCLOCKOUT__)) | |
3512 | |
3513 /** | |
3514 * @brief Get clock output enable status (RCC_PLL_SYSCLK, RCC_PLL_48M1CLK, RCC_PLL_SAI3CLK) | |
3515 * @param __PLLCLOCKOUT__: specifies the output PLL clock to be checked. | |
3516 * This parameter can be one of the following values: | |
3517 * @arg @ref RCC_PLL_SAI3CLK This clock is used to generate an accurate clock to achieve | |
3518 * high-quality audio performance on SAI interface in case. | |
3519 * @arg @ref RCC_PLL_48M1CLK This Clock is used to generate the clock for the USB OTG FS (48 MHz), | |
3520 * the random analog generator (<=48 MHz) and the SDMMC1 (<= 48 MHz). | |
3521 * @arg @ref RCC_PLL_SYSCLK This Clock is used to generate the high speed system clock (up to 80MHz) | |
3522 * @retval SET / RESET | |
3523 */ | |
3524 #define __HAL_RCC_GET_PLLCLKOUT_CONFIG(__PLLCLOCKOUT__) READ_BIT(RCC->PLLCFGR, (__PLLCLOCKOUT__)) | |
3525 | |
3526 /** | |
3527 * @brief Macro to configure the system clock source. | |
3528 * @param __SYSCLKSOURCE__: specifies the system clock source. | |
3529 * This parameter can be one of the following values: | |
3530 * - RCC_SYSCLKSOURCE_MSI: MSI oscillator is used as system clock source. | |
3531 * - RCC_SYSCLKSOURCE_HSI: HSI oscillator is used as system clock source. | |
3532 * - RCC_SYSCLKSOURCE_HSE: HSE oscillator is used as system clock source. | |
3533 * - RCC_SYSCLKSOURCE_PLLCLK: PLL output is used as system clock source. | |
3534 * @retval None | |
3535 */ | |
3536 #define __HAL_RCC_SYSCLK_CONFIG(__SYSCLKSOURCE__) \ | |
3537 MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, (__SYSCLKSOURCE__)) | |
3538 | |
3539 /** @brief Macro to get the clock source used as system clock. | |
3540 * @retval The clock source used as system clock. The returned value can be one | |
3541 * of the following: | |
3542 * - RCC_SYSCLKSOURCE_STATUS_MSI: MSI used as system clock. | |
3543 * - RCC_SYSCLKSOURCE_STATUS_HSI: HSI used as system clock. | |
3544 * - RCC_SYSCLKSOURCE_STATUS_HSE: HSE used as system clock. | |
3545 * - RCC_SYSCLKSOURCE_STATUS_PLLCLK: PLL used as system clock. | |
3546 */ | |
3547 #define __HAL_RCC_GET_SYSCLK_SOURCE() ((uint32_t)(RCC->CFGR & RCC_CFGR_SWS)) | |
3548 | |
3549 /** | |
3550 * @brief Macro to configure the External Low Speed oscillator (LSE) drive capability. | |
3551 * @note As the LSE is in the Backup domain and write access is denied to | |
3552 * this domain after reset, you have to enable write access using | |
3553 * HAL_PWR_EnableBkUpAccess() function before to configure the LSE | |
3554 * (to be done once after reset). | |
3555 * @param __LSEDRIVE__: specifies the new state of the LSE drive capability. | |
3556 * This parameter can be one of the following values: | |
3557 * @arg @ref RCC_LSEDRIVE_LOW LSE oscillator low drive capability. | |
3558 * @arg @ref RCC_LSEDRIVE_MEDIUMLOW LSE oscillator medium low drive capability. | |
3559 * @arg @ref RCC_LSEDRIVE_MEDIUMHIGH LSE oscillator medium high drive capability. | |
3560 * @arg @ref RCC_LSEDRIVE_HIGH LSE oscillator high drive capability. | |
3561 * @retval None | |
3562 */ | |
3563 #define __HAL_RCC_LSEDRIVE_CONFIG(__LSEDRIVE__) \ | |
3564 MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, (uint32_t)(__LSEDRIVE__)) | |
3565 | |
3566 /** | |
3567 * @brief Macro to configure the wake up from stop clock. | |
3568 * @param __STOPWUCLK__: specifies the clock source used after wake up from stop. | |
3569 * This parameter can be one of the following values: | |
3570 * @arg @ref RCC_STOP_WAKEUPCLOCK_MSI MSI selected as system clock source | |
3571 * @arg @ref RCC_STOP_WAKEUPCLOCK_HSI HSI selected as system clock source | |
3572 * @retval None | |
3573 */ | |
3574 #define __HAL_RCC_WAKEUPSTOP_CLK_CONFIG(__STOPWUCLK__) \ | |
3575 MODIFY_REG(RCC->CFGR, RCC_CFGR_STOPWUCK, (__STOPWUCLK__)) | |
3576 | |
3577 | |
3578 /** @brief Macro to configure the MCO clock. | |
3579 * @param __MCOCLKSOURCE__ specifies the MCO clock source. | |
3580 * This parameter can be one of the following values: | |
3581 * @arg @ref RCC_MCO1SOURCE_NOCLOCK MCO output disabled | |
3582 * @arg @ref RCC_MCO1SOURCE_SYSCLK System clock selected as MCO source | |
3583 * @arg @ref RCC_MCO1SOURCE_MSI MSI clock selected as MCO source | |
3584 * @arg @ref RCC_MCO1SOURCE_HSI HSI clock selected as MCO source | |
3585 * @arg @ref RCC_MCO1SOURCE_HSE HSE clock selected as MCO sourcee | |
3586 * @arg @ref RCC_MCO1SOURCE_PLLCLK Main PLL clock selected as MCO source | |
3587 * @arg @ref RCC_MCO1SOURCE_LSI LSI clock selected as MCO source | |
3588 * @arg @ref RCC_MCO1SOURCE_LSE LSE clock selected as MCO source | |
3589 @if STM32L443xx | |
3590 * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO source for devices with HSI48 | |
3591 @endif | |
3592 @if STM32L462xx | |
3593 * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO source for devices with HSI48 | |
3594 @endif | |
3595 * @param __MCODIV__ specifies the MCO clock prescaler. | |
3596 * This parameter can be one of the following values: | |
3597 * @arg @ref RCC_MCODIV_1 MCO clock source is divided by 1 | |
3598 * @arg @ref RCC_MCODIV_2 MCO clock source is divided by 2 | |
3599 * @arg @ref RCC_MCODIV_4 MCO clock source is divided by 4 | |
3600 * @arg @ref RCC_MCODIV_8 MCO clock source is divided by 8 | |
3601 * @arg @ref RCC_MCODIV_16 MCO clock source is divided by 16 | |
3602 */ | |
3603 #define __HAL_RCC_MCO1_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \ | |
3604 MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCOSEL | RCC_CFGR_MCOPRE), ((__MCOCLKSOURCE__) | (__MCODIV__))) | |
3605 | |
3606 /** @defgroup RCC_Flags_Interrupts_Management Flags Interrupts Management | |
3607 * @brief macros to manage the specified RCC Flags and interrupts. | |
3608 * @{ | |
3609 */ | |
3610 | |
3611 /** @brief Enable RCC interrupt (Perform Byte access to RCC_CIR[14:8] bits to enable | |
3612 * the selected interrupts). | |
3613 * @param __INTERRUPT__: specifies the RCC interrupt sources to be enabled. | |
3614 * This parameter can be any combination of the following values: | |
3615 * @arg @ref RCC_IT_LSIRDY LSI ready interrupt | |
3616 * @arg @ref RCC_IT_LSERDY LSE ready interrupt | |
3617 * @arg @ref RCC_IT_MSIRDY HSI ready interrupt | |
3618 * @arg @ref RCC_IT_HSIRDY HSI ready interrupt | |
3619 * @arg @ref RCC_IT_HSERDY HSE ready interrupt | |
3620 * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt | |
3621 * @arg @ref RCC_IT_PLLSAI1RDY PLLSAI1 ready interrupt | |
3622 * @arg @ref RCC_IT_PLLSAI2RDY PLLSAI2 ready interrupt for devices with PLLSAI2 | |
3623 * @arg @ref RCC_IT_LSECSS LSE Clock security system interrupt | |
3624 @if STM32L443xx | |
3625 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 | |
3626 @endif | |
3627 @if STM32L462xx | |
3628 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 | |
3629 @endif | |
3630 * @retval None | |
3631 */ | |
3632 #define __HAL_RCC_ENABLE_IT(__INTERRUPT__) SET_BIT(RCC->CIER, (__INTERRUPT__)) | |
3633 | |
3634 /** @brief Disable RCC interrupt (Perform Byte access to RCC_CIR[14:8] bits to disable | |
3635 * the selected interrupts). | |
3636 * @param __INTERRUPT__: specifies the RCC interrupt sources to be disabled. | |
3637 * This parameter can be any combination of the following values: | |
3638 * @arg @ref RCC_IT_LSIRDY LSI ready interrupt | |
3639 * @arg @ref RCC_IT_LSERDY LSE ready interrupt | |
3640 * @arg @ref RCC_IT_MSIRDY HSI ready interrupt | |
3641 * @arg @ref RCC_IT_HSIRDY HSI ready interrupt | |
3642 * @arg @ref RCC_IT_HSERDY HSE ready interrupt | |
3643 * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt | |
3644 * @arg @ref RCC_IT_PLLSAI1RDY PLLSAI1 ready interrupt | |
3645 * @arg @ref RCC_IT_PLLSAI2RDY PLLSAI2 ready interrupt for devices with PLLSAI2 | |
3646 * @arg @ref RCC_IT_LSECSS LSE Clock security system interrupt | |
3647 @if STM32L443xx | |
3648 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 | |
3649 @endif | |
3650 @if STM32L462xx | |
3651 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 | |
3652 @endif | |
3653 * @retval None | |
3654 */ | |
3655 #define __HAL_RCC_DISABLE_IT(__INTERRUPT__) CLEAR_BIT(RCC->CIER, (__INTERRUPT__)) | |
3656 | |
3657 /** @brief Clear the RCC's interrupt pending bits (Perform Byte access to RCC_CIR[23:16] | |
3658 * bits to clear the selected interrupt pending bits. | |
3659 * @param __INTERRUPT__: specifies the interrupt pending bit to clear. | |
3660 * This parameter can be any combination of the following values: | |
3661 * @arg @ref RCC_IT_LSIRDY LSI ready interrupt | |
3662 * @arg @ref RCC_IT_LSERDY LSE ready interrupt | |
3663 * @arg @ref RCC_IT_MSIRDY MSI ready interrupt | |
3664 * @arg @ref RCC_IT_HSIRDY HSI ready interrupt | |
3665 * @arg @ref RCC_IT_HSERDY HSE ready interrupt | |
3666 * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt | |
3667 * @arg @ref RCC_IT_PLLSAI1RDY PLLSAI1 ready interrupt | |
3668 * @arg @ref RCC_IT_PLLSAI2RDY PLLSAI2 ready interrupt for devices with PLLSAI2 | |
3669 * @arg @ref RCC_IT_CSS HSE Clock security system interrupt | |
3670 * @arg @ref RCC_IT_LSECSS LSE Clock security system interrupt | |
3671 @if STM32L443xx | |
3672 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 | |
3673 @endif | |
3674 @if STM32L462xx | |
3675 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 | |
3676 @endif | |
3677 * @retval None | |
3678 */ | |
3679 #define __HAL_RCC_CLEAR_IT(__INTERRUPT__) (RCC->CICR = (__INTERRUPT__)) | |
3680 | |
3681 /** @brief Check whether the RCC interrupt has occurred or not. | |
3682 * @param __INTERRUPT__: specifies the RCC interrupt source to check. | |
3683 * This parameter can be one of the following values: | |
3684 * @arg @ref RCC_IT_LSIRDY LSI ready interrupt | |
3685 * @arg @ref RCC_IT_LSERDY LSE ready interrupt | |
3686 * @arg @ref RCC_IT_MSIRDY MSI ready interrupt | |
3687 * @arg @ref RCC_IT_HSIRDY HSI ready interrupt | |
3688 * @arg @ref RCC_IT_HSERDY HSE ready interrupt | |
3689 * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt | |
3690 * @arg @ref RCC_IT_PLLSAI1RDY PLLSAI1 ready interrupt | |
3691 * @arg @ref RCC_IT_PLLSAI2RDY PLLSAI2 ready interrupt for devices with PLLSAI2 | |
3692 * @arg @ref RCC_IT_CSS HSE Clock security system interrupt | |
3693 * @arg @ref RCC_IT_LSECSS LSE Clock security system interrupt | |
3694 @if STM32L443xx | |
3695 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 | |
3696 @endif | |
3697 @if STM32L462xx | |
3698 * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 | |
3699 @endif | |
3700 * @retval The new state of __INTERRUPT__ (TRUE or FALSE). | |
3701 */ | |
3702 #define __HAL_RCC_GET_IT(__INTERRUPT__) ((RCC->CIFR & (__INTERRUPT__)) == (__INTERRUPT__)) | |
3703 | |
3704 /** @brief Set RMVF bit to clear the reset flags. | |
3705 * The reset flags are: RCC_FLAG_FWRRST, RCC_FLAG_OBLRST, RCC_FLAG_PINRST, RCC_FLAG_BORRST, | |
3706 * RCC_FLAG_SFTRST, RCC_FLAG_IWDGRST, RCC_FLAG_WWDGRST and RCC_FLAG_LPWRRST. | |
3707 * @retval None | |
3708 */ | |
3709 #define __HAL_RCC_CLEAR_RESET_FLAGS() (RCC->CSR |= RCC_CSR_RMVF) | |
3710 | |
3711 /** @brief Check whether the selected RCC flag is set or not. | |
3712 * @param __FLAG__: specifies the flag to check. | |
3713 * This parameter can be one of the following values: | |
3714 * @arg @ref RCC_FLAG_MSIRDY MSI oscillator clock ready | |
3715 * @arg @ref RCC_FLAG_HSIRDY HSI oscillator clock ready | |
3716 * @arg @ref RCC_FLAG_HSERDY HSE oscillator clock ready | |
3717 * @arg @ref RCC_FLAG_PLLRDY Main PLL clock ready | |
3718 * @arg @ref RCC_FLAG_PLLSAI1RDY PLLSAI1 clock ready | |
3719 * @arg @ref RCC_FLAG_PLLSAI2RDY PLLSAI2 clock ready for devices with PLLSAI2 | |
3720 @if STM32L443xx | |
3721 * @arg @ref RCC_FLAG_HSI48RDY HSI48 clock ready for devices with HSI48 | |
3722 @endif | |
3723 @if STM32L462xx | |
3724 * @arg @ref RCC_FLAG_HSI48RDY HSI48 clock ready for devices with HSI48 | |
3725 @endif | |
3726 * @arg @ref RCC_FLAG_LSERDY LSE oscillator clock ready | |
3727 * @arg @ref RCC_FLAG_LSECSSD Clock security system failure on LSE oscillator detection | |
3728 * @arg @ref RCC_FLAG_LSIRDY LSI oscillator clock ready | |
3729 * @arg @ref RCC_FLAG_BORRST BOR reset | |
3730 * @arg @ref RCC_FLAG_OBLRST OBLRST reset | |
3731 * @arg @ref RCC_FLAG_PINRST Pin reset | |
3732 * @arg @ref RCC_FLAG_FWRST FIREWALL reset | |
3733 * @arg @ref RCC_FLAG_RMVF Remove reset Flag | |
3734 * @arg @ref RCC_FLAG_SFTRST Software reset | |
3735 * @arg @ref RCC_FLAG_IWDGRST Independent Watchdog reset | |
3736 * @arg @ref RCC_FLAG_WWDGRST Window Watchdog reset | |
3737 * @arg @ref RCC_FLAG_LPWRRST Low Power reset | |
3738 * @retval The new state of __FLAG__ (TRUE or FALSE). | |
3739 */ | |
3740 #if defined(RCC_HSI48_SUPPORT) | |
3741 #define __HAL_RCC_GET_FLAG(__FLAG__) (((((((__FLAG__) >> 5U) == 1U) ? RCC->CR : \ | |
3742 ((((__FLAG__) >> 5U) == 4U) ? RCC->CRRCR : \ | |
3743 ((((__FLAG__) >> 5U) == 2U) ? RCC->BDCR : \ | |
3744 ((((__FLAG__) >> 5U) == 3U) ? RCC->CSR : RCC->CIFR)))) & \ | |
3745 ((uint32_t)1U << ((__FLAG__) & RCC_FLAG_MASK))) != RESET) \ | |
3746 ? 1U : 0U) | |
3747 #else | |
3748 #define __HAL_RCC_GET_FLAG(__FLAG__) (((((((__FLAG__) >> 5U) == 1U) ? RCC->CR : \ | |
3749 ((((__FLAG__) >> 5U) == 2U) ? RCC->BDCR : \ | |
3750 ((((__FLAG__) >> 5U) == 3U) ? RCC->CSR : RCC->CIFR))) & \ | |
3751 ((uint32_t)1 << ((__FLAG__) & RCC_FLAG_MASK))) != RESET) \ | |
3752 ? 1U : 0U) | |
3753 #endif /* RCC_HSI48_SUPPORT */ | |
3754 | |
3755 /** | |
3756 * @} | |
3757 */ | |
3758 | |
3759 /** | |
3760 * @} | |
3761 */ | |
3762 | |
3763 /* Private constants ---------------------------------------------------------*/ | |
3764 /** @defgroup RCC_Private_Constants RCC Private Constants | |
3765 * @{ | |
3766 */ | |
3767 /* Defines used for Flags */ | |
3768 #define CR_REG_INDEX ((uint32_t)1U) | |
3769 #define BDCR_REG_INDEX ((uint32_t)2U) | |
3770 #define CSR_REG_INDEX ((uint32_t)3U) | |
3771 #if defined(RCC_HSI48_SUPPORT) | |
3772 #define CRRCR_REG_INDEX ((uint32_t)4U) | |
3773 #endif /* RCC_HSI48_SUPPORT */ | |
3774 | |
3775 #define RCC_FLAG_MASK ((uint32_t)0x1FU) | |
3776 /** | |
3777 * @} | |
3778 */ | |
3779 | |
3780 /* Private macros ------------------------------------------------------------*/ | |
3781 /** @addtogroup RCC_Private_Macros | |
3782 * @{ | |
3783 */ | |
3784 | |
3785 #if defined(RCC_HSI48_SUPPORT) | |
3786 #define IS_RCC_OSCILLATORTYPE(__OSCILLATOR__) (((__OSCILLATOR__) == RCC_OSCILLATORTYPE_NONE) || \ | |
3787 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) || \ | |
3788 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) || \ | |
3789 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSI48) == RCC_OSCILLATORTYPE_HSI48) || \ | |
3790 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) || \ | |
3791 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) || \ | |
3792 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)) | |
3793 #else | |
3794 #define IS_RCC_OSCILLATORTYPE(__OSCILLATOR__) (((__OSCILLATOR__) == RCC_OSCILLATORTYPE_NONE) || \ | |
3795 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) || \ | |
3796 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) || \ | |
3797 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) || \ | |
3798 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) || \ | |
3799 (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)) | |
3800 #endif /* RCC_HSI48_SUPPORT */ | |
3801 | |
3802 #define IS_RCC_HSE(__HSE__) (((__HSE__) == RCC_HSE_OFF) || ((__HSE__) == RCC_HSE_ON) || \ | |
3803 ((__HSE__) == RCC_HSE_BYPASS)) | |
3804 | |
3805 #define IS_RCC_LSE(__LSE__) (((__LSE__) == RCC_LSE_OFF) || ((__LSE__) == RCC_LSE_ON) || \ | |
3806 ((__LSE__) == RCC_LSE_BYPASS)) | |
3807 | |
3808 #define IS_RCC_HSI(__HSI__) (((__HSI__) == RCC_HSI_OFF) || ((__HSI__) == RCC_HSI_ON)) | |
3809 | |
3810 #define IS_RCC_HSI_CALIBRATION_VALUE(__VALUE__) ((__VALUE__) <= (RCC_ICSCR_HSITRIM >> POSITION_VAL(RCC_ICSCR_HSITRIM))) | |
3811 | |
3812 #define IS_RCC_LSI(__LSI__) (((__LSI__) == RCC_LSI_OFF) || ((__LSI__) == RCC_LSI_ON)) | |
3813 | |
3814 #define IS_RCC_MSI(__MSI__) (((__MSI__) == RCC_MSI_OFF) || ((__MSI__) == RCC_MSI_ON)) | |
3815 | |
3816 #define IS_RCC_MSICALIBRATION_VALUE(__VALUE__) ((__VALUE__) <= (uint32_t)255U) | |
3817 | |
3818 #if defined(RCC_HSI48_SUPPORT) | |
3819 #define IS_RCC_HSI48(__HSI48__) (((__HSI48__) == RCC_HSI48_OFF) || ((__HSI48__) == RCC_HSI48_ON)) | |
3820 #endif /* RCC_HSI48_SUPPORT */ | |
3821 | |
3822 #define IS_RCC_PLL(__PLL__) (((__PLL__) == RCC_PLL_NONE) ||((__PLL__) == RCC_PLL_OFF) || \ | |
3823 ((__PLL__) == RCC_PLL_ON)) | |
3824 | |
3825 #define IS_RCC_PLLSOURCE(__SOURCE__) (((__SOURCE__) == RCC_PLLSOURCE_NONE) || \ | |
3826 ((__SOURCE__) == RCC_PLLSOURCE_MSI) || \ | |
3827 ((__SOURCE__) == RCC_PLLSOURCE_HSI) || \ | |
3828 ((__SOURCE__) == RCC_PLLSOURCE_HSE)) | |
3829 | |
3830 #define IS_RCC_PLLM_VALUE(__VALUE__) ((1U <= (__VALUE__)) && ((__VALUE__) <= 8U)) | |
3831 | |
3832 #define IS_RCC_PLLN_VALUE(__VALUE__) ((8U <= (__VALUE__)) && ((__VALUE__) <= 86U)) | |
3833 | |
3834 #if defined(RCC_PLLP_DIV_2_31_SUPPORT) | |
3835 #define IS_RCC_PLLP_VALUE(__VALUE__) (((__VALUE__) >= 2U) && ((__VALUE__) <= 31U)) | |
3836 #else | |
3837 #define IS_RCC_PLLP_VALUE(__VALUE__) (((__VALUE__) == 7U) || ((__VALUE__) == 17U)) | |
3838 #endif /*RCC_PLLP_DIV_2_31_SUPPORT */ | |
3839 | |
3840 #define IS_RCC_PLLQ_VALUE(__VALUE__) (((__VALUE__) == 2U) || ((__VALUE__) == 4U) || \ | |
3841 ((__VALUE__) == 6U) || ((__VALUE__) == 8U)) | |
3842 | |
3843 #define IS_RCC_PLLR_VALUE(__VALUE__) (((__VALUE__) == 2U) || ((__VALUE__) == 4U) || \ | |
3844 ((__VALUE__) == 6U) || ((__VALUE__) == 8U)) | |
3845 | |
3846 #define IS_RCC_PLLSAI1CLOCKOUT_VALUE(__VALUE__) (((((__VALUE__) & RCC_PLLSAI1_SAI1CLK) == RCC_PLLSAI1_SAI1CLK) || \ | |
3847 (((__VALUE__) & RCC_PLLSAI1_48M2CLK) == RCC_PLLSAI1_48M2CLK) || \ | |
3848 (((__VALUE__) & RCC_PLLSAI1_ADC1CLK) == RCC_PLLSAI1_ADC1CLK)) && \ | |
3849 (((__VALUE__) & ~(RCC_PLLSAI1_SAI1CLK|RCC_PLLSAI1_48M2CLK|RCC_PLLSAI1_ADC1CLK)) == 0U)) | |
3850 | |
3851 #if defined(RCC_PLLSAI2_SUPPORT) | |
3852 #define IS_RCC_PLLSAI2CLOCKOUT_VALUE(__VALUE__) (((((__VALUE__) & RCC_PLLSAI2_SAI2CLK) == RCC_PLLSAI2_SAI2CLK) || \ | |
3853 (((__VALUE__) & RCC_PLLSAI2_ADC2CLK) == RCC_PLLSAI2_ADC2CLK)) && \ | |
3854 (((__VALUE__) & ~(RCC_PLLSAI2_SAI2CLK|RCC_PLLSAI2_ADC2CLK)) == 0U)) | |
3855 #endif /* RCC_PLLSAI2_SUPPORT */ | |
3856 | |
3857 #define IS_RCC_MSI_CLOCK_RANGE(__RANGE__) (((__RANGE__) == RCC_MSIRANGE_0) || \ | |
3858 ((__RANGE__) == RCC_MSIRANGE_1) || \ | |
3859 ((__RANGE__) == RCC_MSIRANGE_2) || \ | |
3860 ((__RANGE__) == RCC_MSIRANGE_3) || \ | |
3861 ((__RANGE__) == RCC_MSIRANGE_4) || \ | |
3862 ((__RANGE__) == RCC_MSIRANGE_5) || \ | |
3863 ((__RANGE__) == RCC_MSIRANGE_6) || \ | |
3864 ((__RANGE__) == RCC_MSIRANGE_7) || \ | |
3865 ((__RANGE__) == RCC_MSIRANGE_8) || \ | |
3866 ((__RANGE__) == RCC_MSIRANGE_9) || \ | |
3867 ((__RANGE__) == RCC_MSIRANGE_10) || \ | |
3868 ((__RANGE__) == RCC_MSIRANGE_11)) | |
3869 | |
3870 #define IS_RCC_MSI_STANDBY_CLOCK_RANGE(__RANGE__) (((__RANGE__) == RCC_MSIRANGE_4) || \ | |
3871 ((__RANGE__) == RCC_MSIRANGE_5) || \ | |
3872 ((__RANGE__) == RCC_MSIRANGE_6) || \ | |
3873 ((__RANGE__) == RCC_MSIRANGE_7)) | |
3874 | |
3875 #define IS_RCC_CLOCKTYPE(__CLK__) ((1U <= (__CLK__)) && ((__CLK__) <= 15U)) | |
3876 | |
3877 #define IS_RCC_SYSCLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_SYSCLKSOURCE_MSI) || \ | |
3878 ((__SOURCE__) == RCC_SYSCLKSOURCE_HSI) || \ | |
3879 ((__SOURCE__) == RCC_SYSCLKSOURCE_HSE) || \ | |
3880 ((__SOURCE__) == RCC_SYSCLKSOURCE_PLLCLK)) | |
3881 | |
3882 #define IS_RCC_HCLK(__HCLK__) (((__HCLK__) == RCC_SYSCLK_DIV1) || ((__HCLK__) == RCC_SYSCLK_DIV2) || \ | |
3883 ((__HCLK__) == RCC_SYSCLK_DIV4) || ((__HCLK__) == RCC_SYSCLK_DIV8) || \ | |
3884 ((__HCLK__) == RCC_SYSCLK_DIV16) || ((__HCLK__) == RCC_SYSCLK_DIV64) || \ | |
3885 ((__HCLK__) == RCC_SYSCLK_DIV128) || ((__HCLK__) == RCC_SYSCLK_DIV256) || \ | |
3886 ((__HCLK__) == RCC_SYSCLK_DIV512)) | |
3887 | |
3888 #define IS_RCC_PCLK(__PCLK__) (((__PCLK__) == RCC_HCLK_DIV1) || ((__PCLK__) == RCC_HCLK_DIV2) || \ | |
3889 ((__PCLK__) == RCC_HCLK_DIV4) || ((__PCLK__) == RCC_HCLK_DIV8) || \ | |
3890 ((__PCLK__) == RCC_HCLK_DIV16)) | |
3891 | |
3892 #define IS_RCC_RTCCLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_RTCCLKSOURCE_NO_CLK) || \ | |
3893 ((__SOURCE__) == RCC_RTCCLKSOURCE_LSE) || \ | |
3894 ((__SOURCE__) == RCC_RTCCLKSOURCE_LSI) || \ | |
3895 ((__SOURCE__) == RCC_RTCCLKSOURCE_HSE_DIV32)) | |
3896 | |
3897 #define IS_RCC_MCO(__MCOX__) ((__MCOX__) == RCC_MCO1) | |
3898 | |
3899 #if defined(RCC_HSI48_SUPPORT) | |
3900 #define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK) || \ | |
3901 ((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK) || \ | |
3902 ((__SOURCE__) == RCC_MCO1SOURCE_MSI) || \ | |
3903 ((__SOURCE__) == RCC_MCO1SOURCE_HSI) || \ | |
3904 ((__SOURCE__) == RCC_MCO1SOURCE_HSE) || \ | |
3905 ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) || \ | |
3906 ((__SOURCE__) == RCC_MCO1SOURCE_LSI) || \ | |
3907 ((__SOURCE__) == RCC_MCO1SOURCE_LSE) || \ | |
3908 ((__SOURCE__) == RCC_MCO1SOURCE_HSI48)) | |
3909 #else | |
3910 #define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK) || \ | |
3911 ((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK) || \ | |
3912 ((__SOURCE__) == RCC_MCO1SOURCE_MSI) || \ | |
3913 ((__SOURCE__) == RCC_MCO1SOURCE_HSI) || \ | |
3914 ((__SOURCE__) == RCC_MCO1SOURCE_HSE) || \ | |
3915 ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) || \ | |
3916 ((__SOURCE__) == RCC_MCO1SOURCE_LSI) || \ | |
3917 ((__SOURCE__) == RCC_MCO1SOURCE_LSE)) | |
3918 #endif /* RCC_HSI48_SUPPORT */ | |
3919 | |
3920 #define IS_RCC_MCODIV(__DIV__) (((__DIV__) == RCC_MCODIV_1) || ((__DIV__) == RCC_MCODIV_2) || \ | |
3921 ((__DIV__) == RCC_MCODIV_4) || ((__DIV__) == RCC_MCODIV_8) || \ | |
3922 ((__DIV__) == RCC_MCODIV_16)) | |
3923 | |
3924 #define IS_RCC_LSE_DRIVE(__DRIVE__) (((__DRIVE__) == RCC_LSEDRIVE_LOW) || \ | |
3925 ((__DRIVE__) == RCC_LSEDRIVE_MEDIUMLOW) || \ | |
3926 ((__DRIVE__) == RCC_LSEDRIVE_MEDIUMHIGH) || \ | |
3927 ((__DRIVE__) == RCC_LSEDRIVE_HIGH)) | |
3928 | |
3929 #define IS_RCC_STOP_WAKEUPCLOCK(__SOURCE__) (((__SOURCE__) == RCC_STOP_WAKEUPCLOCK_MSI) || \ | |
3930 ((__SOURCE__) == RCC_STOP_WAKEUPCLOCK_HSI)) | |
3931 /** | |
3932 * @} | |
3933 */ | |
3934 | |
3935 /* Include RCC HAL Extended module */ | |
3936 #include "stm32l4xx_hal_rcc_ex.h" | |
3937 | |
3938 /* Exported functions --------------------------------------------------------*/ | |
3939 /** @addtogroup RCC_Exported_Functions | |
3940 * @{ | |
3941 */ | |
3942 | |
3943 | |
3944 /** @addtogroup RCC_Exported_Functions_Group1 | |
3945 * @{ | |
3946 */ | |
3947 | |
3948 /* Initialization and de-initialization functions ******************************/ | |
3949 void HAL_RCC_DeInit(void); | |
3950 HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct); | |
3951 HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency); | |
3952 | |
3953 /** | |
3954 * @} | |
3955 */ | |
3956 | |
3957 /** @addtogroup RCC_Exported_Functions_Group2 | |
3958 * @{ | |
3959 */ | |
3960 | |
3961 /* Peripheral Control functions ************************************************/ | |
3962 void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv); | |
3963 void HAL_RCC_EnableCSS(void); | |
3964 uint32_t HAL_RCC_GetSysClockFreq(void); | |
3965 uint32_t HAL_RCC_GetHCLKFreq(void); | |
3966 uint32_t HAL_RCC_GetPCLK1Freq(void); | |
3967 uint32_t HAL_RCC_GetPCLK2Freq(void); | |
3968 void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct); | |
3969 void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency); | |
3970 /* CSS NMI IRQ handler */ | |
3971 void HAL_RCC_NMI_IRQHandler(void); | |
3972 /* User Callbacks in non blocking mode (IT mode) */ | |
3973 void HAL_RCC_CSSCallback(void); | |
3974 | |
3975 /** | |
3976 * @} | |
3977 */ | |
3978 | |
3979 /** | |
3980 * @} | |
3981 */ | |
3982 | |
3983 /** | |
3984 * @} | |
3985 */ | |
3986 | |
3987 /** | |
3988 * @} | |
3989 */ | |
3990 | |
3991 #ifdef __cplusplus | |
3992 } | |
3993 #endif | |
3994 | |
3995 #endif /* __STM32L4xx_HAL_RCC_H */ | |
3996 | |
3997 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |