Subversion Repositories LedShow

Rev

Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 9
Line 4... Line 4...
4
  * @author  MCD Application Team
4
  * @author  MCD Application Team
5
  * @brief   Header file of DAC LL module.
5
  * @brief   Header file of DAC LL module.
6
  ******************************************************************************
6
  ******************************************************************************
7
  * @attention
7
  * @attention
8
  *
8
  *
9
  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
9
  * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
-
 
10
  * All rights reserved.</center></h2>
10
  *
11
  *
11
  * Redistribution and use in source and binary forms, with or without modification,
12
  * This software component is licensed by ST under BSD 3-Clause license,
12
  * are permitted provided that the following conditions are met:
13
  * the "License"; You may not use this file except in compliance with the
13
  *   1. Redistributions of source code must retain the above copyright notice,
-
 
14
  *      this list of conditions and the following disclaimer.
-
 
15
  *   2. Redistributions in binary form must reproduce the above copyright notice,
-
 
16
  *      this list of conditions and the following disclaimer in the documentation
-
 
17
  *      and/or other materials provided with the distribution.
14
  * License. You may obtain a copy of the License at:
18
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
-
 
19
  *      may be used to endorse or promote products derived from this software
15
  *                        opensource.org/licenses/BSD-3-Clause
20
  *      without specific prior written permission.
-
 
21
  *
-
 
22
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
 
23
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
 
24
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-
 
25
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-
 
26
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-
 
27
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-
 
28
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-
 
29
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-
 
30
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-
 
31
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
 
32
  *
16
  *
33
  ******************************************************************************
17
  ******************************************************************************
34
  */
18
  */
35
 
19
 
36
/* Define to prevent recursive inclusion -------------------------------------*/
20
/* Define to prevent recursive inclusion -------------------------------------*/
37
#ifndef __STM32F1xx_LL_DAC_H
21
#ifndef STM32F1xx_LL_DAC_H
38
#define __STM32F1xx_LL_DAC_H
22
#define STM32F1xx_LL_DAC_H
39
 
23
 
40
#ifdef __cplusplus
24
#ifdef __cplusplus
41
extern "C" {
25
extern "C" {
42
#endif
26
#endif
43
 
27
 
Line 46... Line 30...
46
 
30
 
47
/** @addtogroup STM32F1xx_LL_Driver
31
/** @addtogroup STM32F1xx_LL_Driver
48
  * @{
32
  * @{
49
  */
33
  */
50
 
34
 
51
#if defined (DAC)
35
#if defined(DAC)
52
 
36
 
53
/** @defgroup DAC_LL DAC
37
/** @defgroup DAC_LL DAC
54
  * @{
38
  * @{
55
  */
39
  */
56
 
40
 
Line 62... Line 46...
62
  * @{
46
  * @{
63
  */
47
  */
64
 
48
 
65
/* Internal masks for DAC channels definition */
49
/* Internal masks for DAC channels definition */
66
/* To select into literal LL_DAC_CHANNEL_x the relevant bits for:             */
50
/* To select into literal LL_DAC_CHANNEL_x the relevant bits for:             */
67
/* - channel bits position into register CR                                   */
51
/* - channel bits position into registers CR, MCR, CCR, SHHR, SHRR            */
68
/* - channel bits position into register SWTRIG                               */
52
/* - channel bits position into register SWTRIG                               */
69
/* - channel register offset of data holding register DHRx                    */
53
/* - channel register offset of data holding register DHRx                    */
70
/* - channel register offset of data output register DORx                     */
54
/* - channel register offset of data output register DORx                     */
71
#define DAC_CR_CH1_BITOFFSET           0U    /* Position of channel bits into registers CR, MCR, CCR, SHHR, SHRR of channel 1 */
55
#define DAC_CR_CH1_BITOFFSET           0U    /* Position of channel bits into registers CR, MCR, CCR, SHHR, SHRR of channel 1 */
72
#define DAC_CR_CH2_BITOFFSET           16U   /* Position of channel bits into registers CR, MCR, CCR, SHHR, SHRR of channel 2 */
56
#define DAC_CR_CH2_BITOFFSET           16U   /* Position of channel bits into registers CR, MCR, CCR, SHHR, SHRR of channel 2 */
73
#define DAC_CR_CHX_BITOFFSET_MASK      (DAC_CR_CH1_BITOFFSET | DAC_CR_CH2_BITOFFSET)
57
#define DAC_CR_CHX_BITOFFSET_MASK      (DAC_CR_CH1_BITOFFSET | DAC_CR_CH2_BITOFFSET)
74
 
58
 
75
#define DAC_SWTR_CH1                   (DAC_SWTRIGR_SWTRIG1) /* Channel bit into register SWTRIGR of channel 1. This bit is into area of LL_DAC_CR_CHx_BITOFFSET but excluded by mask DAC_CR_CHX_BITOFFSET_MASK (done to be enable to trig SW start of both DAC channels simultaneously). */
59
#define DAC_SWTR_CH1                   (DAC_SWTRIGR_SWTRIG1) /* Channel bit into register SWTRIGR of channel 1. */
76
#define DAC_SWTR_CH2                   (DAC_SWTRIGR_SWTRIG2) /* Channel bit into register SWTRIGR of channel 2. This bit is into area of LL_DAC_CR_CHx_BITOFFSET but excluded by mask DAC_CR_CHX_BITOFFSET_MASK (done to be enable to trig SW start of both DAC channels simultaneously). */
60
#define DAC_SWTR_CH2                   (DAC_SWTRIGR_SWTRIG2) /* Channel bit into register SWTRIGR of channel 2. */
77
#define DAC_SWTR_CHX_MASK              (DAC_SWTR_CH1 | DAC_SWTR_CH2)
61
#define DAC_SWTR_CHX_MASK              (DAC_SWTR_CH1 | DAC_SWTR_CH2)
78
 
62
 
79
#define DAC_REG_DHR12R1_REGOFFSET      0x00000000U             /* Register DHR12Rx channel 1 taken as reference */
63
#define DAC_REG_DHR12R1_REGOFFSET      0x00000000U             /* Register DHR12Rx channel 1 taken as reference */
80
#define DAC_REG_DHR12L1_REGOFFSET      0x00100000U             /* Register offset of DHR12Lx channel 1 versus DHR12Rx channel 1 (shifted left of 20 bits) */
64
#define DAC_REG_DHR12L1_REGOFFSET      0x00100000U             /* Register offset of DHR12Lx channel 1 versus DHR12Rx channel 1 (shifted left of 20 bits) */
81
#define DAC_REG_DHR8R1_REGOFFSET       0x02000000U             /* Register offset of DHR8Rx  channel 1 versus DHR12Rx channel 1 (shifted left of 24 bits) */
65
#define DAC_REG_DHR8R1_REGOFFSET       0x02000000U             /* Register offset of DHR8Rx  channel 1 versus DHR12Rx channel 1 (shifted left of 24 bits) */
Line 89... Line 73...
89
 
73
 
90
#define DAC_REG_DOR1_REGOFFSET         0x00000000U             /* Register DORx channel 1 taken as reference */
74
#define DAC_REG_DOR1_REGOFFSET         0x00000000U             /* Register DORx channel 1 taken as reference */
91
#define DAC_REG_DOR2_REGOFFSET         0x10000000U             /* Register offset of DORx channel 1 versus DORx channel 2 (shifted left of 28 bits) */
75
#define DAC_REG_DOR2_REGOFFSET         0x10000000U             /* Register offset of DORx channel 1 versus DORx channel 2 (shifted left of 28 bits) */
92
#define DAC_REG_DORX_REGOFFSET_MASK    (DAC_REG_DOR1_REGOFFSET | DAC_REG_DOR2_REGOFFSET)
76
#define DAC_REG_DORX_REGOFFSET_MASK    (DAC_REG_DOR1_REGOFFSET | DAC_REG_DOR2_REGOFFSET)
93
 
77
 
-
 
78
 
-
 
79
#define DAC_REG_DHR_REGOFFSET_MASK_POSBIT0         0x0000000FU  /* Mask of data hold registers offset (DHR12Rx, DHR12Lx, DHR8Rx, ...) when shifted to position 0 */
-
 
80
#define DAC_REG_DORX_REGOFFSET_MASK_POSBIT0        0x00000001U  /* Mask of DORx registers offset when shifted to position 0 */
-
 
81
#define DAC_REG_SHSRX_REGOFFSET_MASK_POSBIT0       0x00000001U  /* Mask of SHSRx registers offset when shifted to position 0 */
-
 
82
 
-
 
83
#define DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS           16U   /* Position of bits register offset of DHR12Rx channel 1 or 2 versus DHR12Rx channel 1 (shifted left of 16 bits) */
-
 
84
#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) */
-
 
85
#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) */
-
 
86
#define DAC_REG_DORX_REGOFFSET_BITOFFSET_POS              28U   /* Position of bits register offset of DORx channel 1 or 2 versus DORx channel 1 (shifted left of 28 bits) */
-
 
87
 
94
/* DAC registers bits positions */
88
/* DAC registers bits positions */
95
#define DAC_DHR12RD_DACC2DHR_BITOFFSET_POS                16U  /* Value equivalent to POSITION_VAL(DAC_DHR12RD_DACC2DHR) */
89
#define DAC_DHR12RD_DACC2DHR_BITOFFSET_POS                DAC_DHR12RD_DACC2DHR_Pos
96
#define DAC_DHR12LD_DACC2DHR_BITOFFSET_POS                20U  /* Value equivalent to POSITION_VAL(DAC_DHR12LD_DACC2DHR) */
90
#define DAC_DHR12LD_DACC2DHR_BITOFFSET_POS                DAC_DHR12LD_DACC2DHR_Pos
97
#define DAC_DHR8RD_DACC2DHR_BITOFFSET_POS                  8U  /* Value equivalent to POSITION_VAL(DAC_DHR8RD_DACC2DHR) */
91
#define DAC_DHR8RD_DACC2DHR_BITOFFSET_POS                 DAC_DHR8RD_DACC2DHR_Pos
98
 
92
 
99
/* Miscellaneous data */
93
/* Miscellaneous data */
100
#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) */
94
#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) */
101
 
95
 
102
/**
96
/**
Line 108... Line 102...
108
/** @defgroup DAC_LL_Private_Macros DAC Private Macros
102
/** @defgroup DAC_LL_Private_Macros DAC Private Macros
109
  * @{
103
  * @{
110
  */
104
  */
111
 
105
 
112
/**
106
/**
113
  * @brief  Driver macro reserved for internal use: isolate bits with the
-
 
114
  *         selected mask and shift them to the register LSB
-
 
115
  *         (shift mask on register position bit 0).
-
 
116
  * @param  __BITS__ Bits in register 32 bits
-
 
117
  * @param  __MASK__ Mask in register 32 bits
-
 
118
  * @retval Bits in register 32 bits
-
 
119
*/
-
 
120
#define __DAC_MASK_SHIFT(__BITS__, __MASK__)                                   \
-
 
121
  (((__BITS__) & (__MASK__)) >> POSITION_VAL((__MASK__)))
-
 
122
 
-
 
123
/**
-
 
124
  * @brief  Driver macro reserved for internal use: set a pointer to
107
  * @brief  Driver macro reserved for internal use: set a pointer to
125
  *         a register from a register basis from which an offset
108
  *         a register from a register basis from which an offset
126
  *         is applied.
109
  *         is applied.
127
  * @param  __REG__ Register basis from which the offset is applied.
110
  * @param  __REG__ Register basis from which the offset is applied.
128
  * @param  __REG_OFFFSET__ Offset to be applied (unit: number of registers).
111
  * @param  __REG_OFFFSET__ Offset to be applied (unit: number of registers).
129
  * @retval Pointer to register address
112
  * @retval Pointer to register address
130
*/
113
*/
131
#define __DAC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__)                         \
114
#define __DAC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__)                         \
132
 ((uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2U))))
115
  ((uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2U))))
