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   DAC LL module driver
5
  * @brief   DAC LL module driver
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
#if defined(USE_FULL_LL_DRIVER)
19
#if defined(USE_FULL_LL_DRIVER)
36
 
20
 
37
/* Includes ------------------------------------------------------------------*/
21
/* Includes ------------------------------------------------------------------*/
38
#include "stm32f1xx_ll_dac.h"
22
#include "stm32f1xx_ll_dac.h"
39
#include "stm32f1xx_ll_bus.h"
23
#include "stm32f1xx_ll_bus.h"
40
 
24
 
41
#ifdef USE_FULL_ASSERT
25
#ifdef USE_FULL_ASSERT
42
  #include "stm32_assert.h"
26
#include "stm32_assert.h"
43
#else
27
#else
44
  #define assert_param(expr) ((void)0U)
28
#define assert_param(expr) ((void)0U)
45
#endif
29
#endif
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
/** @addtogroup DAC_LL DAC
37
/** @addtogroup DAC_LL DAC
54
  * @{
38
  * @{
55
  */
39
  */
56
 
40
 
Line 60... Line 44...
60
/* Private macros ------------------------------------------------------------*/
44
/* Private macros ------------------------------------------------------------*/
61
 
45
 
62
/** @addtogroup DAC_LL_Private_Macros
46
/** @addtogroup DAC_LL_Private_Macros
63
  * @{
47
  * @{
64
  */
48
  */
65
 
-
 
66
#define IS_LL_DAC_CHANNEL(__DACX__, __DAC_CHANNEL__)                           \
49
#define IS_LL_DAC_CHANNEL(__DAC_CHANNEL__)                                     \
67
  (                                                                            \
50
  (                                                                            \
68
      ((__DAC_CHANNEL__) == LL_DAC_CHANNEL_1)                                  \
51
      ((__DAC_CHANNEL__) == LL_DAC_CHANNEL_1)                                  \
69
   || ((__DAC_CHANNEL__) == LL_DAC_CHANNEL_2)                                  \
52
   || ((__DAC_CHANNEL__) == LL_DAC_CHANNEL_2)                                  \
70
  )
53
  )
71
 
54
 
Line 79... Line 62...
79
   || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM6_TRGO)                      \
62
   || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM6_TRGO)                      \
80
   || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM7_TRGO)                      \
63
   || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM7_TRGO)                      \
81
   || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM8_TRGO)                      \
64
   || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM8_TRGO)                      \
82
   || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_EXTI_LINE9)                     \
65
   || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_EXTI_LINE9)                     \
83
  )
66
  )
-
 
67
 
84
#define IS_LL_DAC_WAVE_AUTO_GENER_MODE(__WAVE_AUTO_GENERATION_MODE__)           \
68
#define IS_LL_DAC_WAVE_AUTO_GENER_MODE(__WAVE_AUTO_GENERATION_MODE__)           \
85
  (   ((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_NONE)     \
69
  (   ((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_NONE)     \
86
   || ((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_NOISE)    \
70
   || ((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_NOISE)    \
87
   || ((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE) \
71
   || ((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE) \
88
  )
72
  )
89
 
73
 
90
#define IS_LL_DAC_WAVE_AUTO_GENER_CONFIG(__WAVE_AUTO_GENERATION_CONFIG__)      \
74
#define IS_LL_DAC_WAVE_AUTO_GENER_CONFIG(__WAVE_AUTO_GENERATION_MODE__, __WAVE_AUTO_GENERATION_CONFIG__)  \
-
 
75
  ( (((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_NOISE)                               \
91
  (   ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BIT0)     \
76
    && (  ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BIT0)                            \
92
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS1_0)  \
77
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS1_0)                         \
93
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS2_0)  \
78
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS2_0)                         \
94
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS3_0)  \
79
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS3_0)                         \
95
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS4_0)  \
80
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS4_0)                         \
96
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS5_0)  \
81
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS5_0)                         \
97
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS6_0)  \
82
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS6_0)                         \
98
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS7_0)  \
83
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS7_0)                         \
99
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS8_0)  \
84
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS8_0)                         \
100
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS9_0)  \
85
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS9_0)                         \
101
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS10_0) \
86
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS10_0)                        \
102
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS11_0) \
87
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS11_0))                       \
-
 
88
    )                                                                                                     \
-
 
89
  ||(((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE)                            \
103
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_1)       \
90
    && (  ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_1)                              \
104
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_3)       \
91
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_3)                              \
105
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_7)       \
92
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_7)                              \
106
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_15)      \
93
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_15)                             \
107
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_31)      \
94
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_31)                             \
108
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_63)      \
95
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_63)                             \
109
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_127)     \
96
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_127)                            \
110
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_255)     \
97
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_255)                            \
111
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_511)     \
98
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_511)                            \
112
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_1023)    \
99
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_1023)                           \
113
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_2047)    \
100
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_2047)                           \
114
   || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_4095)    \
