1 /**
2   ******************************************************************************
3   * @file    tae32f53xx_ll_dac.c
4   * @author  MCD Application Team
5   * @brief   Source file for DAC Module
6   *
7   ******************************************************************************
8   * @attention
9   *
10   * <h2><center>&copy; Copyright (c) 2020 Tai-Action.
11   * All rights reserved.</center></h2>
12   *
13   * This software is licensed by Tai-Action under BSD 3-Clause license,
14   * the "License"; You may not use this file except in compliance with the
15   * License. You may obtain a copy of the License at:
16   *                        opensource.org/licenses/BSD-3-Clause
17   *
18   ******************************************************************************
19   */
20 
21 /* Includes ------------------------------------------------------------------*/
22 #include "tae32f53xx_ll.h"
23 
24 
25 #define DBG_TAG             "DAC LL"
26 #define DBG_LVL             DBG_ERROR
27 #include "dbg/tae32f53xx_dbg.h"
28 
29 
30 /** @addtogroup TAE32F53xx_LL_Driver
31   * @{
32   */
33 
34 /** @defgroup DAC_LL DAC LL
35   * @brief    DAC LL module driver
36   * @{
37   */
38 
39 #ifdef LL_DAC_MODULE_ENABLED
40 
41 /* Private define ------------------------------------------------------------*/
42 /* Private macro -------------------------------------------------------------*/
43 /* Private typedef -----------------------------------------------------------*/
44 /* Private variables ---------------------------------------------------------*/
45 /* Private function prototypes -----------------------------------------------*/
46 /* Exported functions --------------------------------------------------------*/
47 /** @defgroup DAC_LL_Exported_Functions DAC LL Exported Functions
48   * @brief    DAC LL Exported Functions
49   * @{
50   */
51 
52 /** @defgroup DAC_LL_Exported_Functions_Group1 Initialization and De-Initialization functions
53   * @brief    Initialization and De-Initialization functions
54 
55 @verbatim
56   ==============================================================================
57               ##### Initialization and De-Initialization functions #####
58   ==============================================================================
59   [..]
60     This section provides functions allowing to:
61     (+) Initialize the DAC peripheral.
62     (+) De-initialize the DAC peripheral.
63 
64 @endverbatim
65   * @{
66   */
67 
68 /**
69   * @brief  Initialize the DAC peripheral
70   * @param  Instance DAC peripheral instance
71   * @return status of the initialization
72   */
LL_DAC_Init(DAC_TypeDef * Instance)73 LL_StatusETypeDef LL_DAC_Init(DAC_TypeDef *Instance)
74 {
75     /* Check the parameters */
76     assert_param(IS_DAC_ALL_INSTANCE(Instance));
77 
78     /* Init the low level hardware */
79     LL_DAC_MspInit(Instance);
80 
81     /* Clear interrupt pending flags */
82     __LL_DAC_PENDING_FLAG_CLEAR(Instance, DAC_FLAG_ALLIF);
83 
84     /* Return function status */
85     return LL_OK;
86 }
87 
88 /**
89   * @brief  Deinitialize the DAC peripheral
90   * @param  Instance DAC peripheral instance
91   * @return status of the initialization
92   */
LL_DAC_DeInit(DAC_TypeDef * Instance)93 LL_StatusETypeDef LL_DAC_DeInit(DAC_TypeDef *Instance)
94 {
95     /* Check the parameters */
96     assert_param(IS_DAC_ALL_INSTANCE(Instance));
97 
98     for (uint8_t chnnum = 0; chnnum < DAC_CHN_NB; ++chnnum) {
99         /* Disable DAC Channel wave */
100         CLEAR_BIT(Instance->CR[chnnum], DAC_CR_TGE_Msk | DAC_CR_STE_Msk);
101 
102         /* Disable DONE/DONEB interrupts */
103         __LL_DAC_IT_DISABLE(Instance, chnnum, DAC_IT_DIE | DAC_IT_DBIE);
104 
105         /* Disable DAC Channel Output */
106         __LL_DAC_OUTPUT_DISABLE(Instance, chnnum);
107 
108         /* Disable DAC Channel */
109         __LL_DAC_DISABLE(Instance, chnnum);
110     }
111 
112     /* DeInit the low level hardware */
113     LL_DAC_MspDeInit(Instance);
114 
115     /* Return function status */
116     return LL_OK;
117 }
118 
119 /**
120   * @brief  Initializes the DAC MSP.
121   * @param  Instance DAC peripheral
122   * @return None
123   */
LL_DAC_MspInit(DAC_TypeDef * Instance)124 __WEAK void LL_DAC_MspInit(DAC_TypeDef *Instance)
125 {
126     /* Prevent unused argument(s) compilation warning */
127     LL_UNUSED(Instance);
128 
129     /* NOTE : This function should not be modified, when the callback is needed,
130               the LL_DAC_MspInit could be implemented in the user file
131      */
132 }
133 
134 /**
135   * @brief  DeInitializes the DAC MSP
136   * @param  Instance DAC peripheral
137   * @return None
138   */
LL_DAC_MspDeInit(DAC_TypeDef * Instance)139 __WEAK void LL_DAC_MspDeInit(DAC_TypeDef *Instance)
140 {
141     /* Prevent unused argument(s) compilation warning */
142     LL_UNUSED(Instance);
143 
144     /* NOTE: This function should not be modified, when the callback is needed,
145              the LL_DAC_MspDeInit could be implemented in the user file
146      */
147 }
148 /**
149   * @}
150   */
151 
152 
153 /** @defgroup DAC_LL_Exported_Functions_Group2 DAC Peripheral Control functions
154   * @brief    DAC Peripheral Control functions
155 @verbatim
156   ===============================================================================
157                        ##### Peripheral Control functions #####
158   ===============================================================================
159   [..] This section provides functions allowing to:
160     (+) Configure channels.
161     (+) Sawtooth/Tranigle wave generate configure
162 
163 @endverbatim
164   * @{
165   */
166 
167 /**
168   * @brief  Configures the selected DAC channel.
169   * @param  Instance DAC peripheral
170   * @param  Channel The selected DAC channel.
171   *         This parameter can be one of the following values:
172   *            @arg DAC_CHANNEL_0: DAC Channel0 selected
173   *            @arg DAC_CHANNEL_1: DAC Channel1 selected
174   *            @arg DAC_CHANNEL_2: DAC Channel2 selected
175   *            @arg DAC_CHANNEL_3: DAC Channel3 selected
176   * @param  sConfig DAC configuration structure.
177   * @return LL Status
178   */
LL_DAC_ChannelConfig(DAC_TypeDef * Instance,uint32_t Channel,DAC_ChannelConfTypeDef * sConfig)179 LL_StatusETypeDef LL_DAC_ChannelConfig(DAC_TypeDef *Instance, uint32_t Channel, DAC_ChannelConfTypeDef *sConfig)
180 {
181     /* Get the channel number */
182     uint8_t chnnum = POSITION_VAL(Channel);
183 
184     /* Check the DAC parameters */
185     assert_param(IS_DAC_ALL_INSTANCE(Instance));
186     assert_param(IS_DAC_CHANNEL(Channel));
187     assert_param(IS_DAC_NUMBER(chnnum));
188     assert_param(sConfig != NULL);
189     assert_param(IS_DAC_CHANNEL_OUTPUT_SEL(sConfig->Output));
190     assert_param(IS_DAC_CHANNEL_DONE_IT_PENDING_CFG(sConfig->DoneIntPending));
191     assert_param(IS_DAC_CHANNEL_DONEB_IT_PENDING_CFG(sConfig->DoneBIntPending));
192 
193     /* Reset and Calculate CR register value depending on sConfig */
194     MODIFY_REG(Instance->CR[chnnum],
195                (DAC_CR_PEN_Msk   | DAC_CR_OEN_Msk
196                 | DAC_CR_TGE_Msk | DAC_CR_STE_Msk
197                 | DAC_CR_DIE_Msk | DAC_CR_DBIE_Msk),
198                (sConfig->Output
199                 | sConfig->DoneIntPending
200                 | sConfig->DoneBIntPending));
201 
202     /* Return function status */
203     return LL_OK;
204 }
205 
206 /**
207   * @brief  Enable the selected DAC channel sawtooth wave generation.
208   * @param  Instance DAC peripheral
209   * @param  Channel The selected DAC channel.
210   * @param  sConfig DAC sawtooth configuration structure.
211   * @return LL Status
212   */
LL_DAC_SawtoothWaveGenerate(DAC_TypeDef * Instance,uint32_t Channel,DAC_SawtoothConfTypeDef * sConfig)213 LL_StatusETypeDef LL_DAC_SawtoothWaveGenerate(DAC_TypeDef *Instance, uint32_t Channel, DAC_SawtoothConfTypeDef *sConfig)
214 {
215     /* Get the channel number */
216     uint8_t chnnum = POSITION_VAL(Channel);
217 
218     /* Check the DAC parameters */
219     assert_param(IS_DAC_ALL_INSTANCE(Instance));
220     assert_param(IS_DAC_CHANNEL(Channel));
221     assert_param(IS_DAC_NUMBER(chnnum));
222     assert_param(sConfig != NULL);
223     assert_param(IS_DAC_SAWTOOTH_RESET_DATA(sConfig->ResetData));
224     assert_param(IS_DAC_SAWTOOTH_STEP_DATA(sConfig->StepData));
225     assert_param(IS_DAC_SAWTOOTH_POLARITY(sConfig->Polarity));
226     assert_param(IS_DAC_SAWTOOTH_RESET_TRIGGER(sConfig->ResetTrigger));
227     assert_param(IS_DAC_SAWTOOTH_STEP_TRIGGER(sConfig->StepTrigger));
228     assert_param(sConfig->StepTrigger != sConfig->ResetTrigger);
229 
230     /* Configure the sawtooth wave */
231     MODIFY_REG(Instance->CR[chnnum],
232                (DAC_CR_TGE_Msk
233                 | DAC_CR_STE_Msk
234                 | DAC_CR_STDIR_Msk
235                 | DAC_CR_STINCTRIG_Msk
236                 | DAC_CR_STRSTTRIG_Msk),
237                (sConfig->Polarity
238                 | (sConfig->StepTrigger << DAC_CR_STINCTRIG_Pos)
239                 | (sConfig->ResetTrigger << DAC_CR_STRSTTRIG_Pos)));
240 
241     /* Configure the sawtooth wave generation data parameters */
242     WRITE_REG(Instance->SIDR[chnnum], sConfig->StepData);
243     WRITE_REG(Instance->SRDR[chnnum], sConfig->ResetData << 4);
244 
245     /* Enable sawtooth wave */
246     SET_BIT(Instance->CR[chnnum], DAC_CR_STE);
247 
248     /* Return function status */
249     return LL_OK;
250 }
251 
252 /**
253   * @brief  Enable the selected DAC channel triangle wave generation.
254   * @param  Instance DAC peripheral
255   * @param  Channel The selected DAC channel.
256   * @param  sConfig DAC triangle configuration structure.
257   * @return LL Status
258   */
LL_DAC_TriangleWaveGenerate(DAC_TypeDef * Instance,uint32_t Channel,DAC_TriangleConfTypeDef * sConfig)259 LL_StatusETypeDef LL_DAC_TriangleWaveGenerate(DAC_TypeDef *Instance, uint32_t Channel, DAC_TriangleConfTypeDef *sConfig)
260 {
261     /* Get the channel number */
262     uint8_t chnnum = POSITION_VAL(Channel);
263 
264     /* Check the DAC parameters */
265     assert_param(IS_DAC_ALL_INSTANCE(Instance));
266     assert_param(IS_DAC_CHANNEL(Channel));
267     assert_param(IS_DAC_NUMBER(chnnum));
268     assert_param(sConfig != NULL);
269     assert_param(IS_DAC_TRIANGLE_INITIALDIRECTION(sConfig->InitialDirection));
270     assert_param(IS_DAC_TRIANGLE_AMPLITUDE(sConfig->Amplitude));
271     assert_param(IS_DAC_TRIANGLE_STEP_TRIGGER(sConfig->StepTrigger));
272 
273     /* Configure the triangle wave */
274     MODIFY_REG(Instance->CR[chnnum],
275                (DAC_CR_TGE_Msk
276                 | DAC_CR_STE_Msk
277                 | DAC_CR_TGDIR_Msk
278                 | DAC_CR_TGAMP_Msk
279                 | DAC_CR_TGTRIG_Msk),
280                (sConfig->InitialDirection
281                 | sConfig->Amplitude
282                 | (sConfig->StepTrigger << DAC_CR_TGTRIG_Pos)));
283 
284     /* Enable triangle wave */
285     SET_BIT(Instance->CR[chnnum], DAC_CR_TGE);
286 
287     /* Return function status */
288     return LL_OK;
289 }
290 /**
291   * @}
292   */
293 
294 
295 /** @defgroup DAC_LL_Exported_Functions_Group3 DAC IO operation functions
296   * @brief    DAC IO operation functions
297   *
298 @verbatim
299   ==============================================================================
300              ##### IO operation functions #####
301   ==============================================================================
302     [..]  This section provides functions allowing to:
303       (+) Start/Stop DAC Output.
304       (+) Simple value conversion.
305       (+) Singles conversion.
306       (+) Get result of conversion.
307 
308 @endverbatim
309   * @{
310   */
311 
312 /**
313   * @brief  Enables DAC Channel conversion
314   * @param  Instance DAC peripheral instance
315   * @param  Channel The selected DAC channel.
316   *         This parameter can be one of the following values:
317   *            @arg DAC_CHANNEL_0: DAC Channel0 selected
318   *            @arg DAC_CHANNEL_1: DAC Channel1 selected
319   *            @arg DAC_CHANNEL_2: DAC Channel2 selected
320   *            @arg DAC_CHANNEL_3: DAC Channel3 selected
321   * @return LL Status
322   */
LL_DAC_Start(DAC_TypeDef * Instance,uint32_t Channel)323 LL_StatusETypeDef LL_DAC_Start(DAC_TypeDef *Instance, uint32_t Channel)
324 {
325     /* Get the channel number */
326     uint8_t chnnum = POSITION_VAL(Channel);
327 
328     /* Check the DAC parameters */
329     assert_param(IS_DAC_ALL_INSTANCE(Instance));
330     assert_param(IS_DAC_CHANNEL(Channel));
331     assert_param(IS_DAC_NUMBER(chnnum));
332 
333     /* Enable DAC Channel */
334     __LL_DAC_ENABLE(Instance, chnnum);
335 
336     /* Return function status */
337     return LL_OK;
338 }
339 
340 /**
341   * @brief  Disable DAC Channel conversion
342   * @param  Instance DAC peripheral instance
343   * @param  Channel The selected DAC channel.
344   *         This parameter can be one of the following values:
345   *            @arg DAC_CHANNEL_0: DAC Channel0 selected
346   *            @arg DAC_CHANNEL_1: DAC Channel1 selected
347   *            @arg DAC_CHANNEL_2: DAC Channel2 selected
348   *            @arg DAC_CHANNEL_3: DAC Channel3 selected
349   * @return LL Status
350   */
LL_DAC_Stop(DAC_TypeDef * Instance,uint32_t Channel)351 LL_StatusETypeDef LL_DAC_Stop(DAC_TypeDef *Instance, uint32_t Channel)
352 {
353     /* Get the channel number */
354     uint8_t chnnum = POSITION_VAL(Channel);
355 
356     /* Check the DAC parameters */
357     assert_param(IS_DAC_ALL_INSTANCE(Instance));
358     assert_param(IS_DAC_CHANNEL(Channel));
359     assert_param(IS_DAC_NUMBER(chnnum));
360 
361     /* Enable DAC Channel */
362     __LL_DAC_DISABLE(Instance, chnnum);
363 
364     /* Return function status */
365     return LL_OK;
366 }
367 
368 /**
369   * @brief  Set the specified data value for DAC channel.
370   * @param  Instance DAC peripheral instance
371   * @param  Channel The selected DAC channel.
372   *         This parameter can be one of the following values:
373   *            @arg DAC_CHANNEL_0: DAC Channel0 selected
374   *            @arg DAC_CHANNEL_1: DAC Channel1 selected
375   *            @arg DAC_CHANNEL_2: DAC Channel2 selected
376   *            @arg DAC_CHANNEL_3: DAC Channel3 selected
377   * @param  Data Data to be loaded.
378   *         This parameter can be a number in range from 0 to DAC full range 4095(0xFFF),
379   *         witch will be converse to 0 - VCC
380   * @return LL status
381   */
LL_DAC_SetValue(DAC_TypeDef * Instance,uint32_t Channel,uint16_t Data)382 LL_StatusETypeDef LL_DAC_SetValue(DAC_TypeDef *Instance, uint32_t Channel, uint16_t Data)
383 {
384     /* Get the channel number */
385     uint8_t chnnum = POSITION_VAL(Channel);
386 
387     /* Check the DAC parameters */
388     assert_param(IS_DAC_ALL_INSTANCE(Instance));
389     assert_param(IS_DAC_CHANNEL(Channel));
390     assert_param(IS_DAC_NUMBER(chnnum));
391 
392     /* Set the data for DAC channel conversion */
393     __LL_DAC_SET_VALUE(Instance, chnnum, Data & 0xFFFUL);
394 
395     /* Return function status */
396     return LL_OK;
397 }
398 
399 /**
400   * @brief  Get the specified DAC channel conversion value on runtime.
401   * @param  Instance DAC peripheral instance
402   * @param  Channel The selected DAC channel.
403   *         This parameter can be one of the following values:
404   *            @arg DAC_CHANNEL_0: DAC Channel0 selected
405   *            @arg DAC_CHANNEL_1: DAC Channel1 selected
406   *            @arg DAC_CHANNEL_2: DAC Channel2 selected
407   *            @arg DAC_CHANNEL_3: DAC Channel3 selected
408   * @return Current conversion value
409   */
LL_DAC_GetValue(DAC_TypeDef * Instance,uint32_t Channel)410 uint16_t LL_DAC_GetValue(DAC_TypeDef *Instance, uint32_t Channel)
411 {
412     /* Get the channel number */
413     uint8_t chnnum = POSITION_VAL(Channel);
414 
415     /* Check the DAC parameters */
416     assert_param(IS_DAC_ALL_INSTANCE(Instance));
417     assert_param(IS_DAC_CHANNEL(Channel));
418     assert_param(IS_DAC_NUMBER(chnnum));
419 
420     return __LL_DAC_GET_VALUE(Instance, chnnum) & 0xFFFUL;
421 }
422 
423 /**
424   * @brief  Trig sawtooth wave step
425   * @param  Instance DAC peripheral instance
426   * @param  Channel The selected DAC channel[s].
427   *         This parameter can be any combination of the following values:
428   *            @arg DAC_CHANNEL_0: DAC Channel0 selected
429   *            @arg DAC_CHANNEL_1: DAC Channel1 selected
430   *            @arg DAC_CHANNEL_2: DAC Channel2 selected
431   *            @arg DAC_CHANNEL_3: DAC Channel3 selected
432   * @return LL status
433   */
LL_DAC_SawtoothWaveDataStep(DAC_TypeDef * Instance,uint32_t Channel)434 LL_StatusETypeDef LL_DAC_SawtoothWaveDataStep(DAC_TypeDef *Instance, uint32_t Channel)
435 {
436     /* Check the DAC parameters */
437     assert_param(IS_DAC_ALL_INSTANCE(Instance));
438     assert_param(IS_DAC_CHANNELS_MASK(Channel));
439 
440     /* Trigger the selected DAC channel software conversion */
441     SET_BIT(Instance->SWTR, (Channel << DAC_SWTR_SWTB0_Pos));
442 
443     /* Return function status */
444     return LL_OK;
445 }
446 
447 /**
448   * @brief  Trig sawtooth wave reset
449   * @param  Instance DAC peripheral instance
450   * @param  Channel The selected DAC channel[s].
451   *         This parameter can be any combination of the following values:
452   *            @arg DAC_CHANNEL_0: DAC Channel0 selected
453   *            @arg DAC_CHANNEL_1: DAC Channel1 selected
454   *            @arg DAC_CHANNEL_2: DAC Channel2 selected
455   *            @arg DAC_CHANNEL_3: DAC Channel3 selected
456   * @return LL status
457   */
LL_DAC_SawtoothWaveDataReset(DAC_TypeDef * Instance,uint32_t Channel)458 LL_StatusETypeDef LL_DAC_SawtoothWaveDataReset(DAC_TypeDef *Instance, uint32_t Channel)
459 {
460     /* Check the DAC parameters */
461     assert_param(IS_DAC_ALL_INSTANCE(Instance));
462     assert_param(IS_DAC_CHANNELS_MASK(Channel));
463 
464     /* Trigger the selected DAC channel software conversion */
465     SET_BIT(Instance->SWTR, (Channel << DAC_SWTR_SWT0_Pos));
466 
467     /* Return function status */
468     return LL_OK;
469 }
470 
471 /**
472   * @brief  Trig triangle wave step
473   * @param  Instance DAC peripheral instance
474   * @param  Channel The selected DAC channel[s].
475   *         This parameter can be any combination of the following values:
476   *            @arg DAC_CHANNEL_0: DAC Channel0 selected
477   *            @arg DAC_CHANNEL_1: DAC Channel1 selected
478   *            @arg DAC_CHANNEL_2: DAC Channel2 selected
479   *            @arg DAC_CHANNEL_3: DAC Channel3 selected
480   * @return LL status
481   */
LL_DAC_TriangleWaveStep(DAC_TypeDef * Instance,uint32_t Channel)482 LL_StatusETypeDef LL_DAC_TriangleWaveStep(DAC_TypeDef *Instance, uint32_t Channel)
483 {
484     /* Check the DAC parameters */
485     assert_param(IS_DAC_ALL_INSTANCE(Instance));
486     assert_param(IS_DAC_CHANNELS_MASK(Channel));
487 
488     /* Trigger the selected DAC channel software conversion */
489     SET_BIT(Instance->SWTR, (Channel << DAC_SWTR_SWT0_Pos));
490 
491     /* Return function status */
492     return LL_OK;
493 }
494 /**
495   * @}
496   */
497 
498 
499 /** @defgroup DAC_LL_Exported_Functions_Interrupt DAC Initerrupt management
500   * @brief    DAC Initerrupt management
501 @verbatim
502   ===============================================================================
503                           ##### Initerrupt management #####
504   ===============================================================================
505   [..]
506       This section provides DAC interrupt handler and callback functions.
507 
508 @endverbatim
509   * @{
510   */
511 
512 /**
513   * @brief   This function handles DAC interrupts requests.
514   * @param   Instance DAC peripheral
515   * @return  None
516   */
LL_DAC_IRQHandler(DAC_TypeDef * Instance)517 void LL_DAC_IRQHandler(DAC_TypeDef *Instance)
518 {
519     uint32_t irqtemp = READ_REG(Instance->ISR);
520     /* Check the DAC parameters */
521     assert_param(IS_DAC_ALL_INSTANCE(Instance));
522 
523     for (uint8_t chnnum = 0; chnnum < DAC_CHN_NB; ++chnnum) {
524         if ((__LL_DAC_IT_CHECK_SOURCE(Instance, chnnum, DAC_IT_DIE) != RESET) &&
525             ((irqtemp & (DAC_ISR_D0IF << chnnum)) != RESET)) {
526             /* Chear the DAC_CHx DONE pending flag */
527             __LL_DAC_PENDING_FLAG_CLEAR(Instance, (DAC_ISR_D0IF << chnnum));
528 
529             /* DACx DONE interrupt callback function */
530             LL_DAC_ConvDoneCallback(Instance, 0x1UL << chnnum);
531         }
532 
533         if ((__LL_DAC_IT_CHECK_SOURCE(Instance, chnnum, DAC_IT_DBIE) != RESET) &&
534             ((irqtemp & (DAC_ISR_DB0IF << chnnum)) != RESET)) {
535             /* Chear the DAC_CHx DONEB pending flag */
536             __LL_DAC_PENDING_FLAG_CLEAR(Instance, (DAC_ISR_DB0IF << chnnum));
537 
538             /* DACx DONEB interrupt callback function */
539             LL_DAC_ConvDoneBCallback(Instance, 0x1UL << chnnum);
540 
541         }
542     }
543 }
544 
545 /**
546   * @brief  DAC_CHx DONE interrupt callback function
547   * @param  Instance DAC peripheral
548   * @param  Channel The handling DAC channel
549   * @return None
550   */
LL_DAC_ConvDoneCallback(DAC_TypeDef * Instance,uint32_t Channel)551 __WEAK void LL_DAC_ConvDoneCallback(DAC_TypeDef *Instance, uint32_t Channel)
552 {
553     /* Prevent unused argument(s) compilation warning */
554     LL_UNUSED(Instance);
555 
556     /* NOTE: This function should not be modified, when the callback is needed,
557              the LL_DAC_ConvDoneCallback could be implemented in the user file
558      */
559 }
560 
561 /**
562   * @brief  DAC_CHx DONE interrupt callback function
563   * @param  Instance DAC peripheral
564   * @param  Channel The handling DAC channel
565   * @return None
566   */
LL_DAC_ConvDoneBCallback(DAC_TypeDef * Instance,uint32_t Channel)567 __WEAK void LL_DAC_ConvDoneBCallback(DAC_TypeDef *Instance, uint32_t Channel)
568 {
569     /* Prevent unused argument(s) compilation warning */
570     LL_UNUSED(Instance);
571 
572     /* NOTE: This function should not be modified, when the callback is needed,
573              the LL_DAC_ConvDoneBCallback could be implemented in the user file
574      */
575 }
576 /**
577   * @}
578   */
579 
580 
581 /**
582   * @}
583   */
584 
585 /* Private functions ---------------------------------------------------------*/
586 
587 
588 #endif /* LL_DAC_MODULE_ENABLED */
589 
590 
591 /**
592   * @}
593   */
594 
595 /**
596   * @}
597   */
598 
599 
600 /************************* (C) COPYRIGHT Tai-Action *****END OF FILE***********/
601 
602