133
 
116
 
134
/**
117
/**
135
  * @}
118
  * @}
136
  */
119
  */
137
 
120
 
Line 145... Line 128...
145
/**
128
/**
146
  * @brief  Structure definition of some features of DAC instance.
129
  * @brief  Structure definition of some features of DAC instance.
147
  */
130
  */
148
typedef struct
131
typedef struct
149
{
132
{
150
  uint32_t TriggerSource;               /*!< Set the conversion trigger source for the selected DAC channel: internal (SW start) or from external IP (timer event, external interrupt line).
133
  uint32_t TriggerSource;               /*!< Set the conversion trigger source for the selected DAC channel: internal (SW start) or from external peripheral (timer event, external interrupt line).
151
                                             This parameter can be a value of @ref DAC_LL_EC_TRIGGER_SOURCE
134
                                             This parameter can be a value of @ref DAC_LL_EC_TRIGGER_SOURCE
152
                                             
-
 
-
 
135
 
153
                                             This feature can be modified afterwards using unitary function @ref LL_DAC_SetTriggerSource(). */
136
                                             This feature can be modified afterwards using unitary function @ref LL_DAC_SetTriggerSource(). */
154
 
137
 
155
  uint32_t WaveAutoGeneration;          /*!< Set the waveform automatic generation mode for the selected DAC channel.
138
  uint32_t WaveAutoGeneration;          /*!< Set the waveform automatic generation mode for the selected DAC channel.
156
                                             This parameter can be a value of @ref DAC_LL_EC_WAVE_AUTO_GENERATION_MODE
139
                                             This parameter can be a value of @ref DAC_LL_EC_WAVE_AUTO_GENERATION_MODE
157
                                             
-
 
-
 
140
 
158
                                             This feature can be modified afterwards using unitary function @ref LL_DAC_SetWaveAutoGeneration(). */
141
                                             This feature can be modified afterwards using unitary function @ref LL_DAC_SetWaveAutoGeneration(). */
159
 
142
 
160
  uint32_t WaveAutoGenerationConfig;    /*!< Set the waveform automatic generation mode for the selected DAC channel.
143
  uint32_t WaveAutoGenerationConfig;    /*!< Set the waveform automatic generation mode for the selected DAC channel.
161
                                             If waveform automatic generation mode is set to noise, this parameter can be a value of @ref DAC_LL_EC_WAVE_NOISE_LFSR_UNMASK_BITS
144
                                             If waveform automatic generation mode is set to noise, this parameter can be a value of @ref DAC_LL_EC_WAVE_NOISE_LFSR_UNMASK_BITS
162
                                             If waveform automatic generation mode is set to triangle, this parameter can be a value of @ref DAC_LL_EC_WAVE_TRIANGLE_AMPLITUDE
145
                                             If waveform automatic generation mode is set to triangle, this parameter can be a value of @ref DAC_LL_EC_WAVE_TRIANGLE_AMPLITUDE
163
                                             @note If waveform automatic generation mode is disabled, this parameter is discarded.
146
                                             @note If waveform automatic generation mode is disabled, this parameter is discarded.
164
                                             
-
 
-
 
147
 
165
                                             This feature can be modified afterwards using unitary function @ref LL_DAC_SetWaveNoiseLFSR() or @ref LL_DAC_SetWaveTriangleAmplitude(), depending on the wave automatic generation selected. */
148
                                             This feature can be modified afterwards using unitary function @ref LL_DAC_SetWaveNoiseLFSR(), @ref LL_DAC_SetWaveTriangleAmplitude()
-
 
149
                                             depending on the wave automatic generation selected. */
166
 
150
 
167
  uint32_t OutputBuffer;                /*!< Set the output buffer for the selected DAC channel.
151
  uint32_t OutputBuffer;                /*!< Set the output buffer for the selected DAC channel.
168
                                             This parameter can be a value of @ref DAC_LL_EC_OUTPUT_BUFFER
152
                                             This parameter can be a value of @ref DAC_LL_EC_OUTPUT_BUFFER
169
                                             
-
 
-
 
153
 
170
                                             This feature can be modified afterwards using unitary function @ref LL_DAC_SetOutputBuffer(). */
154
                                             This feature can be modified afterwards using unitary function @ref LL_DAC_SetOutputBuffer(). */
171
 
155
 
172
} LL_DAC_InitTypeDef;
156
} LL_DAC_InitTypeDef;
173
 