101
       || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_4095))                          \
-
 
102
    )                                                                                                     \
115
  )
103
  )
116
 
104
 
117
#define IS_LL_DAC_OUTPUT_BUFFER(__OUTPUT_BUFFER__)                             \
105
#define IS_LL_DAC_OUTPUT_BUFFER(__OUTPUT_BUFFER__)                             \
118
  (   ((__OUTPUT_BUFFER__) == LL_DAC_OUTPUT_BUFFER_ENABLE)                     \
106
  (   ((__OUTPUT_BUFFER__) == LL_DAC_OUTPUT_BUFFER_ENABLE)                     \
119
   || ((__OUTPUT_BUFFER__) == LL_DAC_OUTPUT_BUFFER_DISABLE)                    \
107
   || ((__OUTPUT_BUFFER__) == LL_DAC_OUTPUT_BUFFER_DISABLE)                    \
Line 145... Line 133...
145
  */
133
  */
146
ErrorStatus LL_DAC_DeInit(DAC_TypeDef *DACx)
134
ErrorStatus LL_DAC_DeInit(DAC_TypeDef *DACx)
147
{
135
{
148
  /* Check the parameters */
136
  /* Check the parameters */
149
  assert_param(IS_DAC_ALL_INSTANCE(DACx));
137
  assert_param(IS_DAC_ALL_INSTANCE(DACx));
150
 
138
 
151
  /* Force reset of DAC1 clock */
139
  /* Force reset of DAC clock */
152
  LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_DAC1);
140
  LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_DAC1);
153
 
141
 
154
  /* Release reset of DAC1 clock */
142
  /* Release reset of DAC clock */
155
  LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_DAC1);
143
  LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_DAC1);
-
 
144
 
156
  return SUCCESS;
145
  return SUCCESS;
157
}
146
}
158
 
147
 
159
/**
148
/**
160
  * @brief  Initialize some features of DAC instance.
149
  * @brief  Initialize some features of DAC channel.
-
 
150
  * @note   @ref LL_DAC_Init() aims to ease basic configuration of a DAC channel.
-
 
151
  *         Leaving it ready to be enabled and output:
-
 
152
  *         a level by calling one of
-
 
153
  *           @ref LL_DAC_ConvertData12RightAligned
-
 
154
  *           @ref LL_DAC_ConvertData12LeftAligned
-
 
155
  *           @ref LL_DAC_ConvertData8RightAligned
-
 
156
  *         or one of the supported autogenerated wave.
-
 
157
  * @note   This function allows configuration of:
-
 
158
  *          - Output mode
-
 
159
  *          - Trigger
-
 
160
  *          - Wave generation
161
  * @note   The setting of these parameters by function @ref LL_DAC_Init()
161
  * @note   The setting of these parameters by function @ref LL_DAC_Init()
162
  *         is conditioned to DAC state:
162
  *         is conditioned to DAC state:
163
  *         DAC instance must be disabled.
163
  *         DAC channel must be disabled.
164
  * @param  DACx DAC instance
164
  * @param  DACx DAC instance
165
  * @param  DAC_Channel This parameter can be one of the following values:
165
  * @param  DAC_Channel This parameter can be one of the following values:
166
  *         @arg @ref LL_DAC_CHANNEL_1
166
  *         @arg @ref LL_DAC_CHANNEL_1
167
  *         @arg @ref LL_DAC_CHANNEL_2
167
  *         @arg @ref LL_DAC_CHANNEL_2
168
  * @param  DAC_InitStruct Pointer to a @ref LL_DAC_InitTypeDef structure
168
  * @param  DAC_InitStruct Pointer to a @ref LL_DAC_InitTypeDef structure
Line 171... Line 171...
171
  *          - ERROR: DAC registers are not initialized
171
  *          - ERROR: DAC registers are not initialized
172
  */
172
  */
