1 /**
2 ******************************************************************************
3 * @file stm32c0xx_ll_dmamux.h
4 * @author MCD Application Team
5 * @brief Header file of DMAMUX LL module.
6 ******************************************************************************
7 * @attention
8 *
9 * Copyright (c) 2022 STMicroelectronics.
10 * All rights reserved.
11 *
12 * This software is licensed under terms that can be found in the LICENSE file
13 * in the root directory of this software component.
14 * If no LICENSE file comes with this software, it is provided AS-IS.
15 *
16 ******************************************************************************
17 */
18
19 /* Define to prevent recursive inclusion -------------------------------------*/
20 #ifndef STM32C0xx_LL_DMAMUX_H
21 #define STM32C0xx_LL_DMAMUX_H
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32c0xx.h"
29
30 /** @addtogroup STM32C0xx_LL_Driver
31 * @{
32 */
33
34 #if defined (DMAMUX1)
35
36 /** @defgroup DMAMUX_LL DMAMUX
37 * @{
38 */
39
40 /* Private types -------------------------------------------------------------*/
41 /* Private variables ---------------------------------------------------------*/
42 /* Private constants ---------------------------------------------------------*/
43 /** @defgroup DMAMUX_LL_Private_Constants DMAMUX Private Constants
44 * @{
45 */
46 /* Define used to get DMAMUX CCR register size */
47 #define DMAMUX_CCR_SIZE 0x00000004UL
48
49 /* Define used to get DMAMUX RGCR register size */
50 #define DMAMUX_RGCR_SIZE 0x00000004UL
51 /**
52 * @}
53 */
54
55 /* Private macros ------------------------------------------------------------*/
56 /* Exported types ------------------------------------------------------------*/
57 /* Exported constants --------------------------------------------------------*/
58 /** @defgroup DMAMUX_LL_Exported_Constants DMAMUX Exported Constants
59 * @{
60 */
61 /** @defgroup DMAMUX_LL_EC_CLEAR_FLAG Clear Flags Defines
62 * @brief Flags defines which can be used with LL_DMAMUX_WriteReg function
63 * @{
64 */
65 #define LL_DMAMUX_CFR_CSOF0 DMAMUX_CFR_CSOF0 /*!< Synchronization Event Overrun Flag Channel 0 */
66 #define LL_DMAMUX_CFR_CSOF1 DMAMUX_CFR_CSOF1 /*!< Synchronization Event Overrun Flag Channel 1 */
67 #define LL_DMAMUX_CFR_CSOF2 DMAMUX_CFR_CSOF2 /*!< Synchronization Event Overrun Flag Channel 2 */
68 #if defined(DMAMUX1_Channel3)
69 #define LL_DMAMUX_CFR_CSOF3 DMAMUX_CFR_CSOF3 /*!< Synchronization Event Overrun Flag Channel 3 */
70 #endif /* DMAMUX1_Channel3 */
71 #if defined(DMAMUX1_Channel4)
72 #define LL_DMAMUX_CFR_CSOF4 DMAMUX_CFR_CSOF4 /*!< Synchronization Event Overrun Flag Channel 4 */
73 #endif /* DMAMUX1_Channel4 */
74
75 #define LL_DMAMUX_RGCFR_RGCOF0 DMAMUX_RGCFR_COF0 /*!< Request Generator 0 Trigger Event Overrun Flag */
76 #define LL_DMAMUX_RGCFR_RGCOF1 DMAMUX_RGCFR_COF1 /*!< Request Generator 1 Trigger Event Overrun Flag */
77 #define LL_DMAMUX_RGCFR_RGCOF2 DMAMUX_RGCFR_COF2 /*!< Request Generator 2 Trigger Event Overrun Flag */
78 #if defined(DMAMUX1_Channel3)
79 #define LL_DMAMUX_RGCFR_RGCOF3 DMAMUX_RGCFR_COF3 /*!< Request Generator 3 Trigger Event Overrun Flag */
80 #endif /* DMAMUX1_Channel3 */
81
82 /**
83 * @}
84 */
85
86 /** @defgroup DMAMUX_LL_EC_GET_FLAG Get Flags Defines
87 * @brief Flags defines which can be used with LL_DMAMUX_ReadReg function
88 * @{
89 */
90 #define LL_DMAMUX_CSR_SOF0 DMAMUX_CSR_SOF0 /*!< Synchronization Event Overrun Flag Channel 0 */
91 #define LL_DMAMUX_CSR_SOF1 DMAMUX_CSR_SOF1 /*!< Synchronization Event Overrun Flag Channel 1 */
92 #define LL_DMAMUX_CSR_SOF2 DMAMUX_CSR_SOF2 /*!< Synchronization Event Overrun Flag Channel 2 */
93 #if defined(DMAMUX1_Channel3)
94 #define LL_DMAMUX_CSR_SOF3 DMAMUX_CSR_SOF3 /*!< Synchronization Event Overrun Flag Channel 3 */
95 #endif /* DMAMUX1_Channel3 */
96 #if defined(DMAMUX1_Channel4)
97 #define LL_DMAMUX_CSR_SOF4 DMAMUX_CSR_SOF4 /*!< Synchronization Event Overrun Flag Channel 4 */
98 #endif /* DMAMUX1_Channel4 */
99
100 #define LL_DMAMUX_RGSR_RGOF0 DMAMUX_RGSR_OF0 /*!< Request Generator 0 Trigger Event Overrun Flag */
101 #define LL_DMAMUX_RGSR_RGOF1 DMAMUX_RGSR_OF1 /*!< Request Generator 1 Trigger Event Overrun Flag */
102 #define LL_DMAMUX_RGSR_RGOF2 DMAMUX_RGSR_OF2 /*!< Request Generator 2 Trigger Event Overrun Flag */
103 #if defined(DMAMUX1_Channel3)
104 #define LL_DMAMUX_RGSR_RGOF3 DMAMUX_RGSR_OF3 /*!< Request Generator 3 Trigger Event Overrun Flag */
105 #endif /* DMAMUX1_Channel3 */
106
107 /**
108 * @}
109 */
110
111 /** @defgroup DMAMUX_LL_EC_IT IT Defines
112 * @brief IT defines which can be used with LL_DMA_ReadReg and LL_DMAMUX_WriteReg functions
113 * @{
114 */
115 #define LL_DMAMUX_CCR_SOIE DMAMUX_CxCR_SOIE /*!< Synchronization Event Overrun Interrupt */
116 #define LL_DMAMUX_RGCR_RGOIE DMAMUX_RGxCR_OIE /*!< Request Generation Trigger Event Overrun Interrupt*/
117 /**
118 * @}
119 */
120
121 /** @defgroup DMAMUX_LL_EC_REQUEST Transfer request
122 * @{
123 */
124 #define LL_DMAMUX_REQ_MEM2MEM 0x00000000U /*!< memory to memory transfer */
125 #define LL_DMAMUX_REQ_GENERATOR0 0x00000001U /*!< DMAMUX request generator 0 */
126 #define LL_DMAMUX_REQ_GENERATOR1 0x00000002U /*!< DMAMUX request generator 1 */
127 #define LL_DMAMUX_REQ_GENERATOR2 0x00000003U /*!< DMAMUX request generator 2 */
128 #define LL_DMAMUX_REQ_GENERATOR3 0x00000004U /*!< DMAMUX request generator 3 */
129 #define LL_DMAMUX_REQ_ADC1 0x00000005U /*!< DMAMUX ADC1 request */
130 #define LL_DMAMUX_REQ_I2C1_RX 0x0000000AU /*!< DMAMUX I2C1 RX request */
131 #define LL_DMAMUX_REQ_I2C1_TX 0x0000000BU /*!< DMAMUX I2C1 TX request */
132 #if defined(I2C2)
133 #define LL_DMAMUX_REQ_I2C2_RX 0x0000000CU /*!< DMAMUX I2C2 RX request */
134 #define LL_DMAMUX_REQ_I2C2_TX 0x0000000DU /*!< DMAMUX I2C2 TX request */
135 #endif /* I2C2 */
136 #define LL_DMAMUX_REQ_SPI1_RX 0x00000010U /*!< DMAMUX SPI1 RX request */
137 #define LL_DMAMUX_REQ_SPI1_TX 0x00000011U /*!< DMAMUX SPI1 TX request */
138 #if defined(SPI2)
139 #define LL_DMAMUX_REQ_SPI2_RX 0x00000012U /*!< DMAMUX SPI2 RX request */
140 #define LL_DMAMUX_REQ_SPI2_TX 0x00000013U /*!< DMAMUX SPI2 TX request */
141 #endif /* SPI2 */
142 #define LL_DMAMUX_REQ_TIM1_CH1 0x00000014U /*!< DMAMUX TIM1 CH1 request */
143 #define LL_DMAMUX_REQ_TIM1_CH2 0x00000015U /*!< DMAMUX TIM1 CH2 request */
144 #define LL_DMAMUX_REQ_TIM1_CH3 0x00000016U /*!< DMAMUX TIM1 CH3 request */
145 #define LL_DMAMUX_REQ_TIM1_CH4 0x00000017U /*!< DMAMUX TIM1 CH4 request */
146 #define LL_DMAMUX_REQ_TIM1_TRIG_COM 0x00000018U /*!< DMAMUX TIM1 TRIG COM request */
147 #define LL_DMAMUX_REQ_TIM1_UP 0x00000019U /*!< DMAMUX TIM1 UP request */
148 #if defined(TIM2)
149 #define LL_DMAMUX_REQ_TIM2_CH1 0x0000001AU /*!< DMAMUX TIM2 CH1 request */
150 #define LL_DMAMUX_REQ_TIM2_CH2 0x0000001BU /*!< DMAMUX TIM2 CH2 request */
151 #define LL_DMAMUX_REQ_TIM2_CH3 0x0000001CU /*!< DMAMUX TIM2 CH3 request */
152 #define LL_DMAMUX_REQ_TIM2_CH4 0x0000001DU /*!< DMAMUX TIM2 CH4 request */
153 #define LL_DMAMUX_REQ_TIM2_TRIG 0x0000001EU /*!< DMAMUX TIM2 TRIG request */
154 #define LL_DMAMUX_REQ_TIM2_UP 0x0000001FU /*!< DMAMUX TIM2 UP request */
155 #endif /* TIM2 */
156 #define LL_DMAMUX_REQ_TIM3_CH1 0x00000020U /*!< DMAMUX TIM3 CH1 request */
157 #define LL_DMAMUX_REQ_TIM3_CH2 0x00000021U /*!< DMAMUX TIM3 CH2 request */
158 #define LL_DMAMUX_REQ_TIM3_CH3 0x00000022U /*!< DMAMUX TIM3 CH3 request */
159 #define LL_DMAMUX_REQ_TIM3_CH4 0x00000023U /*!< DMAMUX TIM3 CH4 request */
160 #define LL_DMAMUX_REQ_TIM3_TRIG 0x00000024U /*!< DMAMUX TIM3 TRIG request */
161 #define LL_DMAMUX_REQ_TIM3_UP 0x00000025U /*!< DMAMUX TIM3 UP request */
162 #define LL_DMAMUX_REQ_TIM16_CH1 0x0000002CU /*!< DMAMUX TIM16 CH1 request */
163 #define LL_DMAMUX_REQ_TIM16_TRIG_COM 0x0000002DU /*!< DMAMUX TIM16 TRIG COM request */
164 #define LL_DMAMUX_REQ_TIM16_UP 0x0000002EU /*!< DMAMUX TIM16 UP request */
165 #define LL_DMAMUX_REQ_TIM17_CH1 0x0000002FU /*!< DMAMUX TIM17 CH1 request */
166 #define LL_DMAMUX_REQ_TIM17_TRIG_COM 0x00000030U /*!< DMAMUX TIM17 TRIG COM request */
167 #define LL_DMAMUX_REQ_TIM17_UP 0x00000031U /*!< DMAMUX TIM17 UP request */
168 #define LL_DMAMUX_REQ_USART1_RX 0x00000032U /*!< DMAMUX USART1 RX request */
169 #define LL_DMAMUX_REQ_USART1_TX 0x00000033U /*!< DMAMUX USART1 TX request */
170 #define LL_DMAMUX_REQ_USART2_RX 0x00000034U /*!< DMAMUX USART2 RX request */
171 #define LL_DMAMUX_REQ_USART2_TX 0x00000035U /*!< DMAMUX USART2 TX request */
172 /**
173 * @}
174 */
175
176 /** @defgroup DMAMUX_LL_EC_CHANNEL DMAMUX Channel
177 * @{
178 */
179 #define LL_DMAMUX_CHANNEL_0 0x00000000U /*!< DMAMUX Channel 0 connected to DMA1 Channel 1 */
180 #define LL_DMAMUX_CHANNEL_1 0x00000001U /*!< DMAMUX Channel 1 connected to DMA1 Channel 2 */
181 #define LL_DMAMUX_CHANNEL_2 0x00000002U /*!< DMAMUX Channel 2 connected to DMA1 Channel 3 */
182 #if defined(DMAMUX1_Channel3)
183 #define LL_DMAMUX_CHANNEL_3 0x00000003U /*!< DMAMUX Channel 3 connected to DMA1 Channel 4 */
184 #endif /* DMAMUX1_Channel3 */
185 #if defined(DMAMUX1_Channel4)
186 #define LL_DMAMUX_CHANNEL_4 0x00000004U /*!< DMAMUX Channel 4 connected to DMA1 Channel 5 */
187 #endif /* DMAMUX1_Channel4 */
188 /**
189 * @}
190 */
191
192 /** @defgroup DMAMUX_LL_EC_SYNC_NO Synchronization Signal Polarity
193 * @{
194 */
195 #define LL_DMAMUX_SYNC_NO_EVENT 0x00000000U /*!< All requests are blocked */
196 #define LL_DMAMUX_SYNC_POL_RISING DMAMUX_CxCR_SPOL_0 /*!< Synchronization on event
197 on rising edge */
198 #define LL_DMAMUX_SYNC_POL_FALLING DMAMUX_CxCR_SPOL_1 /*!< Synchronization on event
199 on falling edge */
200 #define LL_DMAMUX_SYNC_POL_RISING_FALLING (DMAMUX_CxCR_SPOL_0 | DMAMUX_CxCR_SPOL_1) /*!< Synchronization on event on
201 rising and falling edge */
202 /**
203 * @}
204 */
205
206 /** @defgroup DMAMUX_LL_EC_SYNC_EVT Synchronization Signal Event
207 * @{
208 */
209 #define LL_DMAMUX_SYNC_EXTI_LINE0 0x00000000U /*!< Synchronization signal from EXTI Line0 */
210 #define LL_DMAMUX_SYNC_EXTI_LINE1 DMAMUX_CxCR_SYNC_ID_0 /*!< Synchronization signal from EXTI Line1 */
211 #define LL_DMAMUX_SYNC_EXTI_LINE2 DMAMUX_CxCR_SYNC_ID_1 /*!< Synchronization signal from EXTI Line2 */
212 #define LL_DMAMUX_SYNC_EXTI_LINE3 (DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line3 */
213 #define LL_DMAMUX_SYNC_EXTI_LINE4 DMAMUX_CxCR_SYNC_ID_2 /*!< Synchronization signal from EXTI Line4 */
214 #define LL_DMAMUX_SYNC_EXTI_LINE5 (DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line5 */
215 #define LL_DMAMUX_SYNC_EXTI_LINE6 (DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1) /*!< Synchronization signal from EXTI Line6 */
216 #define LL_DMAMUX_SYNC_EXTI_LINE7 (DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line7 */
217 #define LL_DMAMUX_SYNC_EXTI_LINE8 DMAMUX_CxCR_SYNC_ID_3 /*!< Synchronization signal from EXTI Line8 */
218 #define LL_DMAMUX_SYNC_EXTI_LINE9 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line9 */
219 #define LL_DMAMUX_SYNC_EXTI_LINE10 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_1) /*!< Synchronization signal from EXTI Line10 */
220 #define LL_DMAMUX_SYNC_EXTI_LINE11 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line11 */
221 #define LL_DMAMUX_SYNC_EXTI_LINE12 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_2) /*!< Synchronization signal from EXTI Line12 */
222 #define LL_DMAMUX_SYNC_EXTI_LINE13 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line1 3 */
223 #define LL_DMAMUX_SYNC_EXTI_LINE14 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1) /*!< Synchronization signal from EXTI Line1 4 */
224 #define LL_DMAMUX_SYNC_EXTI_LINE15 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line1 5 */
225 #define LL_DMAMUX_SYNC_DMAMUX_CH0 DMAMUX_CxCR_SYNC_ID_4 /*!< Synchronization signal from DMAMUX channel0 Event */
226 #define LL_DMAMUX_SYNC_DMAMUX_CH1 (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from DMAMUX channel1 Event */
227 #define LL_DMAMUX_SYNC_DMAMUX_CH2 (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_1) /*!< Synchronization signal from DMAMUX channel2 Event */
228 #define LL_DMAMUX_SYNC_DMAMUX_CH3 (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from DMAMUX channel3 Event */
229 #define LL_DMAMUX_SYNC_TIM14_OC (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from TIM14 OC */
230 /**
231 * @}
232 */
233
234 /** @defgroup DMAMUX_LL_EC_REQUEST_GENERATOR Request Generator Channel
235 * @{
236 */
237 #define LL_DMAMUX_REQ_GEN_0 0x00000000U
238 #define LL_DMAMUX_REQ_GEN_1 0x00000001U
239 #define LL_DMAMUX_REQ_GEN_2 0x00000002U
240 #define LL_DMAMUX_REQ_GEN_3 0x00000003U
241 /**
242 * @}
243 */
244
245 /** @defgroup DMAMUX_LL_EC_REQUEST_GEN_POLARITY External Request Signal Generation Polarity
246 * @{
247 */
248 #define LL_DMAMUX_REQ_GEN_NO_EVENT 0x00000000U /*!< No external DMA request
249 generation */
250 #define LL_DMAMUX_REQ_GEN_POL_RISING DMAMUX_RGxCR_GPOL_0 /*!< External DMA request
251 generation on event on rising
252 edge */
253 #define LL_DMAMUX_REQ_GEN_POL_FALLING DMAMUX_RGxCR_GPOL_1 /*!< External DMA request
254 generation on event on falling
255 edge */
256 #define LL_DMAMUX_REQ_GEN_POL_RISING_FALLING (DMAMUX_RGxCR_GPOL_0 | DMAMUX_RGxCR_GPOL_1) /*!< External DMA request
257 generation on rising and
258 falling edge */
259 /**
260 * @}
261 */
262
263 /** @defgroup DMAMUX_LL_EC_REQUEST_GEN External Request Signal Generation
264 * @{
265 */
266 #define LL_DMAMUX_REQ_GEN_EXTI_LINE0 0x00000000U /*!< Request signal generation from EXTI Line0 */
267 #define LL_DMAMUX_REQ_GEN_EXTI_LINE1 DMAMUX_RGxCR_SIG_ID_0 /*!< Request signal generation from EXTI Line1 */
268 #define LL_DMAMUX_REQ_GEN_EXTI_LINE2 DMAMUX_RGxCR_SIG_ID_1 /*!< Request signal generation from EXTI Line2 */
269 #define LL_DMAMUX_REQ_GEN_EXTI_LINE3 (DMAMUX_RGxCR_SIG_ID_1 |DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line3 */
270 #define LL_DMAMUX_REQ_GEN_EXTI_LINE4 DMAMUX_RGxCR_SIG_ID_2 /*!< Request signal generation from EXTI Line4 */
271 #define LL_DMAMUX_REQ_GEN_EXTI_LINE5 (DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line5 */
272 #define LL_DMAMUX_REQ_GEN_EXTI_LINE6 (DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from EXTI Line6 */
273 #define LL_DMAMUX_REQ_GEN_EXTI_LINE7 (DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line7 */
274 #define LL_DMAMUX_REQ_GEN_EXTI_LINE8 DMAMUX_RGxCR_SIG_ID_3 /*!< Request signal generation from EXTI Line8 */
275 #define LL_DMAMUX_REQ_GEN_EXTI_LINE9 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line9 */
276 #define LL_DMAMUX_REQ_GEN_EXTI_LINE10 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from EXTI Line10 */
277 #define LL_DMAMUX_REQ_GEN_EXTI_LINE11 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_1 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line11 */
278 #define LL_DMAMUX_REQ_GEN_EXTI_LINE12 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_2) /*!< Request signal generation from EXTI Line12 */
279 #define LL_DMAMUX_REQ_GEN_EXTI_LINE13 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line13 */
280 #define LL_DMAMUX_REQ_GEN_EXTI_LINE14 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from EXTI Line14 */
281 #define LL_DMAMUX_REQ_GEN_EXTI_LINE15 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line15 */
282 #define LL_DMAMUX_REQ_GEN_DMAMUX_CH0 DMAMUX_RGxCR_SIG_ID_4 /*!< Request signal generation from DMAMUX channel0 Event */
283 #define LL_DMAMUX_REQ_GEN_DMAMUX_CH1 (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from DMAMUX channel1 Event */
284 #define LL_DMAMUX_REQ_GEN_DMAMUX_CH2 (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from DMAMUX channel2 Event */
285 #define LL_DMAMUX_REQ_GEN_DMAMUX_CH3 (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_1 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from DMAMUX channel3 Event */
286 #define LL_DMAMUX_REQ_GEN_TIM14_OC (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from TIM14 OC */
287 /**
288 * @}
289 */
290
291 /**
292 * @}
293 */
294
295 /* Exported macro ------------------------------------------------------------*/
296 /** @defgroup DMAMUX_LL_Exported_Macros DMAMUX Exported Macros
297 * @{
298 */
299
300 /** @defgroup DMAMUX_LL_EM_WRITE_READ Common Write and read registers macros
301 * @{
302 */
303 /**
304 * @brief Write a value in DMAMUX register
305 * @param __INSTANCE__ DMAMUX Instance
306 * @param __REG__ Register to be written
307 * @param __VALUE__ Value to be written in the register
308 * @retval None
309 */
310 #define LL_DMAMUX_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
311
312 /**
313 * @brief Read a value in DMAMUX register
314 * @param __INSTANCE__ DMAMUX Instance
315 * @param __REG__ Register to be read
316 * @retval Register value
317 */
318 #define LL_DMAMUX_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
319 /**
320 * @}
321 */
322
323 /**
324 * @}
325 */
326
327 /* Exported functions --------------------------------------------------------*/
328 /** @defgroup DMAMUX_LL_Exported_Functions DMAMUX Exported Functions
329 * @{
330 */
331
332 /** @defgroup DMAMUX_LL_EF_Configuration Configuration
333 * @{
334 */
335 /**
336 * @brief Set DMAMUX request ID for DMAMUX Channel x.
337 * @note DMAMUX channel 0 to 4 are mapped to DMA1 channel 1 to 5.
338 * @rmtoll CxCR DMAREQ_ID LL_DMAMUX_SetRequestID
339 * @param DMAMUXx DMAMUXx Instance
340 * @param Channel This parameter can be one of the following values:
341 * @arg @ref LL_DMAMUX_CHANNEL_0
342 * @arg @ref LL_DMAMUX_CHANNEL_1
343 * @arg @ref LL_DMAMUX_CHANNEL_2
344 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
345 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
346 * @param Request This parameter can be one of the following values:
347 * @arg @ref LL_DMAMUX_REQ_MEM2MEM
348 * @arg @ref LL_DMAMUX_REQ_GENERATOR0
349 * @arg @ref LL_DMAMUX_REQ_GENERATOR1
350 * @arg @ref LL_DMAMUX_REQ_GENERATOR2
351 * @arg @ref LL_DMAMUX_REQ_GENERATOR3
352 * @arg @ref LL_DMAMUX_REQ_ADC1
353 * @arg @ref LL_DMAMUX_REQ_I2C1_RX
354 * @arg @ref LL_DMAMUX_REQ_I2C1_TX
355 * @arg @ref LL_DMAMUX_REQ_I2C2_RX (*)
356 * @arg @ref LL_DMAMUX_REQ_I2C2_TX (*)
357 * @arg @ref LL_DMAMUX_REQ_SPI1_RX
358 * @arg @ref LL_DMAMUX_REQ_SPI1_TX
359 * @arg @ref LL_DMAMUX_REQ_SPI2_RX (*)
360 * @arg @ref LL_DMAMUX_REQ_SPI2_TX (*)
361 * @arg @ref LL_DMAMUX_REQ_TIM1_CH1
362 * @arg @ref LL_DMAMUX_REQ_TIM1_CH2
363 * @arg @ref LL_DMAMUX_REQ_TIM1_CH3
364 * @arg @ref LL_DMAMUX_REQ_TIM1_CH4
365 * @arg @ref LL_DMAMUX_REQ_TIM1_TRIG_COM
366 * @arg @ref LL_DMAMUX_REQ_TIM1_UP
367 * @arg @ref LL_DMAMUX_REQ_TIM2_CH1 (*)
368 * @arg @ref LL_DMAMUX_REQ_TIM2_CH2 (*)
369 * @arg @ref LL_DMAMUX_REQ_TIM2_CH3 (*)
370 * @arg @ref LL_DMAMUX_REQ_TIM2_CH4 (*)
371 * @arg @ref LL_DMAMUX_REQ_TIM2_TRIG_COM (*)
372 * @arg @ref LL_DMAMUX_REQ_TIM2_UP (*)
373 * @arg @ref LL_DMAMUX_REQ_TIM3_CH1
374 * @arg @ref LL_DMAMUX_REQ_TIM3_CH2
375 * @arg @ref LL_DMAMUX_REQ_TIM3_CH3
376 * @arg @ref LL_DMAMUX_REQ_TIM3_CH4
377 * @arg @ref LL_DMAMUX_REQ_TIM3_TRIG
378 * @arg @ref LL_DMAMUX_REQ_TIM3_UP
379 * @arg @ref LL_DMAMUX_REQ_TIM16_CH1
380 * @arg @ref LL_DMAMUX_REQ_TIM16_TRIG_COM
381 * @arg @ref LL_DMAMUX_REQ_TIM16_UP
382 * @arg @ref LL_DMAMUX_REQ_TIM17_CH1
383 * @arg @ref LL_DMAMUX_REQ_TIM17_TRIG_COM
384 * @arg @ref LL_DMAMUX_REQ_TIM17_UP
385 * @arg @ref LL_DMAMUX_REQ_USART1_RX
386 * @arg @ref LL_DMAMUX_REQ_USART1_TX
387 * @arg @ref LL_DMAMUX_REQ_USART2_RX
388 * @arg @ref LL_DMAMUX_REQ_USART2_TX
389 * @note (*) Availability depends on devices
390 * @retval None
391 */
LL_DMAMUX_SetRequestID(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel,uint32_t Request)392 __STATIC_INLINE void LL_DMAMUX_SetRequestID(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t Request)
393 {
394 (void)(DMAMUXx);
395 MODIFY_REG((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_DMAREQ_ID, Request);
396 }
397
398 /**
399 * @brief Get DMAMUX request ID for DMAMUX Channel x.
400 * @note DMAMUX channel 0 to 4 are mapped to DMA1 channel 1 to 5.
401 * @rmtoll CxCR DMAREQ_ID LL_DMAMUX_GetRequestID
402 * @param DMAMUXx DMAMUXx Instance
403 * @param Channel This parameter can be one of the following values:
404 * @arg @ref LL_DMAMUX_CHANNEL_0
405 * @arg @ref LL_DMAMUX_CHANNEL_1
406 * @arg @ref LL_DMAMUX_CHANNEL_2
407 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
408 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
409 * @retval Returned value can be one of the following values:
410 * @arg @ref LL_DMAMUX_REQ_MEM2MEM
411 * @arg @ref LL_DMAMUX_REQ_GENERATOR0
412 * @arg @ref LL_DMAMUX_REQ_GENERATOR1
413 * @arg @ref LL_DMAMUX_REQ_GENERATOR2
414 * @arg @ref LL_DMAMUX_REQ_GENERATOR3
415 * @arg @ref LL_DMAMUX_REQ_ADC1
416 * @arg @ref LL_DMAMUX_REQ_I2C1_RX
417 * @arg @ref LL_DMAMUX_REQ_I2C1_TX
418 * @arg @ref LL_DMAMUX_REQ_I2C2_RX (*)
419 * @arg @ref LL_DMAMUX_REQ_I2C2_TX (*)
420 * @arg @ref LL_DMAMUX_REQ_SPI1_RX
421 * @arg @ref LL_DMAMUX_REQ_SPI1_TX
422 * @arg @ref LL_DMAMUX_REQ_SPI2_RX (*)
423 * @arg @ref LL_DMAMUX_REQ_SPI2_TX (*)
424 * @arg @ref LL_DMAMUX_REQ_TIM1_CH1
425 * @arg @ref LL_DMAMUX_REQ_TIM1_CH2
426 * @arg @ref LL_DMAMUX_REQ_TIM1_CH3
427 * @arg @ref LL_DMAMUX_REQ_TIM1_CH4
428 * @arg @ref LL_DMAMUX_REQ_TIM1_TRIG_COM
429 * @arg @ref LL_DMAMUX_REQ_TIM1_UP
430 * @arg @ref LL_DMAMUX_REQ_TIM2_CH1 (*)
431 * @arg @ref LL_DMAMUX_REQ_TIM2_CH2 (*)
432 * @arg @ref LL_DMAMUX_REQ_TIM2_CH3 (*)
433 * @arg @ref LL_DMAMUX_REQ_TIM2_CH4 (*)
434 * @arg @ref LL_DMAMUX_REQ_TIM2_TRIG_COM (*)
435 * @arg @ref LL_DMAMUX_REQ_TIM2_UP (*)
436 * @arg @ref LL_DMAMUX_REQ_TIM3_CH1
437 * @arg @ref LL_DMAMUX_REQ_TIM3_CH2
438 * @arg @ref LL_DMAMUX_REQ_TIM3_CH3
439 * @arg @ref LL_DMAMUX_REQ_TIM3_CH4
440 * @arg @ref LL_DMAMUX_REQ_TIM3_TRIG
441 * @arg @ref LL_DMAMUX_REQ_TIM3_UP
442 * @arg @ref LL_DMAMUX_REQ_TIM16_CH1
443 * @arg @ref LL_DMAMUX_REQ_TIM16_TRIG_COM
444 * @arg @ref LL_DMAMUX_REQ_TIM16_UP
445 * @arg @ref LL_DMAMUX_REQ_TIM17_CH1
446 * @arg @ref LL_DMAMUX_REQ_TIM17_TRIG_COM
447 * @arg @ref LL_DMAMUX_REQ_TIM17_UP
448 * @arg @ref LL_DMAMUX_REQ_USART1_RX
449 * @arg @ref LL_DMAMUX_REQ_USART1_TX
450 * @arg @ref LL_DMAMUX_REQ_USART2_RX
451 * @arg @ref LL_DMAMUX_REQ_USART2_TX
452 * @note (*) Availability depends on devices
453 */
LL_DMAMUX_GetRequestID(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel)454 __STATIC_INLINE uint32_t LL_DMAMUX_GetRequestID(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel)
455 {
456 (void)(DMAMUXx);
457 return (uint32_t)(READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_DMAREQ_ID));
458 }
459
460 /**
461 * @brief Set the number of DMA request that will be autorized after a synchronization event and/or the number of DMA
462 request needed to generate an event.
463 * @rmtoll CxCR NBREQ LL_DMAMUX_SetSyncRequestNb
464 * @param DMAMUXx DMAMUXx Instance
465 * @param Channel This parameter can be one of the following values:
466 * @arg @ref LL_DMAMUX_CHANNEL_0
467 * @arg @ref LL_DMAMUX_CHANNEL_1
468 * @arg @ref LL_DMAMUX_CHANNEL_2
469 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
470 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
471 * @note (*) Availability depends on devices
472 * @param RequestNb This parameter must be a value between Min_Data = 1 and Max_Data = 32.
473 * @retval None
474 */
LL_DMAMUX_SetSyncRequestNb(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel,uint32_t RequestNb)475 __STATIC_INLINE void LL_DMAMUX_SetSyncRequestNb(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel,
476 uint32_t RequestNb)
477 {
478 (void)(DMAMUXx);
479 MODIFY_REG((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_NBREQ, ((RequestNb - 1U) << DMAMUX_CxCR_NBREQ_Pos));
480 }
481
482 /**
483 * @brief Get the number of DMA request that will be autorized after a synchronization event and/or the number of DMA
484 request needed to generate an event.
485 * @rmtoll CxCR NBREQ LL_DMAMUX_GetSyncRequestNb
486 * @param DMAMUXx DMAMUXx Instance
487 * @param Channel This parameter can be one of the following values:
488 * @arg @ref LL_DMAMUX_CHANNEL_0
489 * @arg @ref LL_DMAMUX_CHANNEL_1
490 * @arg @ref LL_DMAMUX_CHANNEL_2
491 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
492 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
493 * @note (*) Availability depends on devices
494 * @retval Between Min_Data = 1 and Max_Data = 32
495 */
LL_DMAMUX_GetSyncRequestNb(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel)496 __STATIC_INLINE uint32_t LL_DMAMUX_GetSyncRequestNb(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel)
497 {
498 (void)(DMAMUXx);
499 return (uint32_t)(((READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_NBREQ)) >> DMAMUX_CxCR_NBREQ_Pos) + 1U);
500 }
501
502 /**
503 * @brief Set the polarity of the signal on which the DMA request is synchronized.
504 * @rmtoll CxCR SPOL LL_DMAMUX_SetSyncPolarity
505 * @param DMAMUXx DMAMUXx Instance
506 * @param Channel This parameter can be one of the following values:
507 * @arg @ref LL_DMAMUX_CHANNEL_0
508 * @arg @ref LL_DMAMUX_CHANNEL_1
509 * @arg @ref LL_DMAMUX_CHANNEL_2
510 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
511 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
512 * @note (*) Availability depends on devices
513 * @param Polarity This parameter can be one of the following values:
514 * @arg @ref LL_DMAMUX_SYNC_NO_EVENT
515 * @arg @ref LL_DMAMUX_SYNC_POL_RISING
516 * @arg @ref LL_DMAMUX_SYNC_POL_FALLING
517 * @arg @ref LL_DMAMUX_SYNC_POL_RISING_FALLING
518 * @retval None
519 */
LL_DMAMUX_SetSyncPolarity(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel,uint32_t Polarity)520 __STATIC_INLINE void LL_DMAMUX_SetSyncPolarity(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel,
521 uint32_t Polarity)
522 {
523 (void)(DMAMUXx);
524 MODIFY_REG((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SPOL, Polarity);
525 }
526
527 /**
528 * @brief Get the polarity of the signal on which the DMA request is synchronized.
529 * @rmtoll CxCR SPOL LL_DMAMUX_GetSyncPolarity
530 * @param DMAMUXx DMAMUXx Instance
531 * @param Channel This parameter can be one of the following values:
532 * @arg @ref LL_DMAMUX_CHANNEL_0
533 * @arg @ref LL_DMAMUX_CHANNEL_1
534 * @arg @ref LL_DMAMUX_CHANNEL_2
535 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
536 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
537 * @note (*) Availability depends on devices
538 * @retval Returned value can be one of the following values:
539 * @arg @ref LL_DMAMUX_SYNC_NO_EVENT
540 * @arg @ref LL_DMAMUX_SYNC_POL_RISING
541 * @arg @ref LL_DMAMUX_SYNC_POL_FALLING
542 * @arg @ref LL_DMAMUX_SYNC_POL_RISING_FALLING
543 */
LL_DMAMUX_GetSyncPolarity(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel)544 __STATIC_INLINE uint32_t LL_DMAMUX_GetSyncPolarity(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel)
545 {
546 (void)(DMAMUXx);
547 return (uint32_t)(READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SPOL));
548 }
549
550 /**
551 * @brief Enable the Event Generation on DMAMUX channel x.
552 * @rmtoll CxCR EGE LL_DMAMUX_EnableEventGeneration
553 * @param DMAMUXx DMAMUXx Instance
554 * @param Channel This parameter can be one of the following values:
555 * @arg @ref LL_DMAMUX_CHANNEL_0
556 * @arg @ref LL_DMAMUX_CHANNEL_1
557 * @arg @ref LL_DMAMUX_CHANNEL_2
558 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
559 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
560 * @note (*) Availability depends on devices
561 * @retval None
562 */
LL_DMAMUX_EnableEventGeneration(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel)563 __STATIC_INLINE void LL_DMAMUX_EnableEventGeneration(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel)
564 {
565 (void)(DMAMUXx);
566 SET_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_EGE);
567 }
568
569 /**
570 * @brief Disable the Event Generation on DMAMUX channel x.
571 * @rmtoll CxCR EGE LL_DMAMUX_DisableEventGeneration
572 * @param DMAMUXx DMAMUXx Instance
573 * @param Channel This parameter can be one of the following values:
574 * @arg @ref LL_DMAMUX_CHANNEL_0
575 * @arg @ref LL_DMAMUX_CHANNEL_1
576 * @arg @ref LL_DMAMUX_CHANNEL_2
577 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
578 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
579 * @note (*) Availability depends on devices
580 * @retval None
581 */
LL_DMAMUX_DisableEventGeneration(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel)582 __STATIC_INLINE void LL_DMAMUX_DisableEventGeneration(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel)
583 {
584 (void)(DMAMUXx);
585 CLEAR_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_EGE);
586 }
587
588 /**
589 * @brief Check if the Event Generation on DMAMUX channel x is enabled or disabled.
590 * @rmtoll CxCR EGE LL_DMAMUX_IsEnabledEventGeneration
591 * @param DMAMUXx DMAMUXx Instance
592 * @param Channel This parameter can be one of the following values:
593 * @arg @ref LL_DMAMUX_CHANNEL_0
594 * @arg @ref LL_DMAMUX_CHANNEL_1
595 * @arg @ref LL_DMAMUX_CHANNEL_2
596 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
597 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
598 * @note (*) Availability depends on devices
599 * @retval State of bit (1 or 0).
600 */
LL_DMAMUX_IsEnabledEventGeneration(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel)601 __STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledEventGeneration(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel)
602 {
603 (void)(DMAMUXx);
604 return ((READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_EGE) == (DMAMUX_CxCR_EGE)) ? 1UL : 0UL);
605 }
606
607 /**
608 * @brief Enable the synchronization mode.
609 * @rmtoll CxCR SE LL_DMAMUX_EnableSync
610 * @param DMAMUXx DMAMUXx Instance
611 * @param Channel This parameter can be one of the following values:
612 * @arg @ref LL_DMAMUX_CHANNEL_0
613 * @arg @ref LL_DMAMUX_CHANNEL_1
614 * @arg @ref LL_DMAMUX_CHANNEL_2
615 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
616 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
617 * @note (*) Availability depends on devices
618 * @retval None
619 */
LL_DMAMUX_EnableSync(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel)620 __STATIC_INLINE void LL_DMAMUX_EnableSync(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel)
621 {
622 (void)(DMAMUXx);
623 SET_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SE);
624 }
625
626 /**
627 * @brief Disable the synchronization mode.
628 * @rmtoll CxCR SE LL_DMAMUX_DisableSync
629 * @param DMAMUXx DMAMUXx Instance
630 * @param Channel This parameter can be one of the following values:
631 * @arg @ref LL_DMAMUX_CHANNEL_0
632 * @arg @ref LL_DMAMUX_CHANNEL_1
633 * @arg @ref LL_DMAMUX_CHANNEL_2
634 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
635 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
636 * @note (*) Availability depends on devices
637 * @retval None
638 */
LL_DMAMUX_DisableSync(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel)639 __STATIC_INLINE void LL_DMAMUX_DisableSync(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel)
640 {
641 (void)(DMAMUXx);
642 CLEAR_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SE);
643 }
644
645 /**
646 * @brief Check if the synchronization mode is enabled or disabled.
647 * @rmtoll CxCR SE LL_DMAMUX_IsEnabledSync
648 * @param DMAMUXx DMAMUXx Instance
649 * @param Channel This parameter can be one of the following values:
650 * @arg @ref LL_DMAMUX_CHANNEL_0
651 * @arg @ref LL_DMAMUX_CHANNEL_1
652 * @arg @ref LL_DMAMUX_CHANNEL_2
653 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
654 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
655 * @note (*) Availability depends on devices
656 * @retval State of bit (1 or 0).
657 */
LL_DMAMUX_IsEnabledSync(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel)658 __STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledSync(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel)
659 {
660 (void)(DMAMUXx);
661 return ((READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SE) == (DMAMUX_CxCR_SE)) ? 1UL : 0UL);
662 }
663
664 /**
665 * @brief Set DMAMUX synchronization ID on DMAMUX Channel x.
666 * @rmtoll CxCR SYNC_ID LL_DMAMUX_SetSyncID
667 * @param DMAMUXx DMAMUXx Instance
668 * @param Channel This parameter can be one of the following values:
669 * @arg @ref LL_DMAMUX_CHANNEL_0
670 * @arg @ref LL_DMAMUX_CHANNEL_1
671 * @arg @ref LL_DMAMUX_CHANNEL_2
672 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
673 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
674 * @param SyncID This parameter can be one of the following values:
675 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE0
676 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE1
677 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE2
678 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE3
679 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE4
680 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE5
681 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE6
682 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE7
683 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE8
684 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE9
685 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE10
686 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE11
687 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE12
688 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE13
689 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE14
690 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE15
691 * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH0
692 * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH1
693 * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH2
694 * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH3 (*)
695 * @arg @ref LL_DMAMUX_SYNC_TIM14_OC
696 * @note (*) Availability depends on devices
697 * @retval None
698 */
LL_DMAMUX_SetSyncID(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel,uint32_t SyncID)699 __STATIC_INLINE void LL_DMAMUX_SetSyncID(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t SyncID)
700 {
701 (void)(DMAMUXx);
702 MODIFY_REG((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SYNC_ID, SyncID);
703 }
704
705 /**
706 * @brief Get DMAMUX synchronization ID on DMAMUX Channel x.
707 * @rmtoll CxCR SYNC_ID LL_DMAMUX_GetSyncID
708 * @param DMAMUXx DMAMUXx Instance
709 * @param Channel This parameter can be one of the following values:
710 * @arg @ref LL_DMAMUX_CHANNEL_0
711 * @arg @ref LL_DMAMUX_CHANNEL_1
712 * @arg @ref LL_DMAMUX_CHANNEL_2
713 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
714 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
715 * @retval Returned value can be one of the following values:
716 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE0
717 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE1
718 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE2
719 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE3
720 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE4
721 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE5
722 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE6
723 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE7
724 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE8
725 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE9
726 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE10
727 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE11
728 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE12
729 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE13
730 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE14
731 * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE15
732 * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH0
733 * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH1
734 * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH2
735 * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH3 (*)
736 * @arg @ref LL_DMAMUX_SYNC_TIM14_OC
737 * @note (*) Availability depends on devices
738 */
LL_DMAMUX_GetSyncID(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel)739 __STATIC_INLINE uint32_t LL_DMAMUX_GetSyncID(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel)
740 {
741 (void)(DMAMUXx);
742 return (uint32_t)(READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SYNC_ID));
743 }
744
745 /**
746 * @brief Enable the Request Generator.
747 * @rmtoll RGxCR GE LL_DMAMUX_EnableRequestGen
748 * @param DMAMUXx DMAMUXx Instance
749 * @param RequestGenChannel This parameter can be one of the following values:
750 * @arg @ref LL_DMAMUX_REQ_GEN_0
751 * @arg @ref LL_DMAMUX_REQ_GEN_1
752 * @arg @ref LL_DMAMUX_REQ_GEN_2
753 * @arg @ref LL_DMAMUX_REQ_GEN_3
754 * @retval None
755 */
LL_DMAMUX_EnableRequestGen(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t RequestGenChannel)756 __STATIC_INLINE void LL_DMAMUX_EnableRequestGen(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel)
757 {
758 (void)(DMAMUXx);
759 SET_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE *
760 (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GE);
761 }
762
763 /**
764 * @brief Disable the Request Generator.
765 * @rmtoll RGxCR GE LL_DMAMUX_DisableRequestGen
766 * @param DMAMUXx DMAMUXx Instance
767 * @param RequestGenChannel This parameter can be one of the following values:
768 * @arg @ref LL_DMAMUX_REQ_GEN_0
769 * @arg @ref LL_DMAMUX_REQ_GEN_1
770 * @arg @ref LL_DMAMUX_REQ_GEN_2
771 * @arg @ref LL_DMAMUX_REQ_GEN_3
772 * @retval None
773 */
LL_DMAMUX_DisableRequestGen(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t RequestGenChannel)774 __STATIC_INLINE void LL_DMAMUX_DisableRequestGen(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel)
775 {
776 (void)(DMAMUXx);
777 CLEAR_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE *
778 (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GE);
779 }
780
781 /**
782 * @brief Check if the Request Generator is enabled or disabled.
783 * @rmtoll RGxCR GE LL_DMAMUX_IsEnabledRequestGen
784 * @param DMAMUXx DMAMUXx Instance
785 * @param RequestGenChannel This parameter can be one of the following values:
786 * @arg @ref LL_DMAMUX_REQ_GEN_0
787 * @arg @ref LL_DMAMUX_REQ_GEN_1
788 * @arg @ref LL_DMAMUX_REQ_GEN_2
789 * @arg @ref LL_DMAMUX_REQ_GEN_3
790 * @retval State of bit (1 or 0).
791 */
LL_DMAMUX_IsEnabledRequestGen(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t RequestGenChannel)792 __STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledRequestGen(const DMAMUX_Channel_TypeDef *DMAMUXx,
793 uint32_t RequestGenChannel)
794 {
795 (void)(DMAMUXx);
796 return ((READ_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE *
797 (RequestGenChannel)))))->RGCR,
798 DMAMUX_RGxCR_GE) == (DMAMUX_RGxCR_GE)) ? 1UL : 0UL);
799 }
800
801 /**
802 * @brief Set the polarity of the signal on which the DMA request is generated.
803 * @rmtoll RGxCR GPOL LL_DMAMUX_SetRequestGenPolarity
804 * @param DMAMUXx DMAMUXx Instance
805 * @param RequestGenChannel This parameter can be one of the following values:
806 * @arg @ref LL_DMAMUX_REQ_GEN_0
807 * @arg @ref LL_DMAMUX_REQ_GEN_1
808 * @arg @ref LL_DMAMUX_REQ_GEN_2
809 * @arg @ref LL_DMAMUX_REQ_GEN_3
810 * @param Polarity This parameter can be one of the following values:
811 * @arg @ref LL_DMAMUX_REQ_GEN_NO_EVENT
812 * @arg @ref LL_DMAMUX_REQ_GEN_POL_RISING
813 * @arg @ref LL_DMAMUX_REQ_GEN_POL_FALLING
814 * @arg @ref LL_DMAMUX_REQ_GEN_POL_RISING_FALLING
815 * @retval None
816 */
LL_DMAMUX_SetRequestGenPolarity(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t RequestGenChannel,uint32_t Polarity)817 __STATIC_INLINE void LL_DMAMUX_SetRequestGenPolarity(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel,
818 uint32_t Polarity)
819 {
820 (void)(DMAMUXx);
821 MODIFY_REG(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE *
822 (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GPOL, Polarity);
823 }
824
825 /**
826 * @brief Get the polarity of the signal on which the DMA request is generated.
827 * @rmtoll RGxCR GPOL LL_DMAMUX_GetRequestGenPolarity
828 * @param DMAMUXx DMAMUXx Instance
829 * @param RequestGenChannel This parameter can be one of the following values:
830 * @arg @ref LL_DMAMUX_REQ_GEN_0
831 * @arg @ref LL_DMAMUX_REQ_GEN_1
832 * @arg @ref LL_DMAMUX_REQ_GEN_2
833 * @arg @ref LL_DMAMUX_REQ_GEN_3
834 * @retval Returned value can be one of the following values:
835 * @arg @ref LL_DMAMUX_REQ_GEN_NO_EVENT
836 * @arg @ref LL_DMAMUX_REQ_GEN_POL_RISING
837 * @arg @ref LL_DMAMUX_REQ_GEN_POL_FALLING
838 * @arg @ref LL_DMAMUX_REQ_GEN_POL_RISING_FALLING
839 */
LL_DMAMUX_GetRequestGenPolarity(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t RequestGenChannel)840 __STATIC_INLINE uint32_t LL_DMAMUX_GetRequestGenPolarity(const DMAMUX_Channel_TypeDef *DMAMUXx,
841 uint32_t RequestGenChannel)
842 {
843 (void)(DMAMUXx);
844 return (uint32_t)(READ_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 +
845 (DMAMUX_RGCR_SIZE * \
846 (RequestGenChannel)))))->RGCR,
847 DMAMUX_RGxCR_GPOL));
848 }
849
850 /**
851 * @brief Set the number of DMA request that will be autorized after a generation event.
852 * @note This field can only be written when Generator is disabled.
853 * @rmtoll RGxCR GNBREQ LL_DMAMUX_SetGenRequestNb
854 * @param DMAMUXx DMAMUXx Instance
855 * @param RequestGenChannel This parameter can be one of the following values:
856 * @arg @ref LL_DMAMUX_REQ_GEN_0
857 * @arg @ref LL_DMAMUX_REQ_GEN_1
858 * @arg @ref LL_DMAMUX_REQ_GEN_2
859 * @arg @ref LL_DMAMUX_REQ_GEN_3
860 * @param RequestNb This parameter must be a value between Min_Data = 1 and Max_Data = 32.
861 * @retval None
862 */
LL_DMAMUX_SetGenRequestNb(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t RequestGenChannel,uint32_t RequestNb)863 __STATIC_INLINE void LL_DMAMUX_SetGenRequestNb(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel,
864 uint32_t RequestNb)
865 {
866 (void)(DMAMUXx);
867 MODIFY_REG(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE *
868 (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GNBREQ,
869 (RequestNb - 1U) << DMAMUX_RGxCR_GNBREQ_Pos);
870 }
871
872 /**
873 * @brief Get the number of DMA request that will be autorized after a generation event.
874 * @rmtoll RGxCR GNBREQ LL_DMAMUX_GetGenRequestNb
875 * @param DMAMUXx DMAMUXx Instance
876 * @param RequestGenChannel This parameter can be one of the following values:
877 * @arg @ref LL_DMAMUX_REQ_GEN_0
878 * @arg @ref LL_DMAMUX_REQ_GEN_1
879 * @arg @ref LL_DMAMUX_REQ_GEN_2
880 * @arg @ref LL_DMAMUX_REQ_GEN_3
881 * @retval Between Min_Data = 1 and Max_Data = 32
882 */
LL_DMAMUX_GetGenRequestNb(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t RequestGenChannel)883 __STATIC_INLINE uint32_t LL_DMAMUX_GetGenRequestNb(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel)
884 {
885 (void)(DMAMUXx);
886 return (uint32_t)((READ_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 +
887 (DMAMUX_RGCR_SIZE * \
888 (RequestGenChannel)))))->RGCR,
889 DMAMUX_RGxCR_GNBREQ) >> DMAMUX_RGxCR_GNBREQ_Pos) + 1U);
890 }
891
892 /**
893 * @brief Set DMAMUX external Request Signal ID on DMAMUX Request Generation Trigger Event Channel x.
894 * @rmtoll RGxCR SIG_ID LL_DMAMUX_SetRequestSignalID
895 * @param DMAMUXx DMAMUXx Instance
896 * @param RequestGenChannel This parameter can be one of the following values:
897 * @arg @ref LL_DMAMUX_REQ_GEN_0
898 * @arg @ref LL_DMAMUX_REQ_GEN_1
899 * @arg @ref LL_DMAMUX_REQ_GEN_2
900 * @arg @ref LL_DMAMUX_REQ_GEN_3
901 * @param RequestSignalID This parameter can be one of the following values:
902 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE0
903 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE1
904 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE2
905 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE3
906 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE4
907 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE5
908 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE6
909 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE7
910 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE8
911 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE9
912 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE10
913 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE11
914 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE12
915 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE13
916 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE14
917 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE15
918 * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH0
919 * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH1
920 * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH2
921 * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH3 (*)
922 * @arg @ref LL_DMAMUX_REQ_GEN_TIM14_OC
923 * @note (*) Availability depends on devices
924 * @retval None
925 */
LL_DMAMUX_SetRequestSignalID(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t RequestGenChannel,uint32_t RequestSignalID)926 __STATIC_INLINE void LL_DMAMUX_SetRequestSignalID(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel,
927 uint32_t RequestSignalID)
928 {
929 (void)(DMAMUXx);
930 MODIFY_REG(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE *
931 (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_SIG_ID,
932 RequestSignalID);
933 }
934
935 /**
936 * @brief Get DMAMUX external Request Signal ID set on DMAMUX Channel x.
937 * @rmtoll RGxCR SIG_ID LL_DMAMUX_GetRequestSignalID
938 * @param DMAMUXx DMAMUXx Instance
939 * @param RequestGenChannel This parameter can be one of the following values:
940 * @arg @ref LL_DMAMUX_REQ_GEN_0
941 * @arg @ref LL_DMAMUX_REQ_GEN_1
942 * @arg @ref LL_DMAMUX_REQ_GEN_2
943 * @arg @ref LL_DMAMUX_REQ_GEN_3
944 * @retval Returned value can be one of the following values:
945 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE0
946 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE1
947 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE2
948 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE3
949 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE4
950 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE5
951 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE6
952 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE7
953 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE8
954 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE9
955 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE10
956 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE11
957 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE12
958 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE13
959 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE14
960 * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE15
961 * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH0
962 * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH1
963 * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH2
964 * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH3 (*)
965 * @arg @ref LL_DMAMUX_REQ_GEN_TIM14_OC
966 * @note (*) Availability depends on devices
967 */
LL_DMAMUX_GetRequestSignalID(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t RequestGenChannel)968 __STATIC_INLINE uint32_t LL_DMAMUX_GetRequestSignalID(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel)
969 {
970 (void)(DMAMUXx);
971 return (uint32_t)(READ_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 +
972 (DMAMUX_RGCR_SIZE * \
973 (RequestGenChannel)))))->RGCR,
974 DMAMUX_RGxCR_SIG_ID));
975 }
976
977 /**
978 * @}
979 */
980
981 /** @defgroup DMAMUX_LL_EF_FLAG_Management FLAG_Management
982 * @{
983 */
984
985 /**
986 * @brief Get Synchronization Event Overrun Flag Channel 0.
987 * @rmtoll CSR SOF0 LL_DMAMUX_IsActiveFlag_SO0
988 * @param DMAMUXx DMAMUXx DMAMUXx Instance
989 * @retval State of bit (1 or 0).
990 */
LL_DMAMUX_IsActiveFlag_SO0(const DMAMUX_Channel_TypeDef * DMAMUXx)991 __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO0(const DMAMUX_Channel_TypeDef *DMAMUXx)
992 {
993 (void)(DMAMUXx);
994 return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF0) == (DMAMUX_CSR_SOF0)) ? 1UL : 0UL);
995 }
996
997 /**
998 * @brief Get Synchronization Event Overrun Flag Channel 1.
999 * @rmtoll CSR SOF1 LL_DMAMUX_IsActiveFlag_SO1
1000 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1001 * @retval State of bit (1 or 0).
1002 */
LL_DMAMUX_IsActiveFlag_SO1(const DMAMUX_Channel_TypeDef * DMAMUXx)1003 __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO1(const DMAMUX_Channel_TypeDef *DMAMUXx)
1004 {
1005 (void)(DMAMUXx);
1006 return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF1) == (DMAMUX_CSR_SOF1)) ? 1UL : 0UL);;
1007 }
1008
1009 /**
1010 * @brief Get Synchronization Event Overrun Flag Channel 2.
1011 * @rmtoll CSR SOF2 LL_DMAMUX_IsActiveFlag_SO2
1012 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1013 * @retval State of bit (1 or 0).
1014 */
LL_DMAMUX_IsActiveFlag_SO2(const DMAMUX_Channel_TypeDef * DMAMUXx)1015 __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO2(const DMAMUX_Channel_TypeDef *DMAMUXx)
1016 {
1017 (void)(DMAMUXx);
1018 return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF2) == (DMAMUX_CSR_SOF2)) ? 1UL : 0UL);;
1019 }
1020
1021 #if defined(DMAMUX_CSR_SOF3)
1022 /**
1023 * @brief Get Synchronization Event Overrun Flag Channel 3.
1024 * @rmtoll CSR SOF3 LL_DMAMUX_IsActiveFlag_SO3
1025 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1026 * @retval State of bit (1 or 0).
1027 */
LL_DMAMUX_IsActiveFlag_SO3(const DMAMUX_Channel_TypeDef * DMAMUXx)1028 __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO3(const DMAMUX_Channel_TypeDef *DMAMUXx)
1029 {
1030 (void)(DMAMUXx);
1031 return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF3) == (DMAMUX_CSR_SOF3)) ? 1UL : 0UL);;
1032 }
1033 #endif /* DMAMUX_CSR_SOF3 */
1034
1035 #if defined(DMAMUX_CSR_SOF4)
1036 /**
1037 * @brief Get Synchronization Event Overrun Flag Channel 4.
1038 * @rmtoll CSR SOF4 LL_DMAMUX_IsActiveFlag_SO4
1039 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1040 * @retval State of bit (1 or 0).
1041 */
LL_DMAMUX_IsActiveFlag_SO4(const DMAMUX_Channel_TypeDef * DMAMUXx)1042 __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO4(const DMAMUX_Channel_TypeDef *DMAMUXx)
1043 {
1044 (void)(DMAMUXx);
1045 return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF4) == (DMAMUX_CSR_SOF4)) ? 1UL : 0UL);;
1046 }
1047 #endif /* DMAMUX_CSR_SOF4 */
1048
1049 /**
1050 * @brief Get Request Generator 0 Trigger Event Overrun Flag.
1051 * @rmtoll RGSR OF0 LL_DMAMUX_IsActiveFlag_RGO0
1052 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1053 * @retval State of bit (1 or 0).
1054 */
LL_DMAMUX_IsActiveFlag_RGO0(const DMAMUX_Channel_TypeDef * DMAMUXx)1055 __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO0(const DMAMUX_Channel_TypeDef *DMAMUXx)
1056 {
1057 (void)(DMAMUXx);
1058 return ((READ_BIT(DMAMUX1_RequestGenStatus->RGSR, DMAMUX_RGSR_OF0) == (DMAMUX_RGSR_OF0)) ? 1UL : 0UL);;
1059 }
1060
1061 /**
1062 * @brief Get Request Generator 1 Trigger Event Overrun Flag.
1063 * @rmtoll RGSR OF1 LL_DMAMUX_IsActiveFlag_RGO1
1064 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1065 * @retval State of bit (1 or 0).
1066 */
LL_DMAMUX_IsActiveFlag_RGO1(const DMAMUX_Channel_TypeDef * DMAMUXx)1067 __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO1(const DMAMUX_Channel_TypeDef *DMAMUXx)
1068 {
1069 (void)(DMAMUXx);
1070 return ((READ_BIT(DMAMUX1_RequestGenStatus->RGSR, DMAMUX_RGSR_OF1) == (DMAMUX_RGSR_OF1)) ? 1UL : 0UL);;
1071 }
1072
1073 /**
1074 * @brief Get Request Generator 2 Trigger Event Overrun Flag.
1075 * @rmtoll RGSR OF2 LL_DMAMUX_IsActiveFlag_RGO2
1076 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1077 * @retval State of bit (1 or 0).
1078 */
LL_DMAMUX_IsActiveFlag_RGO2(const DMAMUX_Channel_TypeDef * DMAMUXx)1079 __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO2(const DMAMUX_Channel_TypeDef *DMAMUXx)
1080 {
1081 (void)(DMAMUXx);
1082 return ((READ_BIT(DMAMUX1_RequestGenStatus->RGSR, DMAMUX_RGSR_OF2) == (DMAMUX_RGSR_OF2)) ? 1UL : 0UL);;
1083 }
1084
1085 /**
1086 * @brief Get Request Generator 3 Trigger Event Overrun Flag.
1087 * @rmtoll RGSR OF3 LL_DMAMUX_IsActiveFlag_RGO3
1088 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1089 * @retval State of bit (1 or 0).
1090 */
LL_DMAMUX_IsActiveFlag_RGO3(const DMAMUX_Channel_TypeDef * DMAMUXx)1091 __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO3(const DMAMUX_Channel_TypeDef *DMAMUXx)
1092 {
1093 (void)(DMAMUXx);
1094 return ((READ_BIT(DMAMUX1_RequestGenStatus->RGSR, DMAMUX_RGSR_OF3) == (DMAMUX_RGSR_OF3)) ? 1UL : 0UL);;
1095 }
1096
1097 /**
1098 * @brief Clear Synchronization Event Overrun Flag Channel 0.
1099 * @rmtoll CFR CSOF0 LL_DMAMUX_ClearFlag_SO0
1100 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1101 * @retval None
1102 */
LL_DMAMUX_ClearFlag_SO0(const DMAMUX_Channel_TypeDef * DMAMUXx)1103 __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO0(const DMAMUX_Channel_TypeDef *DMAMUXx)
1104 {
1105 (void)(DMAMUXx);
1106 SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF0);
1107 }
1108
1109 /**
1110 * @brief Clear Synchronization Event Overrun Flag Channel 1.
1111 * @rmtoll CFR CSOF1 LL_DMAMUX_ClearFlag_SO1
1112 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1113 * @retval None
1114 */
LL_DMAMUX_ClearFlag_SO1(const DMAMUX_Channel_TypeDef * DMAMUXx)1115 __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO1(const DMAMUX_Channel_TypeDef *DMAMUXx)
1116 {
1117 (void)(DMAMUXx);
1118 SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF1);
1119 }
1120
1121 /**
1122 * @brief Clear Synchronization Event Overrun Flag Channel 2.
1123 * @rmtoll CFR CSOF2 LL_DMAMUX_ClearFlag_SO2
1124 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1125 * @retval None
1126 */
LL_DMAMUX_ClearFlag_SO2(const DMAMUX_Channel_TypeDef * DMAMUXx)1127 __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO2(const DMAMUX_Channel_TypeDef *DMAMUXx)
1128 {
1129 (void)(DMAMUXx);
1130 SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF2);
1131 }
1132
1133 #if defined(DMAMUX_CFR_CSOF3)
1134 /**
1135 * @brief Clear Synchronization Event Overrun Flag Channel 3.
1136 * @rmtoll CFR CSOF3 LL_DMAMUX_ClearFlag_SO3
1137 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1138 * @retval None
1139 */
LL_DMAMUX_ClearFlag_SO3(const DMAMUX_Channel_TypeDef * DMAMUXx)1140 __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO3(const DMAMUX_Channel_TypeDef *DMAMUXx)
1141 {
1142 (void)(DMAMUXx);
1143 SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF3);
1144 }
1145 #endif /* DMAMUX_CFR_CSOF3 */
1146
1147 #if defined(DMAMUX_CFR_CSOF4)
1148 /**
1149 * @brief Clear Synchronization Event Overrun Flag Channel 4.
1150 * @rmtoll CFR CSOF4 LL_DMAMUX_ClearFlag_SO4
1151 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1152 * @retval None
1153 */
LL_DMAMUX_ClearFlag_SO4(const DMAMUX_Channel_TypeDef * DMAMUXx)1154 __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO4(const DMAMUX_Channel_TypeDef *DMAMUXx)
1155 {
1156 (void)(DMAMUXx);
1157 SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF4);
1158 }
1159 #endif /* DMAMUX_CFR_CSOF4 */
1160
1161 /**
1162 * @brief Clear Request Generator 0 Trigger Event Overrun Flag.
1163 * @rmtoll RGCFR COF0 LL_DMAMUX_ClearFlag_RGO0
1164 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1165 * @retval None
1166 */
LL_DMAMUX_ClearFlag_RGO0(const DMAMUX_Channel_TypeDef * DMAMUXx)1167 __STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO0(const DMAMUX_Channel_TypeDef *DMAMUXx)
1168 {
1169 (void)(DMAMUXx);
1170 SET_BIT(DMAMUX1_RequestGenStatus->RGCFR, DMAMUX_RGCFR_COF0);
1171 }
1172
1173 /**
1174 * @brief Clear Request Generator 1 Trigger Event Overrun Flag.
1175 * @rmtoll RGCFR COF1 LL_DMAMUX_ClearFlag_RGO1
1176 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1177 * @retval None
1178 */
LL_DMAMUX_ClearFlag_RGO1(const DMAMUX_Channel_TypeDef * DMAMUXx)1179 __STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO1(const DMAMUX_Channel_TypeDef *DMAMUXx)
1180 {
1181 (void)(DMAMUXx);
1182 SET_BIT(DMAMUX1_RequestGenStatus->RGCFR, DMAMUX_RGCFR_COF1);
1183 }
1184
1185 /**
1186 * @brief Clear Request Generator 2 Trigger Event Overrun Flag.
1187 * @rmtoll RGCFR COF2 LL_DMAMUX_ClearFlag_RGO2
1188 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1189 * @retval None
1190 */
LL_DMAMUX_ClearFlag_RGO2(const DMAMUX_Channel_TypeDef * DMAMUXx)1191 __STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO2(const DMAMUX_Channel_TypeDef *DMAMUXx)
1192 {
1193 (void)(DMAMUXx);
1194 SET_BIT(DMAMUX1_RequestGenStatus->RGCFR, DMAMUX_RGCFR_COF2);
1195 }
1196
1197 /**
1198 * @brief Clear Request Generator 3 Trigger Event Overrun Flag.
1199 * @rmtoll RGCFR COF3 LL_DMAMUX_ClearFlag_RGO3
1200 * @param DMAMUXx DMAMUXx DMAMUXx Instance
1201 * @retval None
1202 */
LL_DMAMUX_ClearFlag_RGO3(const DMAMUX_Channel_TypeDef * DMAMUXx)1203 __STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO3(const DMAMUX_Channel_TypeDef *DMAMUXx)
1204 {
1205 (void)(DMAMUXx);
1206 SET_BIT(DMAMUX1_RequestGenStatus->RGCFR, DMAMUX_RGCFR_COF3);
1207 }
1208
1209 /**
1210 * @}
1211 */
1212
1213 /** @defgroup DMAMUX_LL_EF_IT_Management IT_Management
1214 * @{
1215 */
1216
1217 /**
1218 * @brief Enable the Synchronization Event Overrun Interrupt on DMAMUX channel x.
1219 * @rmtoll CxCR SOIE LL_DMAMUX_EnableIT_SO
1220 * @param DMAMUXx DMAMUXx Instance
1221 * @param Channel This parameter can be one of the following values:
1222 * @arg @ref LL_DMAMUX_CHANNEL_0
1223 * @arg @ref LL_DMAMUX_CHANNEL_1
1224 * @arg @ref LL_DMAMUX_CHANNEL_2
1225 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
1226 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
1227 * @note (*) Availability depends on devices
1228 * @retval None
1229 */
LL_DMAMUX_EnableIT_SO(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel)1230 __STATIC_INLINE void LL_DMAMUX_EnableIT_SO(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel)
1231 {
1232 (void)(DMAMUXx);
1233 SET_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SOIE);
1234 }
1235
1236 /**
1237 * @brief Disable the Synchronization Event Overrun Interrupt on DMAMUX channel x.
1238 * @rmtoll CxCR SOIE LL_DMAMUX_DisableIT_SO
1239 * @param DMAMUXx DMAMUXx Instance
1240 * @param Channel This parameter can be one of the following values:
1241 * @arg @ref LL_DMAMUX_CHANNEL_0
1242 * @arg @ref LL_DMAMUX_CHANNEL_1
1243 * @arg @ref LL_DMAMUX_CHANNEL_2
1244 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
1245 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
1246 * @note (*) Availability depends on devices
1247 * @retval None
1248 */
LL_DMAMUX_DisableIT_SO(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel)1249 __STATIC_INLINE void LL_DMAMUX_DisableIT_SO(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel)
1250 {
1251 (void)(DMAMUXx);
1252 CLEAR_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SOIE);
1253 }
1254
1255 /**
1256 * @brief Check if the Synchronization Event Overrun Interrupt on DMAMUX channel x is enabled or disabled.
1257 * @rmtoll CxCR SOIE LL_DMAMUX_IsEnabledIT_SO
1258 * @param DMAMUXx DMAMUXx Instance
1259 * @param Channel This parameter can be one of the following values:
1260 * @arg @ref LL_DMAMUX_CHANNEL_0
1261 * @arg @ref LL_DMAMUX_CHANNEL_1
1262 * @arg @ref LL_DMAMUX_CHANNEL_2
1263 * @arg @ref LL_DMAMUX_CHANNEL_3 (*)
1264 * @arg @ref LL_DMAMUX_CHANNEL_4 (*)
1265 * @note (*) Availability depends on devices
1266 * @retval State of bit (1 or 0).
1267 */
LL_DMAMUX_IsEnabledIT_SO(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t Channel)1268 __STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledIT_SO(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel)
1269 {
1270 (void)(DMAMUXx);
1271 return (((READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SOIE)) == (DMAMUX_CxCR_SOIE)) ? 1UL : 0UL);
1272 }
1273
1274 /**
1275 * @brief Enable the Request Generation Trigger Event Overrun Interrupt on DMAMUX channel x.
1276 * @rmtoll RGxCR OIE LL_DMAMUX_EnableIT_RGO
1277 * @param DMAMUXx DMAMUXx Instance
1278 * @param RequestGenChannel This parameter can be one of the following values:
1279 * @arg @ref LL_DMAMUX_REQ_GEN_0
1280 * @arg @ref LL_DMAMUX_REQ_GEN_1
1281 * @arg @ref LL_DMAMUX_REQ_GEN_2
1282 * @arg @ref LL_DMAMUX_REQ_GEN_3
1283 * @retval None
1284 */
LL_DMAMUX_EnableIT_RGO(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t RequestGenChannel)1285 __STATIC_INLINE void LL_DMAMUX_EnableIT_RGO(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel)
1286 {
1287 (void)(DMAMUXx);
1288 SET_BIT((DMAMUX1_RequestGenerator0 + RequestGenChannel)->RGCR, DMAMUX_RGxCR_OIE);
1289 }
1290
1291 /**
1292 * @brief Disable the Request Generation Trigger Event Overrun Interrupt on DMAMUX channel x.
1293 * @rmtoll RGxCR OIE LL_DMAMUX_DisableIT_RGO
1294 * @param DMAMUXx DMAMUXx Instance
1295 * @param RequestGenChannel This parameter can be one of the following values:
1296 * @arg @ref LL_DMAMUX_REQ_GEN_0
1297 * @arg @ref LL_DMAMUX_REQ_GEN_1
1298 * @arg @ref LL_DMAMUX_REQ_GEN_2
1299 * @arg @ref LL_DMAMUX_REQ_GEN_3
1300 * @retval None
1301 */
LL_DMAMUX_DisableIT_RGO(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t RequestGenChannel)1302 __STATIC_INLINE void LL_DMAMUX_DisableIT_RGO(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel)
1303 {
1304 (void)(DMAMUXx);
1305 CLEAR_BIT((DMAMUX1_RequestGenerator0 + RequestGenChannel)->RGCR, DMAMUX_RGxCR_OIE);
1306 }
1307
1308 /**
1309 * @brief Check if the Request Generation Trigger Event Overrun Interrupt on DMAMUX channel x is enabled or disabled.
1310 * @rmtoll RGxCR OIE LL_DMAMUX_IsEnabledIT_RGO
1311 * @param DMAMUXx DMAMUXx Instance
1312 * @param RequestGenChannel This parameter can be one of the following values:
1313 * @arg @ref LL_DMAMUX_REQ_GEN_0
1314 * @arg @ref LL_DMAMUX_REQ_GEN_1
1315 * @arg @ref LL_DMAMUX_REQ_GEN_2
1316 * @arg @ref LL_DMAMUX_REQ_GEN_3
1317 * @retval State of bit (1 or 0).
1318 */
LL_DMAMUX_IsEnabledIT_RGO(const DMAMUX_Channel_TypeDef * DMAMUXx,uint32_t RequestGenChannel)1319 __STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledIT_RGO(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel)
1320 {
1321 (void)(DMAMUXx);
1322 return ((READ_BIT((DMAMUX1_RequestGenerator0 + RequestGenChannel)->RGCR, DMAMUX_RGxCR_OIE) == (DMAMUX_RGxCR_OIE)) ? \
1323 1UL : 0UL);
1324 }
1325
1326 /**
1327 * @}
1328 */
1329
1330 /**
1331 * @}
1332 */
1333
1334 /**
1335 * @}
1336 */
1337
1338 #endif /* DMAMUX1 */
1339
1340 /**
1341 * @}
1342 */
1343
1344 #ifdef __cplusplus
1345 }
1346 #endif
1347
1348 #endif /* STM32C0xx_LL_DMAMUX_H */
1349