157
 
174
/**
158
/**
Line 184... Line 168...
184
/** @defgroup DAC_LL_EC_GET_FLAG DAC flags
168
/** @defgroup DAC_LL_EC_GET_FLAG DAC flags
185
  * @brief    Flags defines which can be used with LL_DAC_ReadReg function
169
  * @brief    Flags defines which can be used with LL_DAC_ReadReg function
186
  * @{
170
  * @{
187
  */
171
  */
188
/* DAC channel 1 flags */
172
/* DAC channel 1 flags */
189
#if defined(DAC_SR_DMAUDR1)
-
 
190
#define LL_DAC_FLAG_DMAUDR1                (DAC_SR_DMAUDR1)   /*!< DAC channel 1 flag DMA underrun */
173
#define LL_DAC_FLAG_DMAUDR1                (DAC_SR_DMAUDR1)   /*!< DAC channel 1 flag DMA underrun */
191
#endif /* DAC_SR_DMAUDR1 */
-
 
192
 
174
 
193
/* DAC channel 2 flags */
175
/* DAC channel 2 flags */
194
#if defined(DAC_SR_DMAUDR2)
-
 
195
#define LL_DAC_FLAG_DMAUDR2                (DAC_SR_DMAUDR2)   /*!< DAC channel 2 flag DMA underrun */
176
#define LL_DAC_FLAG_DMAUDR2                (DAC_SR_DMAUDR2)   /*!< DAC channel 2 flag DMA underrun */
196
#endif /* DAC_SR_DMAUDR2 */
-
 
197
/**
177
/**
198
  * @}
178
  * @}
199
  */
179
  */
200
 
180
 
201
/** @defgroup DAC_LL_EC_IT DAC interruptions
181
/** @defgroup DAC_LL_EC_IT DAC interruptions
202
  * @brief    IT defines which can be used with LL_DAC_ReadReg and  LL_DAC_WriteReg functions
182
  * @brief    IT defines which can be used with LL_DAC_ReadReg and  LL_DAC_WriteReg functions
203
  * @{
183
  * @{
204
  */
184
  */
205
#if defined(DAC_CR_DMAUDRIE1)
-
 
206
#define LL_DAC_IT_DMAUDRIE1                (DAC_CR_DMAUDRIE1) /*!< DAC channel 1 interruption DMA underrun */
185
#define LL_DAC_IT_DMAUDRIE1                (DAC_CR_DMAUDRIE1) /*!< DAC channel 1 interruption DMA underrun */
207
#endif /* DAC_CR_DMAUDRIE1 */
-
 
208
#if defined(DAC_CR_DMAUDRIE2)
-
 
209
#define LL_DAC_IT_DMAUDRIE2                (DAC_CR_DMAUDRIE2) /*!< DAC channel 2 interruption DMA underrun */
186
#define LL_DAC_IT_DMAUDRIE2                (DAC_CR_DMAUDRIE2) /*!< DAC channel 2 interruption DMA underrun */
210
#endif /* DAC_CR_DMAUDRIE2 */
-
 
211
/**
187
/**
212
  * @}
188
  * @}
213
  */
189
  */
214
 
190
 
215
/** @defgroup DAC_LL_EC_CHANNEL DAC channels
191
/** @defgroup DAC_LL_EC_CHANNEL DAC channels
Line 223... Line 199...
223
 
199
 
224
/** @defgroup DAC_LL_EC_TRIGGER_SOURCE DAC trigger source
200
/** @defgroup DAC_LL_EC_TRIGGER_SOURCE DAC trigger source
225
  * @{
201
  * @{
226
  */
202
  */
227
#define LL_DAC_TRIG_SOFTWARE               (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger internal (SW start) */
203
#define LL_DAC_TRIG_SOFTWARE               (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger internal (SW start) */
228
#define LL_DAC_TRIG_EXT_TIM3_TRGO          (                                  DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external IP: TIM3 TRGO. */
204
#define LL_DAC_TRIG_EXT_TIM3_TRGO          (                                  DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM3 TRGO. */
229
#define LL_DAC_TRIG_EXT_TIM15_TRGO         (                 DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external IP: TIM15 TRGO. */
205
#define LL_DAC_TRIG_EXT_TIM15_TRGO         (                 DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM15 TRGO. */
230
#define LL_DAC_TRIG_EXT_TIM2_TRGO          (DAC_CR_TSEL1_2                                  ) /*!< DAC channel conversion trigger from external IP: TIM2 TRGO. */
206
#define LL_DAC_TRIG_EXT_TIM2_TRGO          (DAC_CR_TSEL1_2                                  ) /*!< DAC channel conversion trigger from external peripheral: TIM2 TRGO. */
231
#define LL_DAC_TRIG_EXT_TIM8_TRGO          (                                  DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external IP: TIM8 TRGO. */
207
#define LL_DAC_TRIG_EXT_TIM8_TRGO          (                                  DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM8 TRGO. */
232
#define LL_DAC_TRIG_EXT_TIM4_TRGO          (DAC_CR_TSEL1_2                  | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external IP: TIM4 TRGO. */
208
#define LL_DAC_TRIG_EXT_TIM4_TRGO          (DAC_CR_TSEL1_2                  | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM4 TRGO. */
233
#define LL_DAC_TRIG_EXT_TIM6_TRGO          0x00000000U                                        /*!< DAC channel conversion trigger from external IP: TIM6 TRGO. */
209
#define LL_DAC_TRIG_EXT_TIM6_TRGO          0x00000000U                                        /*!< DAC channel conversion trigger from external peripheral: TIM6 TRGO. */
234
#define LL_DAC_TRIG_EXT_TIM7_TRGO          (                 DAC_CR_TSEL1_1                 ) /*!< DAC channel conversion trigger from external IP: TIM7 TRGO. */
210
#define LL_DAC_TRIG_EXT_TIM7_TRGO          (                 DAC_CR_TSEL1_1                 ) /*!< DAC channel conversion trigger from external peripheral: TIM7 TRGO. */
235
#define LL_DAC_TRIG_EXT_TIM5_TRGO          (                 DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external IP: TIM5 TRGO. */
211
#define LL_DAC_TRIG_EXT_TIM5_TRGO          (                 DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM5 TRGO. */
236
#define LL_DAC_TRIG_EXT_EXTI_LINE9         (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1                 ) /*!< DAC channel conversion trigger from external IP: external interrupt line 9. */
212
#define LL_DAC_TRIG_EXT_EXTI_LINE9         (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1                 ) /*!< DAC channel conversion trigger from external peripheral: external interrupt line 9. */
237
/**
213
/**
238
  * @}
214
  * @}
239
  */