173
ErrorStatus LL_DAC_Init(DAC_TypeDef *DACx, uint32_t DAC_Channel, LL_DAC_InitTypeDef *DAC_InitStruct)
173
ErrorStatus LL_DAC_Init(DAC_TypeDef *DACx, uint32_t DAC_Channel, LL_DAC_InitTypeDef *DAC_InitStruct)
174
{
174
{
175
  ErrorStatus status = SUCCESS;
175
  ErrorStatus status = SUCCESS;
176
 
176
 
177
  /* Check the parameters */
177
  /* Check the parameters */
178
  assert_param(IS_DAC_ALL_INSTANCE(DACx));
178
  assert_param(IS_DAC_ALL_INSTANCE(DACx));
179
  assert_param(IS_LL_DAC_CHANNEL(DACx, DAC_Channel));
179
  assert_param(IS_LL_DAC_CHANNEL(DAC_Channel));
180
  assert_param(IS_LL_DAC_TRIGGER_SOURCE(DAC_InitStruct->TriggerSource));
180
  assert_param(IS_LL_DAC_TRIGGER_SOURCE(DAC_InitStruct->TriggerSource));
181
  assert_param(IS_LL_DAC_OUTPUT_BUFFER(DAC_InitStruct->OutputBuffer));
181
  assert_param(IS_LL_DAC_OUTPUT_BUFFER(DAC_InitStruct->OutputBuffer));
182
  assert_param(IS_LL_DAC_WAVE_AUTO_GENER_MODE(DAC_InitStruct->WaveAutoGeneration));
182
  assert_param(IS_LL_DAC_WAVE_AUTO_GENER_MODE(DAC_InitStruct->WaveAutoGeneration));
183
  if (DAC_InitStruct->WaveAutoGeneration != LL_DAC_WAVE_AUTO_GENERATION_NONE)
183
  if (DAC_InitStruct->WaveAutoGeneration != LL_DAC_WAVE_AUTO_GENERATION_NONE)
184
  {
184
  {
185
    assert_param(IS_LL_DAC_WAVE_AUTO_GENER_CONFIG(DAC_InitStruct->WaveAutoGenerationConfig));
185
    assert_param(IS_LL_DAC_WAVE_AUTO_GENER_CONFIG(DAC_InitStruct->WaveAutoGeneration,
-
 
186
                                                  DAC_InitStruct->WaveAutoGenerationConfig));
186
  }
187
  }
187
 
188
 
188
  /* Note: Hardware constraint (refer to description of this function)        */
189
  /* Note: Hardware constraint (refer to description of this function)        */
189
  /*       DAC instance must be disabled.                                     */
190
  /*       DAC instance must be disabled.                                     */
190
  if(LL_DAC_IsEnabled(DACx, DAC_Channel) == 0U)
191
  if (LL_DAC_IsEnabled(DACx, DAC_Channel) == 0U)
191
  {
192
  {
192
    /* Configuration of DAC channel:                                          */
193
    /* Configuration of DAC channel:                                          */
193
    /*  - TriggerSource                                                       */
194
    /*  - TriggerSource                                                       */
194
    /*  - WaveAutoGeneration                                                  */
195
    /*  - WaveAutoGeneration                                                  */
195
    /*  - OutputBuffer                                                        */
196
    /*  - OutputBuffer                                                        */
-
 
197
    /*  - OutputMode                                                          */
196
    if (DAC_InitStruct->WaveAutoGeneration != LL_DAC_WAVE_AUTO_GENERATION_NONE)
198
    if (DAC_InitStruct->WaveAutoGeneration != LL_DAC_WAVE_AUTO_GENERATION_NONE)
197
    {
199
    {
198
      MODIFY_REG(DACx->CR,
200
      MODIFY_REG(DACx->CR,
199
                 (  DAC_CR_TSEL1
201
                 (DAC_CR_TSEL1
200
                  | DAC_CR_WAVE1
202
                  | DAC_CR_WAVE1
201
                  | DAC_CR_MAMP1
203
                  | DAC_CR_MAMP1
202
                  | DAC_CR_BOFF1
204
                  | DAC_CR_BOFF1
203
                 ) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
205
                 ) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
204
                ,
206
                 ,
205
                 (  DAC_InitStruct->TriggerSource
207
                 (DAC_InitStruct->TriggerSource
206
                  | DAC_InitStruct->WaveAutoGeneration
208
                  | DAC_InitStruct->WaveAutoGeneration
207
                  | DAC_InitStruct->WaveAutoGenerationConfig
209
                  | DAC_InitStruct->WaveAutoGenerationConfig
208
                  | DAC_InitStruct->OutputBuffer
210
                  | DAC_InitStruct->OutputBuffer
209
                 ) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
211
                 ) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
210
                );
212
                );
211
    }
213
    }
212
    else
214
    else
213
    {
215
    {
214
      MODIFY_REG(DACx->CR,
216
      MODIFY_REG(DACx->CR,
215
                 (  DAC_CR_TSEL1
217
                 (DAC_CR_TSEL1
216
                  | DAC_CR_WAVE1
218
                  | DAC_CR_WAVE1
217
                  | DAC_CR_BOFF1
219
                  | DAC_CR_BOFF1
218
                 ) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
220
                 ) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
219
                ,
221
                 ,
220
                 (  DAC_InitStruct->TriggerSource
222
                 (DAC_InitStruct->TriggerSource
221
                  | LL_DAC_WAVE_AUTO_GENERATION_NONE
223
                  | LL_DAC_WAVE_AUTO_GENERATION_NONE
222
                  | DAC_InitStruct->OutputBuffer
224
                  | DAC_InitStruct->OutputBuffer
223
                 ) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
225
                 ) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
224
                );
226
                );
225
    }
227
    }