SPKT

Dependents:   WAV

Committer:
phungductung
Date:
Tue Jun 04 21:51:46 2019 +0000
Revision:
0:e87aa4c49e95
libray

Who changed what in which revision?

UserRevisionLine numberNew contents of line
phungductung 0:e87aa4c49e95 1 /**
phungductung 0:e87aa4c49e95 2 ******************************************************************************
phungductung 0:e87aa4c49e95 3 * @file stm32f7xx_hal_dac_ex.c
phungductung 0:e87aa4c49e95 4 * @author MCD Application Team
phungductung 0:e87aa4c49e95 5 * @version V1.0.4
phungductung 0:e87aa4c49e95 6 * @date 09-December-2015
phungductung 0:e87aa4c49e95 7 * @brief Extended DAC HAL module driver.
phungductung 0:e87aa4c49e95 8 * This file provides firmware functions to manage the following
phungductung 0:e87aa4c49e95 9 * functionalities of DAC extension peripheral:
phungductung 0:e87aa4c49e95 10 * + Extended features functions
phungductung 0:e87aa4c49e95 11 *
phungductung 0:e87aa4c49e95 12 *
phungductung 0:e87aa4c49e95 13 @verbatim
phungductung 0:e87aa4c49e95 14 ==============================================================================
phungductung 0:e87aa4c49e95 15 ##### How to use this driver #####
phungductung 0:e87aa4c49e95 16 ==============================================================================
phungductung 0:e87aa4c49e95 17 [..]
phungductung 0:e87aa4c49e95 18 (+) When Dual mode is enabled (i.e DAC Channel1 and Channel2 are used simultaneously) :
phungductung 0:e87aa4c49e95 19 Use HAL_DACEx_DualGetValue() to get digital data to be converted and use
phungductung 0:e87aa4c49e95 20 HAL_DACEx_DualSetValue() to set digital value to converted simultaneously in Channel 1 and Channel 2.
phungductung 0:e87aa4c49e95 21 (+) Use HAL_DACEx_TriangleWaveGenerate() to generate Triangle signal.
phungductung 0:e87aa4c49e95 22 (+) Use HAL_DACEx_NoiseWaveGenerate() to generate Noise signal.
phungductung 0:e87aa4c49e95 23
phungductung 0:e87aa4c49e95 24 @endverbatim
phungductung 0:e87aa4c49e95 25 ******************************************************************************
phungductung 0:e87aa4c49e95 26 * @attention
phungductung 0:e87aa4c49e95 27 *
phungductung 0:e87aa4c49e95 28 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
phungductung 0:e87aa4c49e95 29 *
phungductung 0:e87aa4c49e95 30 * Redistribution and use in source and binary forms, with or without modification,
phungductung 0:e87aa4c49e95 31 * are permitted provided that the following conditions are met:
phungductung 0:e87aa4c49e95 32 * 1. Redistributions of source code must retain the above copyright notice,
phungductung 0:e87aa4c49e95 33 * this list of conditions and the following disclaimer.
phungductung 0:e87aa4c49e95 34 * 2. Redistributions in binary form must reproduce the above copyright notice,
phungductung 0:e87aa4c49e95 35 * this list of conditions and the following disclaimer in the documentation
phungductung 0:e87aa4c49e95 36 * and/or other materials provided with the distribution.
phungductung 0:e87aa4c49e95 37 * 3. Neither the name of STMicroelectronics nor the names of its contributors
phungductung 0:e87aa4c49e95 38 * may be used to endorse or promote products derived from this software
phungductung 0:e87aa4c49e95 39 * without specific prior written permission.
phungductung 0:e87aa4c49e95 40 *
phungductung 0:e87aa4c49e95 41 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
phungductung 0:e87aa4c49e95 42 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
phungductung 0:e87aa4c49e95 43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
phungductung 0:e87aa4c49e95 44 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
phungductung 0:e87aa4c49e95 45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
phungductung 0:e87aa4c49e95 46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
phungductung 0:e87aa4c49e95 47 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
phungductung 0:e87aa4c49e95 48 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
phungductung 0:e87aa4c49e95 49 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
phungductung 0:e87aa4c49e95 50 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
phungductung 0:e87aa4c49e95 51 *
phungductung 0:e87aa4c49e95 52 ******************************************************************************
phungductung 0:e87aa4c49e95 53 */
phungductung 0:e87aa4c49e95 54
phungductung 0:e87aa4c49e95 55
phungductung 0:e87aa4c49e95 56 /* Includes ------------------------------------------------------------------*/
phungductung 0:e87aa4c49e95 57 #include "stm32f7xx_hal.h"
phungductung 0:e87aa4c49e95 58
phungductung 0:e87aa4c49e95 59 /** @addtogroup STM32F7xx_HAL_Driver
phungductung 0:e87aa4c49e95 60 * @{
phungductung 0:e87aa4c49e95 61 */
phungductung 0:e87aa4c49e95 62
phungductung 0:e87aa4c49e95 63 /** @defgroup DACEx DACEx
phungductung 0:e87aa4c49e95 64 * @brief DAC driver modules
phungductung 0:e87aa4c49e95 65 * @{
phungductung 0:e87aa4c49e95 66 */
phungductung 0:e87aa4c49e95 67
phungductung 0:e87aa4c49e95 68 #ifdef HAL_DAC_MODULE_ENABLED
phungductung 0:e87aa4c49e95 69
phungductung 0:e87aa4c49e95 70 /* Private typedef -----------------------------------------------------------*/
phungductung 0:e87aa4c49e95 71 /* Private define ------------------------------------------------------------*/
phungductung 0:e87aa4c49e95 72 /* Private macro -------------------------------------------------------------*/
phungductung 0:e87aa4c49e95 73 /* Private variables ---------------------------------------------------------*/
phungductung 0:e87aa4c49e95 74 /* Private function prototypes -----------------------------------------------*/
phungductung 0:e87aa4c49e95 75 /* Private functions ---------------------------------------------------------*/
phungductung 0:e87aa4c49e95 76 /* Exported functions --------------------------------------------------------*/
phungductung 0:e87aa4c49e95 77 /** @defgroup DACEx_Exported_Functions DAC Exported Functions
phungductung 0:e87aa4c49e95 78 * @{
phungductung 0:e87aa4c49e95 79 */
phungductung 0:e87aa4c49e95 80
phungductung 0:e87aa4c49e95 81 /** @defgroup DACEx_Exported_Functions_Group1 Extended features functions
phungductung 0:e87aa4c49e95 82 * @brief Extended features functions
phungductung 0:e87aa4c49e95 83 *
phungductung 0:e87aa4c49e95 84 @verbatim
phungductung 0:e87aa4c49e95 85 ==============================================================================
phungductung 0:e87aa4c49e95 86 ##### Extended features functions #####
phungductung 0:e87aa4c49e95 87 ==============================================================================
phungductung 0:e87aa4c49e95 88 [..] This section provides functions allowing to:
phungductung 0:e87aa4c49e95 89 (+) Start conversion.
phungductung 0:e87aa4c49e95 90 (+) Stop conversion.
phungductung 0:e87aa4c49e95 91 (+) Start conversion and enable DMA transfer.
phungductung 0:e87aa4c49e95 92 (+) Stop conversion and disable DMA transfer.
phungductung 0:e87aa4c49e95 93 (+) Get result of conversion.
phungductung 0:e87aa4c49e95 94 (+) Get result of dual mode conversion.
phungductung 0:e87aa4c49e95 95
phungductung 0:e87aa4c49e95 96 @endverbatim
phungductung 0:e87aa4c49e95 97 * @{
phungductung 0:e87aa4c49e95 98 */
phungductung 0:e87aa4c49e95 99
phungductung 0:e87aa4c49e95 100 /**
phungductung 0:e87aa4c49e95 101 * @brief Returns the last data output value of the selected DAC channel.
phungductung 0:e87aa4c49e95 102 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
phungductung 0:e87aa4c49e95 103 * the configuration information for the specified DAC.
phungductung 0:e87aa4c49e95 104 * @retval The selected DAC channel data output value.
phungductung 0:e87aa4c49e95 105 */
phungductung 0:e87aa4c49e95 106 uint32_t HAL_DACEx_DualGetValue(DAC_HandleTypeDef* hdac)
phungductung 0:e87aa4c49e95 107 {
phungductung 0:e87aa4c49e95 108 uint32_t tmp = 0;
phungductung 0:e87aa4c49e95 109
phungductung 0:e87aa4c49e95 110 tmp |= hdac->Instance->DOR1;
phungductung 0:e87aa4c49e95 111
phungductung 0:e87aa4c49e95 112 tmp |= hdac->Instance->DOR2 << 16;
phungductung 0:e87aa4c49e95 113
phungductung 0:e87aa4c49e95 114 /* Returns the DAC channel data output register value */
phungductung 0:e87aa4c49e95 115 return tmp;
phungductung 0:e87aa4c49e95 116 }
phungductung 0:e87aa4c49e95 117
phungductung 0:e87aa4c49e95 118 /**
phungductung 0:e87aa4c49e95 119 * @brief Enables or disables the selected DAC channel wave generation.
phungductung 0:e87aa4c49e95 120 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
phungductung 0:e87aa4c49e95 121 * the configuration information for the specified DAC.
phungductung 0:e87aa4c49e95 122 * @param Channel: The selected DAC channel.
phungductung 0:e87aa4c49e95 123 * This parameter can be one of the following values:
phungductung 0:e87aa4c49e95 124 * @arg DAC_CHANNEL_1: DAC Channel1 selected
phungductung 0:e87aa4c49e95 125 * @arg DAC_CHANNEL_2: DAC Channel2 selected
phungductung 0:e87aa4c49e95 126 * @param Amplitude: Select max triangle amplitude.
phungductung 0:e87aa4c49e95 127 * This parameter can be one of the following values:
phungductung 0:e87aa4c49e95 128 * @arg DAC_TRIANGLEAMPLITUDE_1: Select max triangle amplitude of 1
phungductung 0:e87aa4c49e95 129 * @arg DAC_TRIANGLEAMPLITUDE_3: Select max triangle amplitude of 3
phungductung 0:e87aa4c49e95 130 * @arg DAC_TRIANGLEAMPLITUDE_7: Select max triangle amplitude of 7
phungductung 0:e87aa4c49e95 131 * @arg DAC_TRIANGLEAMPLITUDE_15: Select max triangle amplitude of 15
phungductung 0:e87aa4c49e95 132 * @arg DAC_TRIANGLEAMPLITUDE_31: Select max triangle amplitude of 31
phungductung 0:e87aa4c49e95 133 * @arg DAC_TRIANGLEAMPLITUDE_63: Select max triangle amplitude of 63
phungductung 0:e87aa4c49e95 134 * @arg DAC_TRIANGLEAMPLITUDE_127: Select max triangle amplitude of 127
phungductung 0:e87aa4c49e95 135 * @arg DAC_TRIANGLEAMPLITUDE_255: Select max triangle amplitude of 255
phungductung 0:e87aa4c49e95 136 * @arg DAC_TRIANGLEAMPLITUDE_511: Select max triangle amplitude of 511
phungductung 0:e87aa4c49e95 137 * @arg DAC_TRIANGLEAMPLITUDE_1023: Select max triangle amplitude of 1023
phungductung 0:e87aa4c49e95 138 * @arg DAC_TRIANGLEAMPLITUDE_2047: Select max triangle amplitude of 2047
phungductung 0:e87aa4c49e95 139 * @arg DAC_TRIANGLEAMPLITUDE_4095: Select max triangle amplitude of 4095
phungductung 0:e87aa4c49e95 140 * @retval HAL status
phungductung 0:e87aa4c49e95 141 */
phungductung 0:e87aa4c49e95 142 HAL_StatusTypeDef HAL_DACEx_TriangleWaveGenerate(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Amplitude)
phungductung 0:e87aa4c49e95 143 {
phungductung 0:e87aa4c49e95 144 /* Check the parameters */
phungductung 0:e87aa4c49e95 145 assert_param(IS_DAC_CHANNEL(Channel));
phungductung 0:e87aa4c49e95 146 assert_param(IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(Amplitude));
phungductung 0:e87aa4c49e95 147
phungductung 0:e87aa4c49e95 148 /* Process locked */
phungductung 0:e87aa4c49e95 149 __HAL_LOCK(hdac);
phungductung 0:e87aa4c49e95 150
phungductung 0:e87aa4c49e95 151 /* Change DAC state */
phungductung 0:e87aa4c49e95 152 hdac->State = HAL_DAC_STATE_BUSY;
phungductung 0:e87aa4c49e95 153
phungductung 0:e87aa4c49e95 154 /* Enable the selected wave generation for the selected DAC channel */
phungductung 0:e87aa4c49e95 155 MODIFY_REG(hdac->Instance->CR, (DAC_CR_WAVE1 | DAC_CR_MAMP1) << Channel, (DAC_CR_WAVE1_1 | Amplitude) << Channel);
phungductung 0:e87aa4c49e95 156
phungductung 0:e87aa4c49e95 157 /* Change DAC state */
phungductung 0:e87aa4c49e95 158 hdac->State = HAL_DAC_STATE_READY;
phungductung 0:e87aa4c49e95 159
phungductung 0:e87aa4c49e95 160 /* Process unlocked */
phungductung 0:e87aa4c49e95 161 __HAL_UNLOCK(hdac);
phungductung 0:e87aa4c49e95 162
phungductung 0:e87aa4c49e95 163 /* Return function status */
phungductung 0:e87aa4c49e95 164 return HAL_OK;
phungductung 0:e87aa4c49e95 165 }
phungductung 0:e87aa4c49e95 166
phungductung 0:e87aa4c49e95 167 /**
phungductung 0:e87aa4c49e95 168 * @brief Enables or disables the selected DAC channel wave generation.
phungductung 0:e87aa4c49e95 169 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
phungductung 0:e87aa4c49e95 170 * the configuration information for the specified DAC.
phungductung 0:e87aa4c49e95 171 * @param Channel: The selected DAC channel.
phungductung 0:e87aa4c49e95 172 * This parameter can be one of the following values:
phungductung 0:e87aa4c49e95 173 * @arg DAC_CHANNEL_1: DAC Channel1 selected
phungductung 0:e87aa4c49e95 174 * @arg DAC_CHANNEL_2: DAC Channel2 selected
phungductung 0:e87aa4c49e95 175 * @param Amplitude: Unmask DAC channel LFSR for noise wave generation.
phungductung 0:e87aa4c49e95 176 * This parameter can be one of the following values:
phungductung 0:e87aa4c49e95 177 * @arg DAC_LFSRUNMASK_BIT0: Unmask DAC channel LFSR bit0 for noise wave generation
phungductung 0:e87aa4c49e95 178 * @arg DAC_LFSRUNMASK_BITS1_0: Unmask DAC channel LFSR bit[1:0] for noise wave generation
phungductung 0:e87aa4c49e95 179 * @arg DAC_LFSRUNMASK_BITS2_0: Unmask DAC channel LFSR bit[2:0] for noise wave generation
phungductung 0:e87aa4c49e95 180 * @arg DAC_LFSRUNMASK_BITS3_0: Unmask DAC channel LFSR bit[3:0] for noise wave generation
phungductung 0:e87aa4c49e95 181 * @arg DAC_LFSRUNMASK_BITS4_0: Unmask DAC channel LFSR bit[4:0] for noise wave generation
phungductung 0:e87aa4c49e95 182 * @arg DAC_LFSRUNMASK_BITS5_0: Unmask DAC channel LFSR bit[5:0] for noise wave generation
phungductung 0:e87aa4c49e95 183 * @arg DAC_LFSRUNMASK_BITS6_0: Unmask DAC channel LFSR bit[6:0] for noise wave generation
phungductung 0:e87aa4c49e95 184 * @arg DAC_LFSRUNMASK_BITS7_0: Unmask DAC channel LFSR bit[7:0] for noise wave generation
phungductung 0:e87aa4c49e95 185 * @arg DAC_LFSRUNMASK_BITS8_0: Unmask DAC channel LFSR bit[8:0] for noise wave generation
phungductung 0:e87aa4c49e95 186 * @arg DAC_LFSRUNMASK_BITS9_0: Unmask DAC channel LFSR bit[9:0] for noise wave generation
phungductung 0:e87aa4c49e95 187 * @arg DAC_LFSRUNMASK_BITS10_0: Unmask DAC channel LFSR bit[10:0] for noise wave generation
phungductung 0:e87aa4c49e95 188 * @arg DAC_LFSRUNMASK_BITS11_0: Unmask DAC channel LFSR bit[11:0] for noise wave generation
phungductung 0:e87aa4c49e95 189 * @retval HAL status
phungductung 0:e87aa4c49e95 190 */
phungductung 0:e87aa4c49e95 191 HAL_StatusTypeDef HAL_DACEx_NoiseWaveGenerate(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Amplitude)
phungductung 0:e87aa4c49e95 192 {
phungductung 0:e87aa4c49e95 193 /* Check the parameters */
phungductung 0:e87aa4c49e95 194 assert_param(IS_DAC_CHANNEL(Channel));
phungductung 0:e87aa4c49e95 195 assert_param(IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(Amplitude));
phungductung 0:e87aa4c49e95 196
phungductung 0:e87aa4c49e95 197 /* Process locked */
phungductung 0:e87aa4c49e95 198 __HAL_LOCK(hdac);
phungductung 0:e87aa4c49e95 199
phungductung 0:e87aa4c49e95 200 /* Change DAC state */
phungductung 0:e87aa4c49e95 201 hdac->State = HAL_DAC_STATE_BUSY;
phungductung 0:e87aa4c49e95 202
phungductung 0:e87aa4c49e95 203 /* Enable the selected wave generation for the selected DAC channel */
phungductung 0:e87aa4c49e95 204 MODIFY_REG(hdac->Instance->CR, (DAC_CR_WAVE1 | DAC_CR_MAMP1) << Channel, (DAC_CR_WAVE1_0 | Amplitude) << Channel);
phungductung 0:e87aa4c49e95 205
phungductung 0:e87aa4c49e95 206 /* Change DAC state */
phungductung 0:e87aa4c49e95 207 hdac->State = HAL_DAC_STATE_READY;
phungductung 0:e87aa4c49e95 208
phungductung 0:e87aa4c49e95 209 /* Process unlocked */
phungductung 0:e87aa4c49e95 210 __HAL_UNLOCK(hdac);
phungductung 0:e87aa4c49e95 211
phungductung 0:e87aa4c49e95 212 /* Return function status */
phungductung 0:e87aa4c49e95 213 return HAL_OK;
phungductung 0:e87aa4c49e95 214 }
phungductung 0:e87aa4c49e95 215
phungductung 0:e87aa4c49e95 216 /**
phungductung 0:e87aa4c49e95 217 * @brief Set the specified data holding register value for dual DAC channel.
phungductung 0:e87aa4c49e95 218 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
phungductung 0:e87aa4c49e95 219 * the configuration information for the specified DAC.
phungductung 0:e87aa4c49e95 220 * @param Alignment: Specifies the data alignment for dual channel DAC.
phungductung 0:e87aa4c49e95 221 * This parameter can be one of the following values:
phungductung 0:e87aa4c49e95 222 * DAC_ALIGN_8B_R: 8bit right data alignment selected
phungductung 0:e87aa4c49e95 223 * DAC_ALIGN_12B_L: 12bit left data alignment selected
phungductung 0:e87aa4c49e95 224 * DAC_ALIGN_12B_R: 12bit right data alignment selected
phungductung 0:e87aa4c49e95 225 * @param Data1: Data for DAC Channel2 to be loaded in the selected data holding register.
phungductung 0:e87aa4c49e95 226 * @param Data2: Data for DAC Channel1 to be loaded in the selected data holding register.
phungductung 0:e87aa4c49e95 227 * @note In dual mode, a unique register access is required to write in both
phungductung 0:e87aa4c49e95 228 * DAC channels at the same time.
phungductung 0:e87aa4c49e95 229 * @retval HAL status
phungductung 0:e87aa4c49e95 230 */
phungductung 0:e87aa4c49e95 231 HAL_StatusTypeDef HAL_DACEx_DualSetValue(DAC_HandleTypeDef* hdac, uint32_t Alignment, uint32_t Data1, uint32_t Data2)
phungductung 0:e87aa4c49e95 232 {
phungductung 0:e87aa4c49e95 233 uint32_t data = 0, tmp = 0;
phungductung 0:e87aa4c49e95 234
phungductung 0:e87aa4c49e95 235 /* Check the parameters */
phungductung 0:e87aa4c49e95 236 assert_param(IS_DAC_ALIGN(Alignment));
phungductung 0:e87aa4c49e95 237 assert_param(IS_DAC_DATA(Data1));
phungductung 0:e87aa4c49e95 238 assert_param(IS_DAC_DATA(Data2));
phungductung 0:e87aa4c49e95 239
phungductung 0:e87aa4c49e95 240 /* Calculate and set dual DAC data holding register value */
phungductung 0:e87aa4c49e95 241 if (Alignment == DAC_ALIGN_8B_R)
phungductung 0:e87aa4c49e95 242 {
phungductung 0:e87aa4c49e95 243 data = ((uint32_t)Data2 << 8) | Data1;
phungductung 0:e87aa4c49e95 244 }
phungductung 0:e87aa4c49e95 245 else
phungductung 0:e87aa4c49e95 246 {
phungductung 0:e87aa4c49e95 247 data = ((uint32_t)Data2 << 16) | Data1;
phungductung 0:e87aa4c49e95 248 }
phungductung 0:e87aa4c49e95 249
phungductung 0:e87aa4c49e95 250 tmp = (uint32_t)hdac->Instance;
phungductung 0:e87aa4c49e95 251 tmp += DAC_DHR12RD_ALIGNMENT(Alignment);
phungductung 0:e87aa4c49e95 252
phungductung 0:e87aa4c49e95 253 /* Set the dual DAC selected data holding register */
phungductung 0:e87aa4c49e95 254 *(__IO uint32_t *)tmp = data;
phungductung 0:e87aa4c49e95 255
phungductung 0:e87aa4c49e95 256 /* Return function status */
phungductung 0:e87aa4c49e95 257 return HAL_OK;
phungductung 0:e87aa4c49e95 258 }
phungductung 0:e87aa4c49e95 259
phungductung 0:e87aa4c49e95 260 /**
phungductung 0:e87aa4c49e95 261 * @}
phungductung 0:e87aa4c49e95 262 */
phungductung 0:e87aa4c49e95 263
phungductung 0:e87aa4c49e95 264 /**
phungductung 0:e87aa4c49e95 265 * @brief Conversion complete callback in non blocking mode for Channel2
phungductung 0:e87aa4c49e95 266 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
phungductung 0:e87aa4c49e95 267 * the configuration information for the specified DAC.
phungductung 0:e87aa4c49e95 268 * @retval None
phungductung 0:e87aa4c49e95 269 */
phungductung 0:e87aa4c49e95 270 __weak void HAL_DACEx_ConvCpltCallbackCh2(DAC_HandleTypeDef* hdac)
phungductung 0:e87aa4c49e95 271 {
phungductung 0:e87aa4c49e95 272 /* Prevent unused argument(s) compilation warning */
phungductung 0:e87aa4c49e95 273 UNUSED(hdac);
phungductung 0:e87aa4c49e95 274
phungductung 0:e87aa4c49e95 275 /* NOTE : This function Should not be modified, when the callback is needed,
phungductung 0:e87aa4c49e95 276 the HAL_DAC_ConvCpltCallbackCh2 could be implemented in the user file
phungductung 0:e87aa4c49e95 277 */
phungductung 0:e87aa4c49e95 278 }
phungductung 0:e87aa4c49e95 279
phungductung 0:e87aa4c49e95 280 /**
phungductung 0:e87aa4c49e95 281 * @brief Conversion half DMA transfer callback in non blocking mode for Channel2
phungductung 0:e87aa4c49e95 282 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
phungductung 0:e87aa4c49e95 283 * the configuration information for the specified DAC.
phungductung 0:e87aa4c49e95 284 * @retval None
phungductung 0:e87aa4c49e95 285 */
phungductung 0:e87aa4c49e95 286 __weak void HAL_DACEx_ConvHalfCpltCallbackCh2(DAC_HandleTypeDef* hdac)
phungductung 0:e87aa4c49e95 287 {
phungductung 0:e87aa4c49e95 288 /* Prevent unused argument(s) compilation warning */
phungductung 0:e87aa4c49e95 289 UNUSED(hdac);
phungductung 0:e87aa4c49e95 290
phungductung 0:e87aa4c49e95 291 /* NOTE : This function Should not be modified, when the callback is needed,
phungductung 0:e87aa4c49e95 292 the HAL_DACEx_ConvHalfCpltCallbackCh2 could be implemented in the user file
phungductung 0:e87aa4c49e95 293 */
phungductung 0:e87aa4c49e95 294 }
phungductung 0:e87aa4c49e95 295
phungductung 0:e87aa4c49e95 296 /**
phungductung 0:e87aa4c49e95 297 * @brief Error DAC callback for Channel2.
phungductung 0:e87aa4c49e95 298 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
phungductung 0:e87aa4c49e95 299 * the configuration information for the specified DAC.
phungductung 0:e87aa4c49e95 300 * @retval None
phungductung 0:e87aa4c49e95 301 */
phungductung 0:e87aa4c49e95 302 __weak void HAL_DACEx_ErrorCallbackCh2(DAC_HandleTypeDef *hdac)
phungductung 0:e87aa4c49e95 303 {
phungductung 0:e87aa4c49e95 304 /* Prevent unused argument(s) compilation warning */
phungductung 0:e87aa4c49e95 305 UNUSED(hdac);
phungductung 0:e87aa4c49e95 306
phungductung 0:e87aa4c49e95 307 /* NOTE : This function Should not be modified, when the callback is needed,
phungductung 0:e87aa4c49e95 308 the HAL_DACEx_ErrorCallbackCh2 could be implemented in the user file
phungductung 0:e87aa4c49e95 309 */
phungductung 0:e87aa4c49e95 310 }
phungductung 0:e87aa4c49e95 311
phungductung 0:e87aa4c49e95 312 /**
phungductung 0:e87aa4c49e95 313 * @brief DMA underrun DAC callback for channel2.
phungductung 0:e87aa4c49e95 314 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
phungductung 0:e87aa4c49e95 315 * the configuration information for the specified DAC.
phungductung 0:e87aa4c49e95 316 * @retval None
phungductung 0:e87aa4c49e95 317 */
phungductung 0:e87aa4c49e95 318 __weak void HAL_DACEx_DMAUnderrunCallbackCh2(DAC_HandleTypeDef *hdac)
phungductung 0:e87aa4c49e95 319 {
phungductung 0:e87aa4c49e95 320 /* Prevent unused argument(s) compilation warning */
phungductung 0:e87aa4c49e95 321 UNUSED(hdac);
phungductung 0:e87aa4c49e95 322
phungductung 0:e87aa4c49e95 323 /* NOTE : This function Should not be modified, when the callback is needed,
phungductung 0:e87aa4c49e95 324 the HAL_DACEx_DMAUnderrunCallbackCh2 could be implemented in the user file
phungductung 0:e87aa4c49e95 325 */
phungductung 0:e87aa4c49e95 326 }
phungductung 0:e87aa4c49e95 327
phungductung 0:e87aa4c49e95 328 /**
phungductung 0:e87aa4c49e95 329 * @brief DMA conversion complete callback.
phungductung 0:e87aa4c49e95 330 * @param hdma: pointer to a DMA_HandleTypeDef structure that contains
phungductung 0:e87aa4c49e95 331 * the configuration information for the specified DMA module.
phungductung 0:e87aa4c49e95 332 * @retval None
phungductung 0:e87aa4c49e95 333 */
phungductung 0:e87aa4c49e95 334 void DAC_DMAConvCpltCh2(DMA_HandleTypeDef *hdma)
phungductung 0:e87aa4c49e95 335 {
phungductung 0:e87aa4c49e95 336 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
phungductung 0:e87aa4c49e95 337
phungductung 0:e87aa4c49e95 338 HAL_DACEx_ConvCpltCallbackCh2(hdac);
phungductung 0:e87aa4c49e95 339
phungductung 0:e87aa4c49e95 340 hdac->State= HAL_DAC_STATE_READY;
phungductung 0:e87aa4c49e95 341 }
phungductung 0:e87aa4c49e95 342
phungductung 0:e87aa4c49e95 343 /**
phungductung 0:e87aa4c49e95 344 * @brief DMA half transfer complete callback.
phungductung 0:e87aa4c49e95 345 * @param hdma: pointer to a DMA_HandleTypeDef structure that contains
phungductung 0:e87aa4c49e95 346 * the configuration information for the specified DMA module.
phungductung 0:e87aa4c49e95 347 * @retval None
phungductung 0:e87aa4c49e95 348 */
phungductung 0:e87aa4c49e95 349 void DAC_DMAHalfConvCpltCh2(DMA_HandleTypeDef *hdma)
phungductung 0:e87aa4c49e95 350 {
phungductung 0:e87aa4c49e95 351 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
phungductung 0:e87aa4c49e95 352 /* Conversion complete callback */
phungductung 0:e87aa4c49e95 353 HAL_DACEx_ConvHalfCpltCallbackCh2(hdac);
phungductung 0:e87aa4c49e95 354 }
phungductung 0:e87aa4c49e95 355
phungductung 0:e87aa4c49e95 356 /**
phungductung 0:e87aa4c49e95 357 * @brief DMA error callback
phungductung 0:e87aa4c49e95 358 * @param hdma: pointer to a DMA_HandleTypeDef structure that contains
phungductung 0:e87aa4c49e95 359 * the configuration information for the specified DMA module.
phungductung 0:e87aa4c49e95 360 * @retval None
phungductung 0:e87aa4c49e95 361 */
phungductung 0:e87aa4c49e95 362 void DAC_DMAErrorCh2(DMA_HandleTypeDef *hdma)
phungductung 0:e87aa4c49e95 363 {
phungductung 0:e87aa4c49e95 364 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
phungductung 0:e87aa4c49e95 365
phungductung 0:e87aa4c49e95 366 /* Set DAC error code to DMA error */
phungductung 0:e87aa4c49e95 367 hdac->ErrorCode |= HAL_DAC_ERROR_DMA;
phungductung 0:e87aa4c49e95 368
phungductung 0:e87aa4c49e95 369 HAL_DACEx_ErrorCallbackCh2(hdac);
phungductung 0:e87aa4c49e95 370
phungductung 0:e87aa4c49e95 371 hdac->State= HAL_DAC_STATE_READY;
phungductung 0:e87aa4c49e95 372 }
phungductung 0:e87aa4c49e95 373
phungductung 0:e87aa4c49e95 374 /**
phungductung 0:e87aa4c49e95 375 * @}
phungductung 0:e87aa4c49e95 376 */
phungductung 0:e87aa4c49e95 377
phungductung 0:e87aa4c49e95 378 #endif /* HAL_DAC_MODULE_ENABLED */
phungductung 0:e87aa4c49e95 379
phungductung 0:e87aa4c49e95 380 /**
phungductung 0:e87aa4c49e95 381 * @}
phungductung 0:e87aa4c49e95 382 */
phungductung 0:e87aa4c49e95 383
phungductung 0:e87aa4c49e95 384 /**
phungductung 0:e87aa4c49e95 385 * @}
phungductung 0:e87aa4c49e95 386 */
phungductung 0:e87aa4c49e95 387
phungductung 0:e87aa4c49e95 388 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/