215
  */
240
 
216
 
241
/** @defgroup DAC_LL_EC_WAVE_AUTO_GENERATION_MODE DAC waveform automatic generation mode
217
/** @defgroup DAC_LL_EC_WAVE_AUTO_GENERATION_MODE DAC waveform automatic generation mode
242
  * @{
218
  * @{
243
  */
219
  */
244
#define LL_DAC_WAVE_AUTO_GENERATION_NONE     0x00000000U             /*!< DAC channel wave auto generation mode disabled. */
220
#define LL_DAC_WAVE_AUTO_GENERATION_NONE     0x00000000U                     /*!< DAC channel wave auto generation mode disabled. */
245
#define LL_DAC_WAVE_AUTO_GENERATION_NOISE    (DAC_CR_WAVE1_0)        /*!< DAC channel wave auto generation mode enabled, set generated noise waveform. */
221
#define LL_DAC_WAVE_AUTO_GENERATION_NOISE    (               DAC_CR_WAVE1_0) /*!< DAC channel wave auto generation mode enabled, set generated noise waveform. */
246
#define LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE (DAC_CR_WAVE1_1)        /*!< DAC channel wave auto generation mode enabled, set generated triangle waveform. */
222
#define LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE (DAC_CR_WAVE1_1               ) /*!< DAC channel wave auto generation mode enabled, set generated triangle waveform. */
247
/**
223
/**
248
  * @}
224
  * @}
249
  */
225
  */
250
 
226
 
251
/** @defgroup DAC_LL_EC_WAVE_NOISE_LFSR_UNMASK_BITS DAC wave generation - Noise LFSR unmask bits
227
/** @defgroup DAC_LL_EC_WAVE_NOISE_LFSR_UNMASK_BITS DAC wave generation - Noise LFSR unmask bits
Line 293... Line 269...
293
#define LL_DAC_OUTPUT_BUFFER_DISABLE       (DAC_CR_BOFF1)          /*!< The selected DAC channel output is not buffered: lower drive current capability, but also lower current consumption */
269
#define LL_DAC_OUTPUT_BUFFER_DISABLE       (DAC_CR_BOFF1)          /*!< The selected DAC channel output is not buffered: lower drive current capability, but also lower current consumption */
294
/**
270
/**
295
  * @}
271
  * @}
296
  */
272
  */
297
 
273
 
298
 
-
 
299
/** @defgroup DAC_LL_EC_RESOLUTION  DAC channel output resolution
274
/** @defgroup DAC_LL_EC_RESOLUTION  DAC channel output resolution
300
  * @{
275
  * @{
301
  */
276
  */
