STM32L4xx_HAL_Driver  1.14.0
stm32l4xx_ll_dac.h
Go to the documentation of this file.
1 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32L4xx_LL_DAC_H
22 #define STM32L4xx_LL_DAC_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l4xx.h"
30 
35 #if defined (DAC1)
36 
41 /* Private types -------------------------------------------------------------*/
42 /* Private variables ---------------------------------------------------------*/
43 
44 /* Private constants ---------------------------------------------------------*/
49 /* Internal masks for DAC channels definition */
50 /* To select into literal LL_DAC_CHANNEL_x the relevant bits for: */
51 /* - channel bits position into registers CR, MCR, CCR, SHHR, SHRR */
52 /* - channel bits position into register SWTRIG */
53 /* - channel register offset of data holding register DHRx */
54 /* - channel register offset of data output register DORx */
55 /* - channel register offset of sample-and-hold sample time register SHSRx */
56 #define DAC_CR_CH1_BITOFFSET 0U /* Position of channel bits into registers CR, MCR, CCR, SHHR, SHRR of channel 1 */
57 #define DAC_CR_CH2_BITOFFSET 16U /* Position of channel bits into registers CR, MCR, CCR, SHHR, SHRR of channel 2 */
58 #define DAC_CR_CHX_BITOFFSET_MASK (DAC_CR_CH1_BITOFFSET | DAC_CR_CH2_BITOFFSET)
59 
60 #define DAC_SWTR_CH1 (DAC_SWTRIGR_SWTRIG1) /* Channel bit into register SWTRIGR of channel 1. */
61 #if defined(DAC_CHANNEL2_SUPPORT)
62 #define DAC_SWTR_CH2 (DAC_SWTRIGR_SWTRIG2) /* Channel bit into register SWTRIGR of channel 2. */
63 #define DAC_SWTR_CHX_MASK (DAC_SWTR_CH1 | DAC_SWTR_CH2)
64 #else
65 #define DAC_SWTR_CHX_MASK (DAC_SWTR_CH1)
66 #endif /* DAC_CHANNEL2_SUPPORT */
67 
68 #define DAC_REG_DHR12R1_REGOFFSET 0x00000000U /* Register DHR12Rx channel 1 taken as reference */
69 #define DAC_REG_DHR12L1_REGOFFSET 0x00100000U /* Register offset of DHR12Lx channel 1 versus DHR12Rx channel 1 (shifted left of 20 bits) */
70 #define DAC_REG_DHR8R1_REGOFFSET 0x02000000U /* Register offset of DHR8Rx channel 1 versus DHR12Rx channel 1 (shifted left of 24 bits) */
71 #if defined(DAC_CHANNEL2_SUPPORT)
72 #define DAC_REG_DHR12R2_REGOFFSET 0x30000000U /* Register offset of DHR12Rx channel 2 versus DHR12Rx channel 1 (shifted left of 28 bits) */
73 #define DAC_REG_DHR12L2_REGOFFSET 0x00400000U /* Register offset of DHR12Lx channel 2 versus DHR12Rx channel 1 (shifted left of 20 bits) */
74 #define DAC_REG_DHR8R2_REGOFFSET 0x05000000U /* Register offset of DHR8Rx channel 2 versus DHR12Rx channel 1 (shifted left of 24 bits) */
75 #endif /* DAC_CHANNEL2_SUPPORT */
76 #define DAC_REG_DHR12RX_REGOFFSET_MASK 0xF0000000U
77 #define DAC_REG_DHR12LX_REGOFFSET_MASK 0x00F00000U
78 #define DAC_REG_DHR8RX_REGOFFSET_MASK 0x0F000000U
79 #define DAC_REG_DHRX_REGOFFSET_MASK (DAC_REG_DHR12RX_REGOFFSET_MASK | DAC_REG_DHR12LX_REGOFFSET_MASK | DAC_REG_DHR8RX_REGOFFSET_MASK)
80 
81 #define DAC_REG_DOR1_REGOFFSET 0x00000000U /* Register DORx channel 1 taken as reference */
82 #if defined(DAC_CHANNEL2_SUPPORT)
83 #define DAC_REG_DOR2_REGOFFSET 0x00000020U /* Register offset of DORx channel 1 versus DORx channel 2 (shifted left of 5 bits) */
84 #define DAC_REG_DORX_REGOFFSET_MASK (DAC_REG_DOR1_REGOFFSET | DAC_REG_DOR2_REGOFFSET)
85 #else
86 #define DAC_REG_DORX_REGOFFSET_MASK (DAC_REG_DOR1_REGOFFSET)
87 #endif /* DAC_CHANNEL2_SUPPORT */
88 
89 #define DAC_REG_SHSR1_REGOFFSET 0x00000000U /* Register SHSRx channel 1 taken as reference */
90 #if defined(DAC_CHANNEL2_SUPPORT)
91 #define DAC_REG_SHSR2_REGOFFSET 0x00000040U /* Register offset of SHSRx channel 1 versus SHSRx channel 2 (shifted left of 6 bits) */
92 #define DAC_REG_SHSRX_REGOFFSET_MASK (DAC_REG_SHSR1_REGOFFSET | DAC_REG_SHSR2_REGOFFSET)
93 #else
94 #define DAC_REG_SHSRX_REGOFFSET_MASK (DAC_REG_SHSR1_REGOFFSET)
95 #endif /* DAC_CHANNEL2_SUPPORT */
96 
97 #define DAC_REG_DHR_REGOFFSET_MASK_POSBIT0 0x0000000FU /* Mask of data hold registers offset (DHR12Rx, DHR12Lx, DHR8Rx, ...) when shifted to position 0 */
98 #define DAC_REG_DORX_REGOFFSET_MASK_POSBIT0 0x00000001U /* Mask of DORx registers offset when shifted to position 0 */
99 #define DAC_REG_SHSRX_REGOFFSET_MASK_POSBIT0 0x00000001U /* Mask of SHSRx registers offset when shifted to position 0 */
100 
101 #define DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS 28U /* Position of bits register offset of DHR12Rx channel 1 or 2 versus DHR12Rx channel 1 (shifted left of 28 bits) */
102 #define DAC_REG_DHR12LX_REGOFFSET_BITOFFSET_POS 20U /* Position of bits register offset of DHR12Lx channel 1 or 2 versus DHR12Rx channel 1 (shifted left of 20 bits) */
103 #define DAC_REG_DHR8RX_REGOFFSET_BITOFFSET_POS 24U /* Position of bits register offset of DHR8Rx channel 1 or 2 versus DHR12Rx channel 1 (shifted left of 24 bits) */
104 #define DAC_REG_DORX_REGOFFSET_BITOFFSET_POS 5U /* Position of bits register offset of DORx channel 1 or 2 versus DORx channel 1 (shifted left of 5 bits) */
105 #define DAC_REG_SHSRX_REGOFFSET_BITOFFSET_POS 6U /* Position of bits register offset of SHSRx channel 1 or 2 versus SHSRx channel 1 (shifted left of 6 bits) */
106 
107 /* DAC registers bits positions */
108 #if defined(DAC_CHANNEL2_SUPPORT)
109 #define DAC_DHR12RD_DACC2DHR_BITOFFSET_POS DAC_DHR12RD_DACC2DHR_Pos
110 #define DAC_DHR12LD_DACC2DHR_BITOFFSET_POS DAC_DHR12LD_DACC2DHR_Pos
111 #define DAC_DHR8RD_DACC2DHR_BITOFFSET_POS DAC_DHR8RD_DACC2DHR_Pos
112 #endif /* DAC_CHANNEL2_SUPPORT */
113 
114 /* Miscellaneous data */
115 #define DAC_DIGITAL_SCALE_12BITS 4095U /* Full-scale digital value with a resolution of 12 bits (voltage range determined by analog voltage references Vref+ and Vref-, refer to reference manual) */
116 
122 /* Private macros ------------------------------------------------------------*/
135 #define __DAC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__) \
136  ((uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2U))))
137 
143 /* Exported types ------------------------------------------------------------*/
144 #if defined(USE_FULL_LL_DRIVER)
145 
152 typedef struct
153 {
154  uint32_t TriggerSource;
172  uint32_t OutputBuffer;
177  uint32_t OutputConnection;
182  uint32_t OutputMode;
187 
191 #endif /* USE_FULL_LL_DRIVER */
192 
193 /* Exported constants --------------------------------------------------------*/
202 /* DAC channel 1 flags */
203 #define LL_DAC_FLAG_DMAUDR1 (DAC_SR_DMAUDR1)
204 #define LL_DAC_FLAG_CAL1 (DAC_SR_CAL_FLAG1)
205 #define LL_DAC_FLAG_BWST1 (DAC_SR_BWST1)
207 #if defined(DAC_CHANNEL2_SUPPORT)
208 /* DAC channel 2 flags */
209 #define LL_DAC_FLAG_DMAUDR2 (DAC_SR_DMAUDR2)
210 #define LL_DAC_FLAG_CAL2 (DAC_SR_CAL_FLAG2)
211 #define LL_DAC_FLAG_BWST2 (DAC_SR_BWST2)
212 #endif /* DAC_CHANNEL2_SUPPORT */
213 
221 #define LL_DAC_IT_DMAUDRIE1 (DAC_CR_DMAUDRIE1)
222 #if defined(DAC_CHANNEL2_SUPPORT)
223 #define LL_DAC_IT_DMAUDRIE2 (DAC_CR_DMAUDRIE2)
224 #endif /* DAC_CHANNEL2_SUPPORT */
225 
232 #define LL_DAC_CHANNEL_1 (DAC_REG_SHSR1_REGOFFSET | DAC_REG_DOR1_REGOFFSET | DAC_REG_DHR12R1_REGOFFSET | DAC_REG_DHR12L1_REGOFFSET | DAC_REG_DHR8R1_REGOFFSET | DAC_CR_CH1_BITOFFSET | DAC_SWTR_CH1)
233 #if defined(DAC_CHANNEL2_SUPPORT)
234 #define LL_DAC_CHANNEL_2 (DAC_REG_SHSR2_REGOFFSET | DAC_REG_DOR2_REGOFFSET | DAC_REG_DHR12R2_REGOFFSET | DAC_REG_DHR12L2_REGOFFSET | DAC_REG_DHR8R2_REGOFFSET | DAC_CR_CH2_BITOFFSET | DAC_SWTR_CH2)
235 #endif /* DAC_CHANNEL2_SUPPORT */
236 
239 #if defined (DAC_CR_HFSEL) /* High frequency interface mode */
240 
245 #define LL_DAC_HIGH_FREQ_MODE_DISABLE 0x00000000U
246 #define LL_DAC_HIGH_FREQ_MODE_ABOVE_80MHZ (DAC_CR_HFSEL)
250 #endif /* High frequency interface mode */
251 
255 #define LL_DAC_MODE_NORMAL_OPERATION 0x00000000U
256 #define LL_DAC_MODE_CALIBRATION (DAC_CR_CEN1)
264 #if defined (DAC_CR_TSEL1_3)
265 #define LL_DAC_TRIG_EXT_TIM1_TRGO ( DAC_CR_TSEL1_0)
266 #define LL_DAC_TRIG_EXT_TIM2_TRGO ( DAC_CR_TSEL1_1 )
267 #define LL_DAC_TRIG_EXT_TIM4_TRGO ( DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0)
268 #define LL_DAC_TRIG_EXT_TIM5_TRGO ( DAC_CR_TSEL1_2 )
269 #define LL_DAC_TRIG_EXT_TIM6_TRGO ( DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0)
270 #define LL_DAC_TRIG_EXT_TIM7_TRGO ( DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 )
271 #define LL_DAC_TRIG_EXT_TIM8_TRGO ( DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0)
272 #define LL_DAC_TRIG_EXT_TIM15_TRGO (DAC_CR_TSEL1_3 )
273 #define LL_DAC_TRIG_EXT_LPTIM1_OUT (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0)
274 #define LL_DAC_TRIG_EXT_LPTIM2_OUT (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 )
275 #define LL_DAC_TRIG_EXT_EXTI_LINE9 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0)
276 #define LL_DAC_TRIG_SOFTWARE 0x00000000U
277 #else
278 #define LL_DAC_TRIG_SOFTWARE (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0)
279 #define LL_DAC_TRIG_EXT_TIM2_TRGO (DAC_CR_TSEL1_2 )
280 #define LL_DAC_TRIG_EXT_TIM4_TRGO (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0)
281 #define LL_DAC_TRIG_EXT_TIM5_TRGO ( DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0)
282 #define LL_DAC_TRIG_EXT_TIM6_TRGO 0x00000000U
283 #define LL_DAC_TRIG_EXT_TIM7_TRGO ( DAC_CR_TSEL1_1 )
284 #define LL_DAC_TRIG_EXT_TIM8_TRGO ( DAC_CR_TSEL1_0)
285 #define LL_DAC_TRIG_EXT_EXTI_LINE9 (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 )
286 #endif
287 
295 #define LL_DAC_WAVE_AUTO_GENERATION_NONE 0x00000000U
296 #define LL_DAC_WAVE_AUTO_GENERATION_NOISE ( DAC_CR_WAVE1_0)
297 #define LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE (DAC_CR_WAVE1_1 )
305 #define LL_DAC_NOISE_LFSR_UNMASK_BIT0 0x00000000U
306 #define LL_DAC_NOISE_LFSR_UNMASK_BITS1_0 ( DAC_CR_MAMP1_0)
307 #define LL_DAC_NOISE_LFSR_UNMASK_BITS2_0 ( DAC_CR_MAMP1_1 )
308 #define LL_DAC_NOISE_LFSR_UNMASK_BITS3_0 ( DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0)
309 #define LL_DAC_NOISE_LFSR_UNMASK_BITS4_0 ( DAC_CR_MAMP1_2 )
310 #define LL_DAC_NOISE_LFSR_UNMASK_BITS5_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_0)
311 #define LL_DAC_NOISE_LFSR_UNMASK_BITS6_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 )
312 #define LL_DAC_NOISE_LFSR_UNMASK_BITS7_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0)
313 #define LL_DAC_NOISE_LFSR_UNMASK_BITS8_0 (DAC_CR_MAMP1_3 )
314 #define LL_DAC_NOISE_LFSR_UNMASK_BITS9_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_0)
315 #define LL_DAC_NOISE_LFSR_UNMASK_BITS10_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 )
316 #define LL_DAC_NOISE_LFSR_UNMASK_BITS11_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0)
324 #define LL_DAC_TRIANGLE_AMPLITUDE_1 0x00000000U
325 #define LL_DAC_TRIANGLE_AMPLITUDE_3 ( DAC_CR_MAMP1_0)
326 #define LL_DAC_TRIANGLE_AMPLITUDE_7 ( DAC_CR_MAMP1_1 )
327 #define LL_DAC_TRIANGLE_AMPLITUDE_15 ( DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0)
328 #define LL_DAC_TRIANGLE_AMPLITUDE_31 ( DAC_CR_MAMP1_2 )
329 #define LL_DAC_TRIANGLE_AMPLITUDE_63 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_0)
330 #define LL_DAC_TRIANGLE_AMPLITUDE_127 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 )
331 #define LL_DAC_TRIANGLE_AMPLITUDE_255 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0)
332 #define LL_DAC_TRIANGLE_AMPLITUDE_511 (DAC_CR_MAMP1_3 )
333 #define LL_DAC_TRIANGLE_AMPLITUDE_1023 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_0)
334 #define LL_DAC_TRIANGLE_AMPLITUDE_2047 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 )
335 #define LL_DAC_TRIANGLE_AMPLITUDE_4095 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0)
343 #define LL_DAC_OUTPUT_MODE_NORMAL 0x00000000U
344 #define LL_DAC_OUTPUT_MODE_SAMPLE_AND_HOLD (DAC_MCR_MODE1_2)
352 #define LL_DAC_OUTPUT_BUFFER_ENABLE 0x00000000U
353 #define LL_DAC_OUTPUT_BUFFER_DISABLE (DAC_MCR_MODE1_1)
361 #define LL_DAC_OUTPUT_CONNECT_GPIO 0x00000000U
362 #define LL_DAC_OUTPUT_CONNECT_INTERNAL (DAC_MCR_MODE1_0)
370 #define LL_DAC_RESOLUTION_12B 0x00000000U
371 #define LL_DAC_RESOLUTION_8B 0x00000002U
379 /* List of DAC registers intended to be used (most commonly) with */
380 /* DMA transfer. */
381 /* Refer to function @ref LL_DAC_DMA_GetRegAddr(). */
382 #define LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS
383 #define LL_DAC_DMA_REG_DATA_12BITS_LEFT_ALIGNED DAC_REG_DHR12LX_REGOFFSET_BITOFFSET_POS
384 #define LL_DAC_DMA_REG_DATA_8BITS_RIGHT_ALIGNED DAC_REG_DHR8RX_REGOFFSET_BITOFFSET_POS
397 /* Delay for DAC channel voltage settling time from DAC channel startup */
398 /* (transition from disable to enable). */
399 /* Note: DAC channel startup time depends on board application environment: */
400 /* impedance connected to DAC channel output. */
401 /* The delay below is specified under conditions: */
402 /* - voltage maximum transition (lowest to highest value) */
403 /* - until voltage reaches final value +-1LSB */
404 /* - DAC channel output buffer enabled */
405 /* - load impedance of 5kOhm (min), 50pF (max) */
406 /* Literal set to maximum value (refer to device datasheet, */
407 /* parameter "tWAKEUP"). */
408 /* Unit: us */
409 #define LL_DAC_DELAY_STARTUP_VOLTAGE_SETTLING_US 8U
412 /* Delay for DAC channel voltage settling time. */
413 /* Note: DAC channel startup time depends on board application environment: */
414 /* impedance connected to DAC channel output. */
415 /* The delay below is specified under conditions: */
416 /* - voltage maximum transition (lowest to highest value) */
417 /* - until voltage reaches final value +-1LSB */
418 /* - DAC channel output buffer enabled */
419 /* - load impedance of 5kOhm min, 50pF max */
420 /* Literal set to maximum value (refer to device datasheet, */
421 /* parameter "tSETTLING"). */
422 /* Unit: us */
423 #define LL_DAC_DELAY_VOLTAGE_SETTLING_US 3U
433 /* Exported macro ------------------------------------------------------------*/
434 
449 #define LL_DAC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
450 
457 #define LL_DAC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
458 
480 #define __LL_DAC_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) \
481  ((__CHANNEL__) & DAC_SWTR_CHX_MASK)
482 
496 #if defined(DAC_CHANNEL2_SUPPORT)
497 #define __LL_DAC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__) \
498  (((__DECIMAL_NB__) == 1U) \
499  ? ( \
500  LL_DAC_CHANNEL_1 \
501  ) \
502  : \
503  (((__DECIMAL_NB__) == 2U) \
504  ? ( \
505  LL_DAC_CHANNEL_2 \
506  ) \
507  : \
508  ( \
509  0U \
510  ) \
511  ) \
512  )
513 #else
514 #define __LL_DAC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__) \
515  (((__DECIMAL_NB__) == 1U) \
516  ? ( \
517  LL_DAC_CHANNEL_1 \
518  ) \
519  : \
520  ( \
521  0U \
522  ) \
523  )
524 #endif /* DAC_CHANNEL2_SUPPORT */
525 
537 #define __LL_DAC_DIGITAL_SCALE(__DAC_RESOLUTION__) \
538  ((0x00000FFFU) >> ((__DAC_RESOLUTION__) << 1U))
539 
558 #define __LL_DAC_CALC_VOLTAGE_TO_DATA(__VREFANALOG_VOLTAGE__,\
559  __DAC_VOLTAGE__,\
560  __DAC_RESOLUTION__) \
561  ((__DAC_VOLTAGE__) * __LL_DAC_DIGITAL_SCALE(__DAC_RESOLUTION__) \
562  / (__VREFANALOG_VOLTAGE__) \
563  )
564 
574 /* Exported functions --------------------------------------------------------*/
579 #if defined (DAC_CR_HFSEL) /* High frequency interface mode */
580 
593 __STATIC_INLINE void LL_DAC_SetHighFrequencyMode(DAC_TypeDef *DACx, uint32_t HighFreqMode)
594 {
595  MODIFY_REG(DACx->CR, DAC_CR_HFSEL, HighFreqMode);
596 }
597 
606 __STATIC_INLINE uint32_t LL_DAC_GetHighFrequencyMode(DAC_TypeDef *DACx)
607 {
608  return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_HFSEL));
609 }
614 #endif /* High frequency interface mode */
615 
634 __STATIC_INLINE void LL_DAC_SetMode(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t ChannelMode)
635 {
636  MODIFY_REG(DACx->CR,
637  DAC_CR_CEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
638  ChannelMode << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
639 }
640 
654 __STATIC_INLINE uint32_t LL_DAC_GetMode(DAC_TypeDef *DACx, uint32_t DAC_Channel)
655 {
656  return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_CEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
657  >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
658  );
659 }
660 
674 __STATIC_INLINE void LL_DAC_SetTrimmingValue(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TrimmingValue)
675 {
676  MODIFY_REG(DACx->CCR,
677  DAC_CCR_OTRIM1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
678  TrimmingValue << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
679 }
680 
693 __STATIC_INLINE uint32_t LL_DAC_GetTrimmingValue(DAC_TypeDef *DACx, uint32_t DAC_Channel)
694 {
695  return (uint32_t)(READ_BIT(DACx->CCR, DAC_CCR_OTRIM1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
696  >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
697  );
698 }
699 
729 __STATIC_INLINE void LL_DAC_SetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TriggerSource)
730 {
731  MODIFY_REG(DACx->CR,
732  DAC_CR_TSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
733  TriggerSource << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
734 }
735 
765 __STATIC_INLINE uint32_t LL_DAC_GetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel)
766 {
767  return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_TSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
768  >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
769  );
770 }
771 
790 __STATIC_INLINE void LL_DAC_SetWaveAutoGeneration(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t WaveAutoGeneration)
791 {
792  MODIFY_REG(DACx->CR,
793  DAC_CR_WAVE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
794  WaveAutoGeneration << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
795 }
796 
814 __STATIC_INLINE uint32_t LL_DAC_GetWaveAutoGeneration(DAC_TypeDef *DACx, uint32_t DAC_Channel)
815 {
816  return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_WAVE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
817  >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
818  );
819 }
820 
853 __STATIC_INLINE void LL_DAC_SetWaveNoiseLFSR(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t NoiseLFSRMask)
854 {
855  MODIFY_REG(DACx->CR,
856  DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
857  NoiseLFSRMask << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
858 }
859 
886 __STATIC_INLINE uint32_t LL_DAC_GetWaveNoiseLFSR(DAC_TypeDef *DACx, uint32_t DAC_Channel)
887 {
888  return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
889  >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
890  );
891 }
892 
925 __STATIC_INLINE void LL_DAC_SetWaveTriangleAmplitude(DAC_TypeDef *DACx, uint32_t DAC_Channel,
926  uint32_t TriangleAmplitude)
927 {
928  MODIFY_REG(DACx->CR,
929  DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
930  TriangleAmplitude << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
931 }
932 
959 __STATIC_INLINE uint32_t LL_DAC_GetWaveTriangleAmplitude(DAC_TypeDef *DACx, uint32_t DAC_Channel)
960 {
961  return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
962  >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
963  );
964 }
965 
1013 __STATIC_INLINE void LL_DAC_ConfigOutput(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputMode,
1014  uint32_t OutputBuffer, uint32_t OutputConnection)
1015 {
1016  MODIFY_REG(DACx->MCR,
1017  (DAC_MCR_MODE1_2 | DAC_MCR_MODE1_1 | DAC_MCR_MODE1_0) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
1018  (OutputMode | OutputBuffer | OutputConnection) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
1019 }
1020 
1044 __STATIC_INLINE void LL_DAC_SetOutputMode(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputMode)
1045 {
1046  MODIFY_REG(DACx->MCR,
1047  (uint32_t)DAC_MCR_MODE1_2 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
1048  OutputMode << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
1049 }
1050 
1066 __STATIC_INLINE uint32_t LL_DAC_GetOutputMode(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1067 {
1068  return (uint32_t)(READ_BIT(DACx->MCR, (uint32_t)DAC_MCR_MODE1_2 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
1069  >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
1070  );
1071 }
1072 
1093 __STATIC_INLINE void LL_DAC_SetOutputBuffer(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputBuffer)
1094 {
1095  MODIFY_REG(DACx->MCR,
1096  (uint32_t)DAC_MCR_MODE1_1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
1097  OutputBuffer << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
1098 }
1099 
1115 __STATIC_INLINE uint32_t LL_DAC_GetOutputBuffer(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1116 {
1117  return (uint32_t)(READ_BIT(DACx->MCR, (uint32_t)DAC_MCR_MODE1_1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
1118  >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
1119  );
1120 }
1121 
1148 __STATIC_INLINE void LL_DAC_SetOutputConnection(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputConnection)
1149 {
1150  MODIFY_REG(DACx->MCR,
1151  (uint32_t)DAC_MCR_MODE1_0 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
1152  OutputConnection << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
1153 }
1154 
1180 __STATIC_INLINE uint32_t LL_DAC_GetOutputConnection(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1181 {
1182  return (uint32_t)(READ_BIT(DACx->MCR, (uint32_t)DAC_MCR_MODE1_0 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
1183  >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
1184  );
1185 }
1186 
1206 __STATIC_INLINE void LL_DAC_SetSampleAndHoldSampleTime(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t SampleTime)
1207 {
1208  __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->SHSR1, (DAC_Channel >> DAC_REG_SHSRX_REGOFFSET_BITOFFSET_POS) & DAC_REG_SHSRX_REGOFFSET_MASK_POSBIT0);
1209 
1210  MODIFY_REG(*preg,
1211  DAC_SHSR1_TSAMPLE1,
1212  SampleTime);
1213 }
1214 
1229 __STATIC_INLINE uint32_t LL_DAC_GetSampleAndHoldSampleTime(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1230 {
1231  __IO uint32_t const *preg = __DAC_PTR_REG_OFFSET(DACx->SHSR1, (DAC_Channel >> DAC_REG_SHSRX_REGOFFSET_BITOFFSET_POS) & DAC_REG_SHSRX_REGOFFSET_MASK_POSBIT0);
1232 
1233  return (uint32_t) READ_BIT(*preg, DAC_SHSR1_TSAMPLE1);
1234 }
1235 
1251 __STATIC_INLINE void LL_DAC_SetSampleAndHoldHoldTime(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t HoldTime)
1252 {
1253  MODIFY_REG(DACx->SHHR,
1254  DAC_SHHR_THOLD1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
1255  HoldTime << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
1256 }
1257 
1272 __STATIC_INLINE uint32_t LL_DAC_GetSampleAndHoldHoldTime(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1273 {
1274  return (uint32_t)(READ_BIT(DACx->SHHR, DAC_SHHR_THOLD1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
1275  >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
1276  );
1277 }
1278 
1294 __STATIC_INLINE void LL_DAC_SetSampleAndHoldRefreshTime(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t RefreshTime)
1295 {
1296  MODIFY_REG(DACx->SHRR,
1297  DAC_SHRR_TREFRESH1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
1298  RefreshTime << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
1299 }
1300 
1315 __STATIC_INLINE uint32_t LL_DAC_GetSampleAndHoldRefreshTime(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1316 {
1317  return (uint32_t)(READ_BIT(DACx->SHRR, DAC_SHRR_TREFRESH1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
1318  >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
1319  );
1320 }
1321 
1345 __STATIC_INLINE void LL_DAC_EnableDMAReq(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1346 {
1347  SET_BIT(DACx->CR,
1348  DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
1349 }
1350 
1366 __STATIC_INLINE void LL_DAC_DisableDMAReq(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1367 {
1368  CLEAR_BIT(DACx->CR,
1369  DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
1370 }
1371 
1386 __STATIC_INLINE uint32_t LL_DAC_IsDMAReqEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1387 {
1388  return ((READ_BIT(DACx->CR,
1389  DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
1390  == (DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL);
1391 }
1392 
1427 __STATIC_INLINE uint32_t LL_DAC_DMA_GetRegAddr(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Register)
1428 {
1429  /* Retrieve address of register DHR12Rx, DHR12Lx or DHR8Rx depending on */
1430  /* DAC channel selected. */
1431  return ((uint32_t)(__DAC_PTR_REG_OFFSET((DACx)->DHR12R1,
1432  ((DAC_Channel >> (Register & 0x1FUL)) & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0))));
1433 }
1458 __STATIC_INLINE void LL_DAC_Enable(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1459 {
1460  SET_BIT(DACx->CR,
1461  DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
1462 }
1463 
1477 __STATIC_INLINE void LL_DAC_Disable(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1478 {
1479  CLEAR_BIT(DACx->CR,
1480  DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
1481 }
1482 
1497 __STATIC_INLINE uint32_t LL_DAC_IsEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1498 {
1499  return ((READ_BIT(DACx->CR,
1500  DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
1501  == (DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL);
1502 }
1503 
1525 __STATIC_INLINE void LL_DAC_EnableTrigger(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1526 {
1527  SET_BIT(DACx->CR,
1528  DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
1529 }
1530 
1544 __STATIC_INLINE void LL_DAC_DisableTrigger(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1545 {
1546  CLEAR_BIT(DACx->CR,
1547  DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
1548 }
1549 
1564 __STATIC_INLINE uint32_t LL_DAC_IsTriggerEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1565 {
1566  return ((READ_BIT(DACx->CR,
1567  DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
1568  == (DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL);
1569 }
1570 
1595 __STATIC_INLINE void LL_DAC_TrigSWConversion(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1596 {
1597  SET_BIT(DACx->SWTRIGR,
1598  (DAC_Channel & DAC_SWTR_CHX_MASK));
1599 }
1600 
1617 __STATIC_INLINE void LL_DAC_ConvertData12RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
1618 {
1619  __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS) & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0);
1620 
1621  MODIFY_REG(*preg,
1622  DAC_DHR12R1_DACC1DHR,
1623  Data);
1624 }
1625 
1642 __STATIC_INLINE void LL_DAC_ConvertData12LeftAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
1643 {
1644  __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR12LX_REGOFFSET_BITOFFSET_POS) & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0);
1645 
1646  MODIFY_REG(*preg,
1647  DAC_DHR12L1_DACC1DHR,
1648  Data);
1649 }
1650 
1667 __STATIC_INLINE void LL_DAC_ConvertData8RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
1668 {
1669  __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR8RX_REGOFFSET_BITOFFSET_POS) & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0);
1670 
1671  MODIFY_REG(*preg,
1672  DAC_DHR8R1_DACC1DHR,
1673  Data);
1674 }
1675 
1676 #if defined(DAC_CHANNEL2_SUPPORT)
1677 
1688 __STATIC_INLINE void LL_DAC_ConvertDualData12RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1,
1689  uint32_t DataChannel2)
1690 {
1691  MODIFY_REG(DACx->DHR12RD,
1692  (DAC_DHR12RD_DACC2DHR | DAC_DHR12RD_DACC1DHR),
1693  ((DataChannel2 << DAC_DHR12RD_DACC2DHR_BITOFFSET_POS) | DataChannel1));
1694 }
1695 
1707 __STATIC_INLINE void LL_DAC_ConvertDualData12LeftAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, uint32_t DataChannel2)
1708 {
1709  /* Note: Data of DAC channel 2 shift value subtracted of 4 because */
1710  /* data on 16 bits and DAC channel 2 bits field is on the 12 MSB, */
1711  /* the 4 LSB must be taken into account for the shift value. */
1712  MODIFY_REG(DACx->DHR12LD,
1713  (DAC_DHR12LD_DACC2DHR | DAC_DHR12LD_DACC1DHR),
1714  ((DataChannel2 << (DAC_DHR12LD_DACC2DHR_BITOFFSET_POS - 4U)) | DataChannel1));
1715 }
1716 
1728 __STATIC_INLINE void LL_DAC_ConvertDualData8RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, uint32_t DataChannel2)
1729 {
1730  MODIFY_REG(DACx->DHR8RD,
1731  (DAC_DHR8RD_DACC2DHR | DAC_DHR8RD_DACC1DHR),
1732  ((DataChannel2 << DAC_DHR8RD_DACC2DHR_BITOFFSET_POS) | DataChannel1));
1733 }
1734 
1735 #endif /* DAC_CHANNEL2_SUPPORT */
1736 
1753 __STATIC_INLINE uint32_t LL_DAC_RetrieveOutputData(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1754 {
1755  __IO uint32_t const *preg = __DAC_PTR_REG_OFFSET(DACx->DOR1, (DAC_Channel >> DAC_REG_DORX_REGOFFSET_BITOFFSET_POS) & DAC_REG_DORX_REGOFFSET_MASK_POSBIT0);
1756 
1757  return (uint16_t) READ_BIT(*preg, DAC_DOR1_DACC1DOR);
1758 }
1759 
1773 __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_CAL1(DAC_TypeDef *DACx)
1774 {
1775  return ((READ_BIT(DACx->SR, LL_DAC_FLAG_CAL1) == (LL_DAC_FLAG_CAL1)) ? 1UL : 0UL);
1776 }
1777 
1778 #if defined(DAC_CHANNEL2_SUPPORT)
1779 
1785 __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_CAL2(DAC_TypeDef *DACx)
1786 {
1787  return ((READ_BIT(DACx->SR, LL_DAC_FLAG_CAL2) == (LL_DAC_FLAG_CAL2)) ? 1UL : 0UL);
1788 }
1789 
1790 #endif /* DAC_CHANNEL2_SUPPORT */
1791 
1797 __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_BWST1(DAC_TypeDef *DACx)
1798 {
1799  return ((READ_BIT(DACx->SR, LL_DAC_FLAG_BWST1) == (LL_DAC_FLAG_BWST1)) ? 1UL : 0UL);
1800 }
1801 
1802 #if defined(DAC_CHANNEL2_SUPPORT)
1803 
1809 __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_BWST2(DAC_TypeDef *DACx)
1810 {
1811  return ((READ_BIT(DACx->SR, LL_DAC_FLAG_BWST2) == (LL_DAC_FLAG_BWST2)) ? 1UL : 0UL);
1812 }
1813 
1814 #endif /* DAC_CHANNEL2_SUPPORT */
1815 
1821 __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR1(DAC_TypeDef *DACx)
1822 {
1823  return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR1) == (LL_DAC_FLAG_DMAUDR1)) ? 1UL : 0UL);
1824 }
1825 
1826 #if defined(DAC_CHANNEL2_SUPPORT)
1827 
1833 __STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR2(DAC_TypeDef *DACx)
1834 {
1835  return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR2) == (LL_DAC_FLAG_DMAUDR2)) ? 1UL : 0UL);
1836 }
1837 #endif /* DAC_CHANNEL2_SUPPORT */
1838 
1845 __STATIC_INLINE void LL_DAC_ClearFlag_DMAUDR1(DAC_TypeDef *DACx)
1846 {
1847  WRITE_REG(DACx->SR, LL_DAC_FLAG_DMAUDR1);
1848 }
1849 
1850 #if defined(DAC_CHANNEL2_SUPPORT)
1851 
1857 __STATIC_INLINE void LL_DAC_ClearFlag_DMAUDR2(DAC_TypeDef *DACx)
1858 {
1859  WRITE_REG(DACx->SR, LL_DAC_FLAG_DMAUDR2);
1860 }
1861 #endif /* DAC_CHANNEL2_SUPPORT */
1862 
1877 __STATIC_INLINE void LL_DAC_EnableIT_DMAUDR1(DAC_TypeDef *DACx)
1878 {
1879  SET_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1);
1880 }
1881 
1882 #if defined(DAC_CHANNEL2_SUPPORT)
1883 
1889 __STATIC_INLINE void LL_DAC_EnableIT_DMAUDR2(DAC_TypeDef *DACx)
1890 {
1891  SET_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2);
1892 }
1893 #endif /* DAC_CHANNEL2_SUPPORT */
1894 
1901 __STATIC_INLINE void LL_DAC_DisableIT_DMAUDR1(DAC_TypeDef *DACx)
1902 {
1903  CLEAR_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1);
1904 }
1905 
1906 #if defined(DAC_CHANNEL2_SUPPORT)
1907 
1913 __STATIC_INLINE void LL_DAC_DisableIT_DMAUDR2(DAC_TypeDef *DACx)
1914 {
1915  CLEAR_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2);
1916 }
1917 #endif /* DAC_CHANNEL2_SUPPORT */
1918 
1925 __STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR1(DAC_TypeDef *DACx)
1926 {
1927  return ((READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1) == (LL_DAC_IT_DMAUDRIE1)) ? 1UL : 0UL);
1928 }
1929 
1930 #if defined(DAC_CHANNEL2_SUPPORT)
1931 
1937 __STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR2(DAC_TypeDef *DACx)
1938 {
1939  return ((READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2) == (LL_DAC_IT_DMAUDRIE2)) ? 1UL : 0UL);
1940 }
1941 #endif /* DAC_CHANNEL2_SUPPORT */
1942 
1947 #if defined(USE_FULL_LL_DRIVER)
1948 
1952 ErrorStatus LL_DAC_DeInit(DAC_TypeDef *DACx);
1953 ErrorStatus LL_DAC_Init(DAC_TypeDef *DACx, uint32_t DAC_Channel, LL_DAC_InitTypeDef *DAC_InitStruct);
1954 void LL_DAC_StructInit(LL_DAC_InitTypeDef *DAC_InitStruct);
1955 
1959 #endif /* USE_FULL_LL_DRIVER */
1960 
1969 #endif /* DAC1 */
1970 
1975 #ifdef __cplusplus
1976 }
1977 #endif
1978 
1979 #endif /* STM32L4xx_LL_DAC_H */
1980 
1981 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
__STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR2(DAC_TypeDef *DACx)
Get DMA underrun interrupt for DAC channel 2 CR DMAUDRIE2 LL_DAC_IsEnabledIT_DMAUDR2.
__STATIC_INLINE void LL_DAC_SetWaveNoiseLFSR(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t NoiseLFSRMask)
Set the noise waveform generation for the selected DAC channel: Noise mode and parameters LFSR (linea...
Structure definition of some features of DAC instance.
__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR2(DAC_TypeDef *DACx)
Get DAC underrun flag for DAC channel 2 SR DMAUDR2 LL_DAC_IsActiveFlag_DMAUDR2.
__STATIC_INLINE void LL_DAC_SetHighFrequencyMode(DAC_TypeDef *DACx, uint32_t HighFreqMode)
Set the high frequency interface mode for the selected DAC instance CR HFSEL LL_DAC_SetHighFrequency...
__STATIC_INLINE void LL_DAC_SetOutputMode(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputMode)
Set the output mode normal or sample-and-hold for the selected DAC channel.
__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_BWST1(DAC_TypeDef *DACx)
Get DAC busy writing sample time flag for DAC channel 1 SR BWST1 LL_DAC_IsActiveFlag_BWST1.
__STATIC_INLINE void LL_DAC_SetTrimmingValue(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TrimmingValue)
Set the offset trimming value for the selected DAC channel. Trimming has an impact when output buffer...
__STATIC_INLINE void LL_DAC_SetWaveAutoGeneration(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t WaveAutoGeneration)
Set the waveform automatic generation mode for the selected DAC channel. CR WAVE1 LL_DAC_SetWaveAuto...
__STATIC_INLINE void LL_DAC_ClearFlag_DMAUDR2(DAC_TypeDef *DACx)
Clear DAC underrun flag for DAC channel 2 SR DMAUDR2 LL_DAC_ClearFlag_DMAUDR2.
__STATIC_INLINE void LL_DAC_EnableIT_DMAUDR1(DAC_TypeDef *DACx)
Enable DMA underrun interrupt for DAC channel 1 CR DMAUDRIE1 LL_DAC_EnableIT_DMAUDR1.
__STATIC_INLINE void LL_DAC_SetSampleAndHoldHoldTime(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t HoldTime)
Set the sample-and-hold timing for the selected DAC channel: hold time SHHR THOLD1 LL_DAC_SetSampleA...
__STATIC_INLINE uint32_t LL_DAC_GetWaveNoiseLFSR(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get the noise waveform generation for the selected DAC channel: Noise mode and parameters LFSR (linea...
__STATIC_INLINE void LL_DAC_DisableTrigger(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Disable DAC trigger of the selected channel. CR TEN1 LL_DAC_DisableTrigger CR TEN2 LL_DAC_DisableTr...
void LL_DAC_StructInit(LL_DAC_InitTypeDef *DAC_InitStruct)
Set each LL_DAC_InitTypeDef field to default value.
__STATIC_INLINE void LL_DAC_ConvertDualData12LeftAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, uint32_t DataChannel2)
Set the data to be loaded in the data holding register in format 12 bits left alignment (MSB aligned ...
__STATIC_INLINE uint32_t LL_DAC_IsDMAReqEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get DAC DMA transfer request state of the selected channel. (0: DAC DMA transfer request is disabled...
ErrorStatus LL_DAC_DeInit(DAC_TypeDef *DACx)
De-initialize registers of the selected DAC instance to their default reset values.
__STATIC_INLINE uint32_t LL_DAC_GetSampleAndHoldHoldTime(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get the sample-and-hold timing for the selected DAC channel: hold time SHHR THOLD1 LL_DAC_GetSampleA...
__STATIC_INLINE uint32_t LL_DAC_GetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get the conversion trigger source for the selected DAC channel.
__STATIC_INLINE void LL_DAC_SetSampleAndHoldRefreshTime(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t RefreshTime)
Set the sample-and-hold timing for the selected DAC channel: refresh time SHRR TREFRESH1 LL_DAC_SetS...
__STATIC_INLINE void LL_DAC_ConvertData8RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
Set the data to be loaded in the data holding register in format 8 bits left alignment (LSB aligned o...
__STATIC_INLINE void LL_DAC_ConfigOutput(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputMode, uint32_t OutputBuffer, uint32_t OutputConnection)
Set the output for the selected DAC channel.
__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_CAL1(DAC_TypeDef *DACx)
Get DAC calibration offset flag for DAC channel 1 SR CAL_FLAG1 LL_DAC_IsActiveFlag_CAL1.
__STATIC_INLINE uint32_t LL_DAC_GetTrimmingValue(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get the offset trimming value for the selected DAC channel. Trimming has an impact when output buffer...
__STATIC_INLINE void LL_DAC_EnableDMAReq(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Enable DAC DMA transfer request of the selected channel.
__STATIC_INLINE uint32_t LL_DAC_DMA_GetRegAddr(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Register)
Function to help to configure DMA transfer to DAC: retrieve the DAC register address from DAC instanc...
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
__STATIC_INLINE uint32_t LL_DAC_GetWaveTriangleAmplitude(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get the triangle waveform generation for the selected DAC channel: triangle mode and amplitude...
__STATIC_INLINE void LL_DAC_DisableDMAReq(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Disable DAC DMA transfer request of the selected channel.
__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR1(DAC_TypeDef *DACx)
Get DAC underrun flag for DAC channel 1 SR DMAUDR1 LL_DAC_IsActiveFlag_DMAUDR1.
__STATIC_INLINE void LL_DAC_SetMode(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t ChannelMode)
Set the operating mode for the selected DAC channel: calibration or normal operating mode...
__STATIC_INLINE uint32_t LL_DAC_GetOutputBuffer(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get the output buffer state for the selected DAC channel. CR MODE1 LL_DAC_GetOutputBuffer CR MODE2 ...
__STATIC_INLINE void LL_DAC_EnableTrigger(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Enable DAC trigger of the selected channel.
__STATIC_INLINE void LL_DAC_DisableIT_DMAUDR2(DAC_TypeDef *DACx)
Disable DMA underrun interrupt for DAC channel 2 CR DMAUDRIE2 LL_DAC_DisableIT_DMAUDR2.
__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_CAL2(DAC_TypeDef *DACx)
Get DAC calibration offset flag for DAC channel 2 SR CAL_FLAG2 LL_DAC_IsActiveFlag_CAL2.
__STATIC_INLINE uint32_t LL_DAC_GetSampleAndHoldRefreshTime(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get the sample-and-hold timing for the selected DAC channel: refresh time SHRR TREFRESH1 LL_DAC_GetS...
__STATIC_INLINE uint32_t LL_DAC_GetHighFrequencyMode(DAC_TypeDef *DACx)
Get the high frequency interface mode for the selected DAC instance CR HFSEL LL_DAC_GetHighFrequency...
__STATIC_INLINE void LL_DAC_SetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TriggerSource)
Set the conversion trigger source for the selected DAC channel.
__STATIC_INLINE void LL_DAC_EnableIT_DMAUDR2(DAC_TypeDef *DACx)
Enable DMA underrun interrupt for DAC channel 2 CR DMAUDRIE2 LL_DAC_EnableIT_DMAUDR2.
__STATIC_INLINE uint32_t LL_DAC_RetrieveOutputData(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Retrieve output data currently generated for the selected DAC channel.
__STATIC_INLINE void LL_DAC_ConvertData12LeftAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
Set the data to be loaded in the data holding register in format 12 bits left alignment (MSB aligned ...
__STATIC_INLINE void LL_DAC_SetSampleAndHoldSampleTime(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t SampleTime)
Set the sample-and-hold timing for the selected DAC channel: sample time.
__STATIC_INLINE uint32_t LL_DAC_IsTriggerEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get DAC trigger state of the selected channel. (0: DAC trigger is disabled, 1: DAC trigger is enabled...
__STATIC_INLINE void LL_DAC_DisableIT_DMAUDR1(DAC_TypeDef *DACx)
Disable DMA underrun interrupt for DAC channel 1 CR DMAUDRIE1 LL_DAC_DisableIT_DMAUDR1.
__STATIC_INLINE uint32_t LL_DAC_GetMode(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get the operating mode for the selected DAC channel: calibration or normal operating mode...
__STATIC_INLINE void LL_DAC_SetOutputBuffer(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputBuffer)
Set the output buffer for the selected DAC channel.
__STATIC_INLINE void LL_DAC_ConvertDualData8RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, uint32_t DataChannel2)
Set the data to be loaded in the data holding register in format 8 bits left alignment (LSB aligned o...
__STATIC_INLINE void LL_DAC_SetWaveTriangleAmplitude(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TriangleAmplitude)
Set the triangle waveform generation for the selected DAC channel: triangle mode and amplitude...
__STATIC_INLINE uint32_t LL_DAC_GetOutputConnection(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get the output connection for the selected DAC channel.
ErrorStatus LL_DAC_Init(DAC_TypeDef *DACx, uint32_t DAC_Channel, LL_DAC_InitTypeDef *DAC_InitStruct)
Initialize some features of DAC channel.
uint32_t WaveAutoGenerationConfig
__STATIC_INLINE void LL_DAC_ClearFlag_DMAUDR1(DAC_TypeDef *DACx)
Clear DAC underrun flag for DAC channel 1 SR DMAUDR1 LL_DAC_ClearFlag_DMAUDR1.
__STATIC_INLINE uint32_t LL_DAC_GetSampleAndHoldSampleTime(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get the sample-and-hold timing for the selected DAC channel: sample time SHSR1 TSAMPLE1 LL_DAC_GetSa...
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
__STATIC_INLINE void LL_DAC_TrigSWConversion(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Trig DAC conversion by software for the selected DAC channel.
__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_BWST2(DAC_TypeDef *DACx)
Get DAC busy writing sample time flag for DAC channel 2 SR BWST2 LL_DAC_IsActiveFlag_BWST2.
__STATIC_INLINE void LL_DAC_ConvertDualData12RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, uint32_t DataChannel2)
Set the data to be loaded in the data holding register in format 12 bits left alignment (LSB aligned ...
__STATIC_INLINE uint32_t LL_DAC_GetWaveAutoGeneration(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get the waveform automatic generation mode for the selected DAC channel. CR WAVE1 LL_DAC_GetWaveAuto...
__STATIC_INLINE void LL_DAC_ConvertData12RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
Set the data to be loaded in the data holding register in format 12 bits left alignment (LSB aligned ...
__STATIC_INLINE void LL_DAC_SetOutputConnection(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputConnection)
Set the output connection for the selected DAC channel.
__STATIC_INLINE void LL_DAC_Enable(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Enable DAC selected channel. CR EN1 LL_DAC_Enable CR EN2 LL_DAC_Enable.
__STATIC_INLINE uint32_t LL_DAC_IsEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get DAC enable state of the selected channel. (0: DAC channel is disabled, 1: DAC channel is enabled)...
__STATIC_INLINE uint32_t LL_DAC_GetOutputMode(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Get the output mode normal or sample-and-hold for the selected DAC channel. CR MODE1 LL_DAC_GetOutpu...
__STATIC_INLINE void LL_DAC_Disable(DAC_TypeDef *DACx, uint32_t DAC_Channel)
Disable DAC selected channel. CR EN1 LL_DAC_Disable CR EN2 LL_DAC_Disable.
__STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR1(DAC_TypeDef *DACx)
Get DMA underrun interrupt for DAC channel 1 CR DMAUDRIE1 LL_DAC_IsEnabledIT_DMAUDR1.