1 /**
2   ******************************************************************************
3   * @file    stm32f3xx_hal_dac_ex.h
4   * @author  MCD Application Team
5   * @brief   Header file of DAC HAL Extended module.
6   ******************************************************************************
7   * @attention
8   *
9   * Copyright (c) 2016 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 STM32F3xx_HAL_DAC_EX_H
21 #define STM32F3xx_HAL_DAC_EX_H
22 
23 #ifdef __cplusplus
24  extern "C" {
25 #endif
26 
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32f3xx_hal_def.h"
29 
30 /** @addtogroup STM32F3xx_HAL_Driver
31   * @{
32   */
33 
34 /** @addtogroup DACEx
35   * @{
36   */
37 
38 /* Exported types ------------------------------------------------------------*/
39 /* Exported constants --------------------------------------------------------*/
40 /** @defgroup DACEx_Exported_Constants DACEx Exported Constants
41   * @{
42   */
43 
44 /** @defgroup DACEx_trigger_selection DACEx trigger selection
45   * @{
46   */
47 
48 #if defined(STM32F301x8) || defined(STM32F318xx)
49 #define DAC_TRIGGER_NONE                   (0x00000000U) /*!< Conversion is automatic once the DAC1_DHRxxxx register
50                                                                      has been loaded, and not by external trigger */
51 #define DAC_TRIGGER_T6_TRGO                ((uint32_t)DAC_CR_TEN1) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */
52 #define DAC_TRIGGER_T2_TRGO                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TEN1)) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */
53 #define DAC_TRIGGER_T15_TRGO               ((uint32_t)(DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM5 TRGO selected as external conversion trigger for DAC channel */
54 #define DAC_TRIGGER_EXT_IT9                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TEN1)) /*!< EXTI Line9 event selected as external conversion trigger for DAC channel */
55 #define DAC_TRIGGER_SOFTWARE               ((uint32_t)(DAC_CR_TSEL1 | DAC_CR_TEN1)) /*!< Conversion started by software trigger for DAC channel */
56 
57 #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_TRIGGER_NONE) || \
58                                  ((TRIGGER) == DAC_TRIGGER_T2_TRGO) || \
59                                  ((TRIGGER) == DAC_TRIGGER_T6_TRGO) || \
60                                  ((TRIGGER) == DAC_TRIGGER_T15_TRGO) || \
61                                  ((TRIGGER) == DAC_TRIGGER_EXT_IT9) || \
62                                  ((TRIGGER) == DAC_TRIGGER_SOFTWARE))
63 #endif /* STM32F301x8 || STM32F318xx */
64 
65 #if defined(STM32F302xE) || \
66     defined(STM32F302xC) || \
67     defined(STM32F302x8)
68 
69 #define DAC_TRIGGER_NONE                   (0x00000000U) /*!< Conversion is automatic once the DAC1_DHRxxxx register
70                                                                      has been loaded, and not by external trigger */
71 #define DAC_TRIGGER_T6_TRGO                ((uint32_t)DAC_CR_TEN1) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */
72 #define DAC_TRIGGER_T3_TRGO                ((uint32_t)(DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM3 TRGO selected as external conversion trigger for DAC channel */
73 #define DAC_TRIGGER_T15_TRGO               ((uint32_t)(DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM5 TRGO selected as external conversion trigger for DAC channel */
74 #define DAC_TRIGGER_T2_TRGO                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TEN1)) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */
75 #define DAC_TRIGGER_T4_TRGO                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM4 TRGO selected as external conversion trigger for DAC channel */
76 #define DAC_TRIGGER_EXT_IT9                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TEN1)) /*!< EXTI Line9 event selected as external conversion trigger for DAC channel */
77 #define DAC_TRIGGER_SOFTWARE               ((uint32_t)(DAC_CR_TSEL1 | DAC_CR_TEN1)) /*!< Conversion started by software trigger for DAC channel */
78 
79 #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_TRIGGER_NONE) || \
80                                  ((TRIGGER) == DAC_TRIGGER_T2_TRGO) || \
81                                  ((TRIGGER) == DAC_TRIGGER_T3_TRGO) || \
82                                  ((TRIGGER) == DAC_TRIGGER_T4_TRGO) || \
83                                  ((TRIGGER) == DAC_TRIGGER_T15_TRGO) || \
84                                  ((TRIGGER) == DAC_TRIGGER_T6_TRGO) || \
85                                  ((TRIGGER) == DAC_TRIGGER_EXT_IT9) || \
86                                  ((TRIGGER) == DAC_TRIGGER_SOFTWARE))
87 
88 #endif /* STM32F302xE || */
89        /* STM32F302xC || */
90        /* STM32F302x8 */
91 
92 #if defined(STM32F303xE) || defined(STM32F398xx) || \
93     defined(STM32F303xC) || defined(STM32F358xx)
94 
95 #define DAC_TRIGGER_NONE                   (0x00000000U) /*!< Conversion is automatic once the DAC1_DHRxxxx register
96                                                                      has been loaded, and not by external trigger */
97 #define DAC_TRIGGER_T2_TRGO                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TEN1)) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */
98 #define DAC_TRIGGER_T4_TRGO                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM4 TRGO selected as external conversion trigger for DAC channel */
99 #define DAC_TRIGGER_T15_TRGO               ((uint32_t)(DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM5 TRGO selected as external conversion trigger for DAC channel */
100 #define DAC_TRIGGER_T6_TRGO                ((uint32_t)DAC_CR_TEN1) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */
101 #define DAC_TRIGGER_T7_TRGO                ((uint32_t)(DAC_CR_TSEL1_1 | DAC_CR_TEN1)) /*!< TIM7 TRGO selected as external conversion trigger for DAC channel */
102 #define DAC_TRIGGER_T3_TRGO                ((uint32_t)(DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM3 TRGO selected as external conversion trigger for DAC channel
103                                                                                            Use __HAL_REMAPTRIGGER_ENABLE(HAL_REMAPTRIGGER_DAC1_TRIG) for TIM3 selection */
104 #define DAC_TRIGGER_T8_TRGO                DAC_TRIGGER_T3_TRGO                        /*!< TIM8 TRGO selected as external conversion trigger for DAC channel
105                                                                                            Use __HAL_REMAPTRIGGER_DISABLE(HAL_REMAPTRIGGER_DAC1_TRIG) for TIM8 selection */
106 
107 #define DAC_TRIGGER_EXT_IT9                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TEN1)) /*!< EXTI Line9 event selected as external conversion trigger for DAC channel */
108 #define DAC_TRIGGER_SOFTWARE               ((uint32_t)(DAC_CR_TSEL1 | DAC_CR_TEN1)) /*!< Conversion started by software trigger for DAC channel */
109 
110 #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_TRIGGER_NONE) || \
111                                  ((TRIGGER) == DAC_TRIGGER_T2_TRGO) || \
112                                  ((TRIGGER) == DAC_TRIGGER_T3_TRGO) || \
113                                  ((TRIGGER) == DAC_TRIGGER_T4_TRGO) || \
114                                  ((TRIGGER) == DAC_TRIGGER_T15_TRGO) || \
115                                  ((TRIGGER) == DAC_TRIGGER_T6_TRGO) || \
116                                  ((TRIGGER) == DAC_TRIGGER_T7_TRGO) || \
117                                  ((TRIGGER) == DAC_TRIGGER_EXT_IT9) || \
118                                  ((TRIGGER) == DAC_TRIGGER_SOFTWARE))
119 #endif /* STM32F303xE || STM32F398xx || */
120        /* STM32F303xC || STM32F358xx    */
121 
122 
123 #if defined(STM32F303x8) || defined(STM32F328xx)
124 
125 #define DAC_TRIGGER_NONE                   (0x00000000U) /*!< Conversion is automatic once the DAC1_DHRxxxx register
126                                                                      has been loaded, and not by external trigger */
127 #define DAC_TRIGGER_T2_TRGO                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TEN1)) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */
128 #define DAC_TRIGGER_T15_TRGO               ((uint32_t)(DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM5 TRGO selected as external conversion trigger for DAC channel */
129 #define DAC_TRIGGER_T6_TRGO                ((uint32_t)DAC_CR_TEN1) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */
130 #define DAC_TRIGGER_T7_TRGO                ((uint32_t)(DAC_CR_TSEL1_1 | DAC_CR_TEN1)) /*!< TIM7 TRGO selected as external conversion trigger for DAC channel */
131 #define DAC_TRIGGER_T3_TRGO                ((uint32_t)(DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM3 TRGO selected as external conversion trigger for DAC channel */
132 
133 #define DAC_TRIGGER_EXT_IT9                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TEN1)) /*!< EXTI Line9 event selected as external conversion trigger for DAC channel */
134 #define DAC_TRIGGER_SOFTWARE               ((uint32_t)(DAC_CR_TSEL1 | DAC_CR_TEN1)) /*!< Conversion started by software trigger for DAC channel */
135 
136 #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_TRIGGER_NONE) || \
137                                  ((TRIGGER) == DAC_TRIGGER_T2_TRGO) || \
138                                  ((TRIGGER) == DAC_TRIGGER_T3_TRGO) || \
139                                  ((TRIGGER) == DAC_TRIGGER_T15_TRGO) || \
140                                  ((TRIGGER) == DAC_TRIGGER_T6_TRGO) || \
141                                  ((TRIGGER) == DAC_TRIGGER_T7_TRGO) || \
142                                  ((TRIGGER) == DAC_TRIGGER_EXT_IT9) || \
143                                  ((TRIGGER) == DAC_TRIGGER_SOFTWARE))
144 
145 #endif /* STM32F303x8 || STM32F328xx */
146 
147 
148 #if defined(STM32F373xC) || defined(STM32F378xx)
149 
150 #define DAC_TRIGGER_NONE                   (0x00000000U) /*!< Conversion is automatic once the DAC1_DHRxxxx register
151                                                                      has been loaded, and not by external trigger */
152 
153 #define DAC_TRIGGER_T2_TRGO                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TEN1)) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */
154 #define DAC_TRIGGER_T4_TRGO                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM4 TRGO selected as external conversion trigger for DAC channel */
155 #define DAC_TRIGGER_T5_TRGO                ((uint32_t)(DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM5 TRGO selected as external conversion trigger for DAC channel (DAC1) */
156 #define DAC_TRIGGER_T18_TRGO               DAC_TRIGGER_T5_TRGO                                         /*!< TIM18 TRGO selected as external conversion trigger for DAC channel (DAC2) */
157 #define DAC_TRIGGER_T6_TRGO                ((uint32_t)DAC_CR_TEN1) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */
158 #define DAC_TRIGGER_T7_TRGO                ((uint32_t)(DAC_CR_TSEL1_1 | DAC_CR_TEN1)) /*!< TIM7 TRGO selected as external conversion trigger for DAC channel */
159 #define DAC_TRIGGER_T3_TRGO                ((uint32_t)(DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM3 TRGO selected as external conversion trigger for DAC channel */
160 
161 #define DAC_TRIGGER_EXT_IT9                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TEN1)) /*!< EXTI Line9 event selected as external conversion trigger for DAC channel */
162 #define DAC_TRIGGER_SOFTWARE               ((uint32_t)(DAC_CR_TSEL1 | DAC_CR_TEN1)) /*!< Conversion started by software trigger for DAC channel */
163 
164 
165 #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_TRIGGER_NONE) || \
166                                  ((TRIGGER) == DAC_TRIGGER_T2_TRGO) || \
167                                  ((TRIGGER) == DAC_TRIGGER_T3_TRGO) || \
168                                  ((TRIGGER) == DAC_TRIGGER_T4_TRGO) || \
169                                  ((TRIGGER) == DAC_TRIGGER_T5_TRGO) || \
170                                  ((TRIGGER) == DAC_TRIGGER_T6_TRGO) || \
171                                  ((TRIGGER) == DAC_TRIGGER_T7_TRGO) || \
172                                  ((TRIGGER) == DAC_TRIGGER_EXT_IT9) || \
173                                  ((TRIGGER) == DAC_TRIGGER_SOFTWARE))
174 #endif /* STM32F373xC || STM32F378xx */
175 
176 #if defined(STM32F334x8)
177 
178 #define DAC_TRIGGER_NONE                   (0x00000000U) /*!< Conversion is automatic once the DAC1_DHRxxxx register
179                                                                      has been loaded, and not by external trigger */
180 #define DAC_TRIGGER_T6_TRGO                ((uint32_t)DAC_CR_TEN1) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */
181 #define DAC_TRIGGER_T3_TRGO                ((uint32_t)(DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM3 TRGO selected as external conversion trigger for DAC channel
182                                                                                            Use __HAL_REMAPTRIGGER_ENABLE(HAL_REMAPTRIGGER_DAC1_TRIG) for TIM3 remap */
183 
184 #define DAC_TRIGGER_T7_TRGO                ((uint32_t)(DAC_CR_TSEL1_1 | DAC_CR_TEN1)) /*!< TIM7 TRGO selected as external conversion trigger for DAC channel */
185 #define DAC_TRIGGER_T2_TRGO                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TEN1)) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */
186 #define DAC_TRIGGER_T15_TRGO               ((uint32_t)(DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM15 TRGO selected as external conversion trigger for DAC channel
187                                                                                                             Use __HAL_REMAPTRIGGER_DISABLE(HAL_REMAPTRIGGER_DAC1_TRIG3) for TIM15 selection */
188 #define DAC_TRIGGER_HRTIM1_DACTRG1         DAC_TRIGGER_T15_TRGO      /*!< HRTIM1 DACTRG1 selected as external conversion trigger for DAC
189                                                                           Use __HAL_REMAPTRIGGER_ENABLE(HAL_REMAPTRIGGER_DAC1_TRIG3) for HRTIM1 DACTRG1 selection */
190 
191 #define DAC_TRIGGER_HRTIM1_DACTRG2         ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< HRTIM1 DACTRG2 selected as external conversion trigger for DAC channel (DAC1)
192                                                                                                             Use __HAL_REMAPTRIGGER_ENABLE(HAL_REMAPTRIGGER_DAC1_TRIG5) for HRTIM1 DACTRG2 remap */
193 #define DAC_TRIGGER_HRTIM1_DACTRG3         DAC_TRIGGER_HRTIM1_DACTRG2                                  /*!< HRTIM1 DACTRG3 selected as external conversion trigger for DAC channel (DAC2)*/
194 
195 #define DAC_TRIGGER_EXT_IT9                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TEN1)) /*!< EXTI Line9 event selected as external conversion trigger for DAC channel */
196 #define DAC_TRIGGER_SOFTWARE               ((uint32_t)(DAC_CR_TSEL1 | DAC_CR_TEN1)) /*!< Conversion started by software trigger for DAC channel */
197 
198 #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_TRIGGER_NONE) || \
199                                  ((TRIGGER) == DAC_TRIGGER_T6_TRGO) || \
200                                  ((TRIGGER) == DAC_TRIGGER_T3_TRGO) || \
201                                  ((TRIGGER) == DAC_TRIGGER_T7_TRGO) || \
202                                  ((TRIGGER) == DAC_TRIGGER_T15_TRGO) || \
203                                  ((TRIGGER) == DAC_TRIGGER_T2_TRGO) || \
204                                  ((TRIGGER) == DAC_TRIGGER_HRTIM1_DACTRG2) || \
205                                  ((TRIGGER) == DAC_TRIGGER_EXT_IT9) || \
206                                  ((TRIGGER) == DAC_TRIGGER_SOFTWARE))
207 
208 #endif /* STM32F334x8 */
209 
210 /**
211   * @}
212   */
213 
214 /** @defgroup DACEx_Channel_selection DACEx Channel selection
215   * @{
216   */
217 
218 #if defined(STM32F302xE) || \
219     defined(STM32F302xC) || \
220     defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
221 #define DAC_CHANNEL_1                      (0x00000000U)               /*!< DAC Channel 1U */
222 
223 #endif  /* STM32F302xE                               || */
224         /* STM32F302xC                               || */
225         /* STM32F301x8 || STM32F302x8 || STM32F318xx    */
226 
227 
228 #if defined(STM32F303xE) || defined(STM32F398xx) || \
229     defined(STM32F303xC) || defined(STM32F358xx)
230 #define DAC_CHANNEL_1                     (0x00000000U)       /*!< DAC Channel 1U */
231 #define DAC_CHANNEL_2                     (0x00000010U)       /*!< DAC Channel 2U */
232 
233 #endif /* STM32F303xE || STM32F398xx || */
234        /* STM32F303xC || STM32F358xx    */
235 
236 #if defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
237     defined(STM32F373xC) || defined(STM32F378xx)
238 
239 #define DAC_CHANNEL_1                     (0x00000000U)       /*!< DAC Channel 1U */
240 #define DAC_CHANNEL_2                     (0x00000010U)       /*!< DAC Channel 2U */
241 
242 #endif /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
243        /* STM32F373xC || STM32F378xx                   */
244 
245 /**
246   * @}
247   */
248 
249 /**
250   * @}
251   */
252 
253 /* Private macro -------------------------------------------------------------*/
254 
255 /** @defgroup DACEx_Private_Macros DACEx Private Macros
256   * @{
257   */
258 
259 #if defined(STM32F302xE) || \
260     defined(STM32F302xC) || \
261     defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
262 
263 #define IS_DAC_CHANNEL(CHANNEL) ((CHANNEL) == DAC_CHANNEL_1)
264 #endif  /* STM32F302xE                               || */
265         /* STM32F302xC                               || */
266         /* STM32F301x8 || STM32F302x8 || STM32F318xx    */
267 
268 
269 #if defined(STM32F303xE) || defined(STM32F398xx) || \
270     defined(STM32F303xC) || defined(STM32F358xx)
271 
272 #define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_CHANNEL_1) || \
273                                  ((CHANNEL) == DAC_CHANNEL_2))
274 #endif /* STM32F303xE || STM32F398xx || */
275        /* STM32F303xC || STM32F358xx    */
276 
277 #if defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
278     defined(STM32F373xC) || defined(STM32F378xx)
279 
280 #define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_CHANNEL_1) || \
281                                  ((CHANNEL) == DAC_CHANNEL_2))
282 #endif /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
283        /* STM32F373xC || STM32F378xx  */
284 
285 
286 
287 /**
288   * @}
289   */
290 
291 /* Exported functions --------------------------------------------------------*/
292 
293 /** @addtogroup DACEx_Exported_Functions
294   * @{
295   */
296 
297 /** @addtogroup DACEx_Exported_Functions_Group2
298  * @{
299  */
300 /* IO operation functions *****************************************************/
301 
302 uint32_t HAL_DACEx_DualGetValue(DAC_HandleTypeDef* hdac);
303 HAL_StatusTypeDef HAL_DACEx_DualSetValue(DAC_HandleTypeDef* hdac, uint32_t Alignment, uint32_t Data1, uint32_t Data2);
304 HAL_StatusTypeDef HAL_DACEx_TriangleWaveGenerate(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Amplitude);
305 HAL_StatusTypeDef HAL_DACEx_NoiseWaveGenerate(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Amplitude);
306 
307 #if  defined(STM32F303xE) || defined(STM32F398xx)                         || \
308      defined(STM32F303xC) || defined(STM32F358xx)                         || \
309      defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
310      defined(STM32F373xC) || defined(STM32F378xx)
311 void HAL_DACEx_ConvCpltCallbackCh2(DAC_HandleTypeDef* hdac);
312 void HAL_DACEx_ConvHalfCpltCallbackCh2(DAC_HandleTypeDef* hdac);
313 void HAL_DACEx_ErrorCallbackCh2(DAC_HandleTypeDef *hdac);
314 void HAL_DACEx_DMAUnderrunCallbackCh2(DAC_HandleTypeDef *hdac);
315 #endif /* STM32F303xE || STM32F398xx                || */
316        /* STM32F303xC || STM32F358xx                || */
317        /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
318        /* STM32F373xC || STM32F378xx                   */
319 
320 /**
321   * @}
322   */
323 
324 /**
325   * @}
326   */
327 
328 /**
329    * @}
330    */
331 
332 /**
333    * @}
334    */
335 
336 #ifdef __cplusplus
337 }
338 #endif
339 
340 #endif /* STM32F3xx_HAL_HAL_EX_H */
341 
342