302
#define LL_DAC_RESOLUTION_12B              0x00000000U             /*!< DAC channel resolution 12 bits */
277
#define LL_DAC_RESOLUTION_12B              0x00000000U             /*!< DAC channel resolution 12 bits */
303
#define LL_DAC_RESOLUTION_8B               0x00000002U             /*!< DAC channel resolution 8 bits */
278
#define LL_DAC_RESOLUTION_8B               0x00000002U             /*!< DAC channel resolution 8 bits */
Line 309... Line 284...
309
  * @{
284
  * @{
310
  */
285
  */
311
/* List of DAC registers intended to be used (most commonly) with             */
286
/* List of DAC registers intended to be used (most commonly) with             */
312
/* DMA transfer.                                                              */
287
/* DMA transfer.                                                              */
313
/* Refer to function @ref LL_DAC_DMA_GetRegAddr().                            */
288
/* Refer to function @ref LL_DAC_DMA_GetRegAddr().                            */
314
#define LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED  DAC_REG_DHR12RX_REGOFFSET_MASK /*!< DAC channel data holding register 12 bits right aligned */
289
#define LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED  DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS /*!< DAC channel data holding register 12 bits right aligned */
315
#define LL_DAC_DMA_REG_DATA_12BITS_LEFT_ALIGNED   DAC_REG_DHR12LX_REGOFFSET_MASK /*!< DAC channel data holding register 12 bits left aligned */
290
#define LL_DAC_DMA_REG_DATA_12BITS_LEFT_ALIGNED   DAC_REG_DHR12LX_REGOFFSET_BITOFFSET_POS /*!< DAC channel data holding register 12 bits left aligned */
316
#define LL_DAC_DMA_REG_DATA_8BITS_RIGHT_ALIGNED   DAC_REG_DHR8RX_REGOFFSET_MASK  /*!< DAC channel data holding register 8 bits right aligned */
291
#define LL_DAC_DMA_REG_DATA_8BITS_RIGHT_ALIGNED   DAC_REG_DHR8RX_REGOFFSET_BITOFFSET_POS  /*!< DAC channel data holding register 8 bits right aligned */
317
/**
292
/**
318
  * @}
293
  * @}
319
  */
294
  */
320
 
295
 
321
/** @defgroup DAC_LL_EC_HW_DELAYS  Definitions of DAC hardware constraints delays
296
/** @defgroup DAC_LL_EC_HW_DELAYS  Definitions of DAC hardware constraints delays
322
  * @note   Only DAC IP HW delays are defined in DAC LL driver driver,
297
  * @note   Only DAC peripheral HW delays are defined in DAC LL driver driver,
323
  *         not timeout values.
298
  *         not timeout values.
324
  *         For details on delays values, refer to descriptions in source code
299
  *         For details on delays values, refer to descriptions in source code
325
  *         above each literal definition.
300
  *         above each literal definition.
326
  * @{
301
  * @{
327
  */
302
  */
Line 350... Line 325...
350
/*        - load impedance of 5kOhm min, 50pF max                             */
325
/*        - load impedance of 5kOhm min, 50pF max                             */
351
/* Literal set to maximum value (refer to device datasheet,                   */
326
/* Literal set to maximum value (refer to device datasheet,                   */
352
/* parameter "tSETTLING").                                                    */
327
/* parameter "tSETTLING").                                                    */
353
/* Unit: us                                                                   */
328
/* Unit: us                                                                   */
354
#define LL_DAC_DELAY_VOLTAGE_SETTLING_US                    12U  /*!< Delay for DAC channel voltage settling time */
329
#define LL_DAC_DELAY_VOLTAGE_SETTLING_US                    12U  /*!< Delay for DAC channel voltage settling time */
-
 
330
 
355
/**
331
/**
356
  * @}
332
  * @}
357
  */
333
  */
358
 
334
 
359
/**
335
/**
Line 422... Line 398...
422
  * @retval Returned value can be one of the following values:
398
  * @retval Returned value can be one of the following values:
423
  *         @arg @ref LL_DAC_CHANNEL_1
399
  *         @arg @ref LL_DAC_CHANNEL_1
424
  *         @arg @ref LL_DAC_CHANNEL_2
400
  *         @arg @ref LL_DAC_CHANNEL_2
425
  */
401
  */
426
#define __LL_DAC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__)                         \
402
#define __LL_DAC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__)                         \
427
  (((__DECIMAL_NB__) == 1U)                                                     \
403
  (((__DECIMAL_NB__) == 1U)                                                    \
428
    ? (                                                                        \
404
    ? (                                                                        \
429
       LL_DAC_CHANNEL_1                                                        \
405
       LL_DAC_CHANNEL_1                                                        \
430
      )                                                                        \
406
      )                                                                        \
431
      :                                                                        \
407
      :                                                                        \
432
      (((__DECIMAL_NB__) == 2U)                                                 \
408
      (((__DECIMAL_NB__) == 2U)                                                \
433
        ? (                                                                    \
409
        ? (                                                                    \
434
           LL_DAC_CHANNEL_2                                                    \
410
           LL_DAC_CHANNEL_2                                                    \
435
          )                                                                    \
411
          )                                                                    \
436
          :                                                                    \
412
          :                                                                    \
437
          (                                                                    \
413
          (                                                                    \
438
           0                                                                   \
414
           0U                                                                  \
439
          )                                                                    \
415
          )                                                                    \
440
      )                                                                        \
416
      )                                                                        \
441
  )
417
  )
442
 
418
 
443
/**
419
/**
Line 490... Line 466...
490
 
466
 
491
/* Exported functions --------------------------------------------------------*/
467
/* Exported functions --------------------------------------------------------*/
492
/** @defgroup DAC_LL_Exported_Functions DAC Exported Functions
468
/** @defgroup DAC_LL_Exported_Functions DAC Exported Functions
493
  * @{
469
  * @{
494
  */
470
  */
495
/** @defgroup DAC_LL_EF_Configuration Configuration of DAC channels
-
 
496
  * @{
-
 
497
  */
-
 
498
 
-
 
499
/**
471
/**
500
  * @brief  Set the conversion trigger source for the selected DAC channel.
472
  * @brief  Set the conversion trigger source for the selected DAC channel.
501
  * @note   For conversion trigger source to be effective, DAC trigger
473
  * @note   For conversion trigger source to be effective, DAC trigger
502
  *         must be enabled using function @ref LL_DAC_EnableTrigger().
474
  *         must be enabled using function @ref LL_DAC_EnableTrigger().
503
  * @note   To set conversion trigger source, DAC channel must be disabled.
475
  * @note   To set conversion trigger source, DAC channel must be disabled.
Line 510... Line 482...
510
  * @param  DAC_Channel This parameter can be one of the following values:
482
  * @param  DAC_Channel This parameter can be one of the following values:
511
  *         @arg @ref LL_DAC_CHANNEL_1
483
  *         @arg @ref LL_DAC_CHANNEL_1
512
  *         @arg @ref LL_DAC_CHANNEL_2
484
  *         @arg @ref LL_DAC_CHANNEL_2
513
  * @param  TriggerSource This parameter can be one of the following values:
485
  * @param  TriggerSource This parameter can be one of the following values:
514
  *         @arg @ref LL_DAC_TRIG_SOFTWARE
486
  *         @arg @ref LL_DAC_TRIG_SOFTWARE
-
 
487
  *         @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO
515
  *         @arg @ref LL_DAC_TRIG_EXT_TIM3_TRGO
488
  *         @arg @ref LL_DAC_TRIG_EXT_TIM3_TRGO
516
  *         @arg @ref LL_DAC_TRIG_EXT_TIM15_TRGO
-
 
517
  *         @arg @ref LL_DAC_TRIG_EXT_TIM8_TRGO
-
 
518
  *         @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO
-
 
519
  *         @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO
-
 
520
  *         @arg @ref LL_DAC_TRIG_EXT_TIM5_TRGO
-
 
521
  *         @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO
489
  *         @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO
-
 
490
  *         @arg @ref LL_DAC_TRIG_EXT_TIM5_TRGO  
-
 
491
  *         @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO
522
  *         @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO
492
  *         @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO
-
 
493
  *         @arg @ref LL_DAC_TRIG_EXT_TIM15_TRGO
523
  *         @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE9
494
  *         @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE9
524
  * @retval None
495
  * @retval None
525
  */
496
  */
526
__STATIC_INLINE void LL_DAC_SetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TriggerSource)
497
__STATIC_INLINE void LL_DAC_SetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TriggerSource)
527
{
498
{
Line 542... Line 513...
542
  * @param  DAC_Channel This parameter can be one of the following values:
513
  * @param  DAC_Channel This parameter can be one of the following values:
543
  *         @arg @ref LL_DAC_CHANNEL_1
514
  *         @arg @ref LL_DAC_CHANNEL_1
544
  *         @arg @ref LL_DAC_CHANNEL_2
515
  *         @arg @ref LL_DAC_CHANNEL_2
545
  * @retval Returned value can be one of the following values:
516
  * @retval Returned value can be one of the following values:
546
  *         @arg @ref LL_DAC_TRIG_SOFTWARE
517
  *         @arg @ref LL_DAC_TRIG_SOFTWARE
-
 
518
  *         @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO
547
  *         @arg @ref LL_DAC_TRIG_EXT_TIM3_TRGO
519
  *         @arg @ref LL_DAC_TRIG_EXT_TIM3_TRGO
548
  *         @arg @ref LL_DAC_TRIG_EXT_TIM15_TRGO
-
 
549
  *         @arg @ref LL_DAC_TRIG_EXT_TIM8_TRGO
-
 
550
  *         @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO
-
 
551
  *         @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO
-
 
552
  *         @arg @ref LL_DAC_TRIG_EXT_TIM5_TRGO
-
 
553
  *         @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO
520
  *         @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO
-
 
521
  *         @arg @ref LL_DAC_TRIG_EXT_TIM5_TRGO  
-
 
522
  *         @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO
554
  *         @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO
523
  *         @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO
-
 
524
  *         @arg @ref LL_DAC_TRIG_EXT_TIM15_TRGO
555
  *         @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE9
525
  *         @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE9
556
  */
526
  */
557
__STATIC_INLINE uint32_t LL_DAC_GetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel)
527
__STATIC_INLINE uint32_t LL_DAC_GetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel)
558
{
528
{
559
  return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_TSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
529
  return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_TSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
Line 639... Line 609...
639
             DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
609
             DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
640
             NoiseLFSRMask << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
610
             NoiseLFSRMask << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
641
}
611
}
642
 
612
 
643
/**
613
/**
644
  * @brief  Set the noise waveform generation for the selected DAC channel:
614
  * @brief  Get the noise waveform generation for the selected DAC channel:
645
  *         Noise mode and parameters LFSR (linear feedback shift register).
615
  *         Noise mode and parameters LFSR (linear feedback shift register).
646
  * @rmtoll CR       MAMP1          LL_DAC_GetWaveNoiseLFSR\n
616
  * @rmtoll CR       MAMP1          LL_DAC_GetWaveNoiseLFSR\n
647
  *         CR       MAMP2          LL_DAC_GetWaveNoiseLFSR
617
  *         CR       MAMP2          LL_DAC_GetWaveNoiseLFSR
648
  * @param  DACx DAC instance
618
  * @param  DACx DAC instance
649
  * @param  DAC_Channel This parameter can be one of the following values:
619
  * @param  DAC_Channel This parameter can be one of the following values:
Line 697... Line 667...
697
  *         @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1023
667
  *         @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1023
698
  *         @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_2047
668
  *         @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_2047
699
  *         @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_4095
669
  *         @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_4095
700
  * @retval None
670
  * @retval None
701
  */
671
  */
702
__STATIC_INLINE void LL_DAC_SetWaveTriangleAmplitude(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TriangleAmplitude)
672
__STATIC_INLINE void LL_DAC_SetWaveTriangleAmplitude(DAC_TypeDef *DACx, uint32_t DAC_Channel,
-
 
673
                                                     uint32_t TriangleAmplitude)
703
{
674
{
704
  MODIFY_REG(DACx->CR,
675
  MODIFY_REG(DACx->CR,
705
             DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
676
             DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK),
706
             TriangleAmplitude << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
677
             TriangleAmplitude << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK));
707
}
678
}
708
 
679
 
709
/**
680
/**
710
  * @brief  Set the triangle waveform generation for the selected DAC channel:
681
  * @brief  Get the triangle waveform generation for the selected DAC channel:
711
  *         triangle mode and amplitude.
682
  *         triangle mode and amplitude.
712
  * @rmtoll CR       MAMP1          LL_DAC_GetWaveTriangleAmplitude\n
683
  * @rmtoll CR       MAMP1          LL_DAC_GetWaveTriangleAmplitude\n
713
  *         CR       MAMP2          LL_DAC_GetWaveTriangleAmplitude
684
  *         CR       MAMP2          LL_DAC_GetWaveTriangleAmplitude
714
  * @param  DACx DAC instance
685
  * @param  DACx DAC instance
715
  * @param  DAC_Channel This parameter can be one of the following values:
686
  * @param  DAC_Channel This parameter can be one of the following values:
Line 830... Line 801...
830
  *         @arg @ref LL_DAC_CHANNEL_2
801
  *         @arg @ref LL_DAC_CHANNEL_2
831
  * @retval State of bit (1 or 0).
802
  * @retval State of bit (1 or 0).
832
  */
803
  */
833
__STATIC_INLINE uint32_t LL_DAC_IsDMAReqEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
804
__STATIC_INLINE uint32_t LL_DAC_IsDMAReqEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
834
{
805
{
835
  return (READ_BIT(DACx->CR,
806
  return ((READ_BIT(DACx->CR,
836
                   DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
807
                    DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
837
          == (DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)));
808
           == (DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL);
838
}
809
}
839
 
810
 
840
/**
811
/**
841
  * @brief  Function to help to configure DMA transfer to DAC: retrieve the
812
  * @brief  Function to help to configure DMA transfer to DAC: retrieve the
842
  *         DAC register address from DAC instance and a list of DAC registers
813
  *         DAC register address from DAC instance and a list of DAC registers
Line 870... Line 841...
870
  */
841
  */
871
__STATIC_INLINE uint32_t LL_DAC_DMA_GetRegAddr(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Register)
842
__STATIC_INLINE uint32_t LL_DAC_DMA_GetRegAddr(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Register)
872
{
843
{
873
  /* Retrieve address of register DHR12Rx, DHR12Lx or DHR8Rx depending on     */
844
  /* Retrieve address of register DHR12Rx, DHR12Lx or DHR8Rx depending on     */
874
  /* DAC channel selected.                                                    */
845
  /* DAC channel selected.                                                    */
875
  return ((uint32_t)(__DAC_PTR_REG_OFFSET((DACx)->DHR12R1, __DAC_MASK_SHIFT(DAC_Channel, Register))));
846
  return ((uint32_t)(__DAC_PTR_REG_OFFSET((DACx)->DHR12R1,
-
 
847
                                          ((DAC_Channel >> (Register & 0x1FUL)) & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0))));
876
}
848
}
877
/**
849
/**
878
  * @}
850
  * @}
879
  */
851
  */
880
 
852
 
Line 928... Line 900...
928
  *         @arg @ref LL_DAC_CHANNEL_2
900
  *         @arg @ref LL_DAC_CHANNEL_2
929
  * @retval State of bit (1 or 0).
901
  * @retval State of bit (1 or 0).
930
  */
902
  */
931
__STATIC_INLINE uint32_t LL_DAC_IsEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
903
__STATIC_INLINE uint32_t LL_DAC_IsEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
932
{
904
{
933
  return (READ_BIT(DACx->CR,
905
  return ((READ_BIT(DACx->CR,
934
                   DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
906
                    DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
935
          == (DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)));
907
           == (DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL);
936
}
908
}
937
 
909
 
938
/**
910
/**
939
  * @brief  Enable DAC trigger of the selected channel.
911
  * @brief  Enable DAC trigger of the selected channel.
940
  * @note   - If DAC trigger is disabled, DAC conversion is performed
912
  * @note   - If DAC trigger is disabled, DAC conversion is performed
Line 986... Line 958...
986
  *         @arg @ref LL_DAC_CHANNEL_2
958
  *         @arg @ref LL_DAC_CHANNEL_2
987
  * @retval State of bit (1 or 0).
959
  * @retval State of bit (1 or 0).
988
  */
960
  */
989
__STATIC_INLINE uint32_t LL_DAC_IsTriggerEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
961
__STATIC_INLINE uint32_t LL_DAC_IsTriggerEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
990
{
962
{
991
  return (READ_BIT(DACx->CR,
963
  return ((READ_BIT(DACx->CR,
992
                   DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
964
                    DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
993
          == (DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)));
965
           == (DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL);
994
}
966
}
995
 
967
 
996
/**
968
/**
997
  * @brief  Trig DAC conversion by software for the selected DAC channel.
969
  * @brief  Trig DAC conversion by software for the selected DAC channel.
998
  * @note   Preliminarily, DAC trigger must be set to software trigger
970
  * @note   Preliminarily, DAC trigger must be set to software trigger
-
 
971
  *         using function
-
 
972
  *           @ref LL_DAC_Init()
999
  *         using function @ref LL_DAC_SetTriggerSource()
973
  *           @ref LL_DAC_SetTriggerSource()
1000
  *         with parameter "LL_DAC_TRIGGER_SOFTWARE".
974
  *         with parameter "LL_DAC_TRIGGER_SOFTWARE".
1001
  *         and DAC trigger must be enabled using
975
  *         and DAC trigger must be enabled using
1002
  *         function @ref LL_DAC_EnableTrigger().
976
  *         function @ref LL_DAC_EnableTrigger().
1003
  * @note   For devices featuring DAC with 2 channels: this function
977
  * @note   For devices featuring DAC with 2 channels: this function
1004
  *         can perform a SW start of both DAC channels simultaneously.
978
  *         can perform a SW start of both DAC channels simultaneously.
Line 1031... Line 1005...
1031
  * @param  Data Value between Min_Data=0x000 and Max_Data=0xFFF
1005
  * @param  Data Value between Min_Data=0x000 and Max_Data=0xFFF
1032
  * @retval None
1006
  * @retval None
1033
  */
1007
  */
1034
__STATIC_INLINE void LL_DAC_ConvertData12RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
1008
__STATIC_INLINE void LL_DAC_ConvertData12RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
1035
{
1009
{
1036
  register uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, __DAC_MASK_SHIFT(DAC_Channel, DAC_REG_DHR12RX_REGOFFSET_MASK));
1010
  __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS) & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0);
1037
 
1011
 
1038
  MODIFY_REG(*preg,
1012
  MODIFY_REG(*preg,
1039
             DAC_DHR12R1_DACC1DHR,
1013
             DAC_DHR12R1_DACC1DHR,
1040
             Data);
1014
             Data);
1041
}
1015
}
1042
 
1016
 
Line 1053... Line 1027...
1053
  * @param  Data Value between Min_Data=0x000 and Max_Data=0xFFF
1027
  * @param  Data Value between Min_Data=0x000 and Max_Data=0xFFF
1054
  * @retval None
1028
  * @retval None
1055
  */
1029
  */
1056
__STATIC_INLINE void LL_DAC_ConvertData12LeftAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
1030
__STATIC_INLINE void LL_DAC_ConvertData12LeftAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
1057
{
1031
{
1058
  register uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, __DAC_MASK_SHIFT(DAC_Channel, DAC_REG_DHR12LX_REGOFFSET_MASK));
1032
  __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR12LX_REGOFFSET_BITOFFSET_POS) & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0);
1059
 
1033
 
1060
  MODIFY_REG(*preg,
1034
  MODIFY_REG(*preg,
1061
             DAC_DHR12L1_DACC1DHR,
1035
             DAC_DHR12L1_DACC1DHR,
1062
             Data);
1036
             Data);
1063
}
1037
}
1064
 
1038
 
Line 1075... Line 1049...
1075
  * @param  Data Value between Min_Data=0x00 and Max_Data=0xFF
1049
  * @param  Data Value between Min_Data=0x00 and Max_Data=0xFF
1076
  * @retval None
1050
  * @retval None
1077
  */
1051
  */
1078
__STATIC_INLINE void LL_DAC_ConvertData8RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
1052
__STATIC_INLINE void LL_DAC_ConvertData8RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data)
1079
{
1053
{
1080
  register uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, __DAC_MASK_SHIFT(DAC_Channel, DAC_REG_DHR8RX_REGOFFSET_MASK));
1054
  __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR8RX_REGOFFSET_BITOFFSET_POS) & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0);
1081
 
1055
 
1082
  MODIFY_REG(*preg,
1056
  MODIFY_REG(*preg,
1083
             DAC_DHR8R1_DACC1DHR,
1057
             DAC_DHR8R1_DACC1DHR,
1084
             Data);
1058
             Data);
1085
}
1059
}
1086
 
1060
 
-
 
1061
 
1087
/**
1062
/**
1088
  * @brief  Set the data to be loaded in the data holding register
1063
  * @brief  Set the data to be loaded in the data holding register
1089
  *         in format 12 bits left alignment (LSB aligned on bit 0),
1064
  *         in format 12 bits left alignment (LSB aligned on bit 0),
1090
  *         for both DAC channels.
1065
  *         for both DAC channels.
1091
  * @rmtoll DHR12RD  DACC1DHR       LL_DAC_ConvertDualData12RightAligned\n
1066
  * @rmtoll DHR12RD  DACC1DHR       LL_DAC_ConvertDualData12RightAligned\n
Line 1093... Line 1068...
1093
  * @param  DACx DAC instance
1068
  * @param  DACx DAC instance
1094
  * @param  DataChannel1 Value between Min_Data=0x000 and Max_Data=0xFFF
1069
  * @param  DataChannel1 Value between Min_Data=0x000 and Max_Data=0xFFF
1095
  * @param  DataChannel2 Value between Min_Data=0x000 and Max_Data=0xFFF
1070
  * @param  DataChannel2 Value between Min_Data=0x000 and Max_Data=0xFFF
1096
  * @retval None
1071
  * @retval None
1097
  */
1072
  */
1098
__STATIC_INLINE void LL_DAC_ConvertDualData12RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, uint32_t DataChannel2)
1073
__STATIC_INLINE void LL_DAC_ConvertDualData12RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1,
-
 
1074
                                                          uint32_t DataChannel2)
1099
{
1075
{
1100
  MODIFY_REG(DACx->DHR12RD,
1076
  MODIFY_REG(DACx->DHR12RD,
1101
             (DAC_DHR12RD_DACC2DHR | DAC_DHR12RD_DACC1DHR),
1077
             (DAC_DHR12RD_DACC2DHR | DAC_DHR12RD_DACC1DHR),
1102
             ((DataChannel2 << DAC_DHR12RD_DACC2DHR_BITOFFSET_POS) | DataChannel1));
1078
             ((DataChannel2 << DAC_DHR12RD_DACC2DHR_BITOFFSET_POS) | DataChannel1));
1103
}
1079
}
Line 1111... Line 1087...
1111
  * @param  DACx DAC instance
1087
  * @param  DACx DAC instance
1112
  * @param  DataChannel1 Value between Min_Data=0x000 and Max_Data=0xFFF
1088
  * @param  DataChannel1 Value between Min_Data=0x000 and Max_Data=0xFFF
1113
  * @param  DataChannel2 Value between Min_Data=0x000 and Max_Data=0xFFF
1089
  * @param  DataChannel2 Value between Min_Data=0x000 and Max_Data=0xFFF
1114
  * @retval None
1090
  * @retval None
1115
  */
1091
  */
1116
__STATIC_INLINE void LL_DAC_ConvertDualData12LeftAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, uint32_t DataChannel2)
1092
__STATIC_INLINE void LL_DAC_ConvertDualData12LeftAligned(DAC_TypeDef *DACx, uint32_t DataChannel1,
-
 
1093
                                                         uint32_t DataChannel2)
1117
{
1094
{
1118
  /* Note: Data of DAC channel 2 shift value subtracted of 4 because          */
1095
  /* Note: Data of DAC channel 2 shift value subtracted of 4 because          */
1119
  /*       data on 16 bits and DAC channel 2 bits field is on the 12 MSB,     */
1096
  /*       data on 16 bits and DAC channel 2 bits field is on the 12 MSB,     */
1120
  /*       the 4 LSB must be taken into account for the shift value.          */
1097
  /*       the 4 LSB must be taken into account for the shift value.          */
1121
  MODIFY_REG(DACx->DHR12LD,
1098
  MODIFY_REG(DACx->DHR12LD,
Line 1132... Line 1109...
1132
  * @param  DACx DAC instance
1109
  * @param  DACx DAC instance
1133
  * @param  DataChannel1 Value between Min_Data=0x00 and Max_Data=0xFF
1110
  * @param  DataChannel1 Value between Min_Data=0x00 and Max_Data=0xFF
1134
  * @param  DataChannel2 Value between Min_Data=0x00 and Max_Data=0xFF
1111
  * @param  DataChannel2 Value between Min_Data=0x00 and Max_Data=0xFF
1135
  * @retval None
1112
  * @retval None
1136
  */
1113
  */
1137
__STATIC_INLINE void LL_DAC_ConvertDualData8RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, uint32_t DataChannel2)
1114
__STATIC_INLINE void LL_DAC_ConvertDualData8RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1,
-
 
1115
                                                         uint32_t DataChannel2)
1138
{
1116
{
1139
  MODIFY_REG(DACx->DHR8RD,
1117
  MODIFY_REG(DACx->DHR8RD,
1140
             (DAC_DHR8RD_DACC2DHR | DAC_DHR8RD_DACC1DHR),
1118
             (DAC_DHR8RD_DACC2DHR | DAC_DHR8RD_DACC1DHR),
1141
             ((DataChannel2 << DAC_DHR8RD_DACC2DHR_BITOFFSET_POS) | DataChannel1));
1119
             ((DataChannel2 << DAC_DHR8RD_DACC2DHR_BITOFFSET_POS) | DataChannel1));
1142
}
1120
}
1143
 
1121
 
-
 
1122
 
1144
/**
1123
/**
1145
  * @brief  Retrieve output data currently generated for the selected DAC channel.
1124
  * @brief  Retrieve output data currently generated for the selected DAC channel.
1146
  * @note   Whatever alignment and resolution settings
1125
  * @note   Whatever alignment and resolution settings
1147
  *         (using functions "LL_DAC_ConvertData{8; 12}{Right; Left} Aligned()":
1126
  *         (using functions "LL_DAC_ConvertData{8; 12}{Right; Left} Aligned()":
1148
  *         @ref LL_DAC_ConvertData12RightAligned(), ...),
1127
  *         @ref LL_DAC_ConvertData12RightAligned(), ...),
Line 1155... Line 1134...
1155
  *         @arg @ref LL_DAC_CHANNEL_2
1134
  *         @arg @ref LL_DAC_CHANNEL_2
1156
  * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
1135
  * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
1157
  */
1136
  */
1158
__STATIC_INLINE uint32_t LL_DAC_RetrieveOutputData(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1137
__STATIC_INLINE uint32_t LL_DAC_RetrieveOutputData(DAC_TypeDef *DACx, uint32_t DAC_Channel)
1159
{
1138
{
1160
  register uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DOR1, __DAC_MASK_SHIFT(DAC_Channel, DAC_REG_DORX_REGOFFSET_MASK));
1139
  __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);
1161
 
1140
 
1162
  return (uint16_t) READ_BIT(*preg, DAC_DOR1_DACC1DOR);
1141
  return (uint16_t) READ_BIT(*preg, DAC_DOR1_DACC1DOR);
1163
}
1142
}
1164
 
1143
 
1165
/**
1144
/**
1166
  * @}
1145
  * @}
Line 1176... Line 1155...
1176
  * @param  DACx DAC instance
1155
  * @param  DACx DAC instance
1177
  * @retval State of bit (1 or 0).
1156
  * @retval State of bit (1 or 0).
1178
  */
1157
  */
1179
__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR1(DAC_TypeDef *DACx)
1158
__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR1(DAC_TypeDef *DACx)
1180
{
1159
{
1181
  return (READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR1) == (LL_DAC_FLAG_DMAUDR1));
1160
  return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR1) == (LL_DAC_FLAG_DMAUDR1)) ? 1UL : 0UL);
1182
}
1161
}
1183
#endif /* DAC_SR_DMAUDR1 */
1162
#endif /* DAC_SR_DMAUDR1 */
1184
 
1163
 
1185
#if defined(DAC_SR_DMAUDR2)
1164
#if defined(DAC_SR_DMAUDR2)
1186
/**
1165
/**
Line 1189... Line 1168...
1189
  * @param  DACx DAC instance
1168
  * @param  DACx DAC instance
1190
  * @retval State of bit (1 or 0).
1169
  * @retval State of bit (1 or 0).
1191
  */
1170
  */
1192
__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR2(DAC_TypeDef *DACx)
1171
__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR2(DAC_TypeDef *DACx)
1193
{
1172
{
1194
  return (READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR2) == (LL_DAC_FLAG_DMAUDR2));
1173
  return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR2) == (LL_DAC_FLAG_DMAUDR2)) ? 1UL : 0UL);
1195
}
1174
}
1196
#endif /* DAC_SR_DMAUDR2 */
1175
#endif /* DAC_SR_DMAUDR2 */
1197
 
1176
 
1198
#if defined(DAC_SR_DMAUDR1)
1177
#if defined(DAC_SR_DMAUDR1)
1199
/**
1178
/**
Line 1222... Line 1201...
1222
#endif /* DAC_SR_DMAUDR2 */
1201
#endif /* DAC_SR_DMAUDR2 */
1223
 
1202
 
1224
/**
1203
/**
1225
  * @}
1204
  * @}
1226
  */
1205
  */
-
 
1206
 
1227
/** @defgroup DAC_LL_EF_IT_Management IT management
1207
/** @defgroup DAC_LL_EF_IT_Management IT management
1228
  * @{
1208
  * @{
1229
  */
1209
  */
1230
 
-
 
1231
#if defined(DAC_CR_DMAUDRIE1)
1210
#if defined(DAC_CR_DMAUDRIE1)
1232
/**
1211
/**
1233
  * @brief  Enable DMA underrun interrupt for DAC channel 1
1212
  * @brief  Enable DMA underrun interrupt for DAC channel 1
1234
  * @rmtoll CR       DMAUDRIE1      LL_DAC_EnableIT_DMAUDR1
1213
  * @rmtoll CR       DMAUDRIE1      LL_DAC_EnableIT_DMAUDR1
1235
  * @param  DACx DAC instance
1214
  * @param  DACx DAC instance
Line 1287... Line 1266...
1287
  * @param  DACx DAC instance
1266
  * @param  DACx DAC instance
1288
  * @retval State of bit (1 or 0).
1267
  * @retval State of bit (1 or 0).
1289
  */
1268
  */
1290
__STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR1(DAC_TypeDef *DACx)
1269
__STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR1(DAC_TypeDef *DACx)
1291
{
1270
{
1292
  return (READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1) == (LL_DAC_IT_DMAUDRIE1));
1271
  return ((READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1) == (LL_DAC_IT_DMAUDRIE1)) ? 1UL : 0UL);
1293
}
1272
}
1294
#endif /* DAC_CR_DMAUDRIE1 */
1273
#endif /* DAC_CR_DMAUDRIE1 */
1295
 
1274
 
1296
#if defined(DAC_CR_DMAUDRIE2)
1275
#if defined(DAC_CR_DMAUDRIE2)
1297
/**
1276
/**
Line 1300... Line 1279...
1300
  * @param  DACx DAC instance
1279
  * @param  DACx DAC instance
1301
  * @retval State of bit (1 or 0).
1280
  * @retval State of bit (1 or 0).
1302
  */
1281
  */
1303
__STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR2(DAC_TypeDef *DACx)
1282
__STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR2(DAC_TypeDef *DACx)
1304
{
1283
{
1305
  return (READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2) == (LL_DAC_IT_DMAUDRIE2));
1284
  return ((READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2) == (LL_DAC_IT_DMAUDRIE2)) ? 1UL : 0UL);
1306
}
1285
}
1307
#endif /* DAC_CR_DMAUDRIE2 */
1286
#endif /* DAC_CR_DMAUDRIE2 */
1308
 
1287
 
1309
/**
1288
/**
1310
  * @}
1289
  * @}
Line 1313... Line 1292...
1313
#if defined(USE_FULL_LL_DRIVER)
1292
#if defined(USE_FULL_LL_DRIVER)
1314
/** @defgroup DAC_LL_EF_Init Initialization and de-initialization functions
1293
/** @defgroup DAC_LL_EF_Init Initialization and de-initialization functions
1315
  * @{
1294
  * @{
1316
  */
1295
  */
1317
 
1296
 
1318
ErrorStatus LL_DAC_DeInit(DAC_TypeDef* DACx);
1297
ErrorStatus LL_DAC_DeInit(DAC_TypeDef *DACx);
1319
ErrorStatus LL_DAC_Init(DAC_TypeDef* DACx, uint32_t DAC_Channel, LL_DAC_InitTypeDef* DAC_InitStruct);
1298
ErrorStatus LL_DAC_Init(DAC_TypeDef *DACx, uint32_t DAC_Channel, LL_DAC_InitTypeDef *DAC_InitStruct);
1320
void        LL_DAC_StructInit(LL_DAC_InitTypeDef* DAC_InitStruct);
1299
void        LL_DAC_StructInit(LL_DAC_InitTypeDef *DAC_InitStruct);
1321
 
1300
 
1322
/**
1301
/**
1323
  * @}
1302
  * @}
1324
  */
1303
  */
1325
#endif /* USE_FULL_LL_DRIVER */
1304
#endif /* USE_FULL_LL_DRIVER */
Line 1340... Line 1319...
1340
 
1319
 
1341
#ifdef __cplusplus
1320
#ifdef __cplusplus
1342
}
1321
}
1343
#endif
1322
#endif
1344
 
1323
 
1345
#endif /* __STM32F1xx_LL_DAC_H */
1324
#endif /* STM32F1xx_LL_DAC_H */
1346
 
1325
 
1347
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
1326
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/